• User Attivo

    Come Organizzare questo DB...

    Salve bella gente!

    augurandovi una buona domenica, vi chiedo un consiglio per un db che a mio avviso non è semplicissimo:

    il sito è un e-commerce che vende svariati prodotti molto differenti tra loro:
    ESEMPIO: Auto, Moto, Prodotti per la Pulizia

    Sempre per esempio, indico le caratteristiche fondamentali (inventate) che a me interessano e le informazioni "descrittive" devono essere tradotte in 4lingue diverse:
    AUTO: marca, modello, cilindrata, n° porte, colore, consumo, descrizione
    MOTO: marca, modello, cilindrata, colore, consumo, descrizione
    PRODOTTI: nome, contenuto, descrizione

    ok...devo organizzare il database per inserire tutti questi valori: mi sono venute in mente diversi modi di organizzare questo db:
    1- Creazione tabella unica con inserite tutti campi. Ex: marca/nome, modello, cilindrata, porte, colore, consumo, contenuto, descrizione. La tabella è molto poco ottimizzata e ci sarebbero tantissimi campi vuoti, quindi idea scartata...
    2- Creare 3 tabelle diverse, una per ogni tipologia di prodotto. il problema è a questo punto la traduzione.. cosa devo mettere per esempio nella tabella che descrive i prodotti? ID, Nome, Conteunto, DescrizioneIT, DescrizioneFR, DescrizioneDE, DescrizioneENG... la cosa non mi sembra delle migliori anche se comunque fattibile...
    3- creare 4 db diversi, uno per ogni lingua, e all'interno inserire tutti i dati tradotti nella lingua specifica...il problema sarà poi di rindondanza dei dati, nel caso vada a modificare un campo lo devo modificare per ben 4 volte...
    4- creare 5 db diversi, uno per ogni lingua, e uno specifico per i dati generali non traducibili (come cilindrata, modello, marca, ecc..) e inserire negli altri 4 db tutti i dati traducibili...

    quali di queste o altre idee sono preferibili? il problema non è tanto nella traduzione, ma nel fatto che i dati inseriti sono diversi per ogni categoria di prodotto (auto, moto, prodotti pulizia)... magari mi sto complicando la vita per nulla, ma non riesco a vedere la luce... o sarà la domenica???? :-))

    Ciao!


  • User

    Biosgnerebbe prima avere le idee chiare sul tipo di campi da creare per ogni tabella, in modo da vedere cosa può essere omesso, cosa può essere incluso in una tabella o relazionato in un altro.

    Un consiglio è di evitare di creare le tabelle in database diversi. A livello di connessioni ai database nella parte di scripting sarebbe un po scomodo oltre che penalizzante. Piuttosto crea più tabelle relazionate, ma nello stesso database se ti è possibile. Valuta te dopo fino a che punto ti conviene normalizzare le tabelle (vedi anche Normalizzazione_del_database ).


  • User Attivo

    il problema è proprio questo... ci sono pochissimi campi in comune, oltre a quello descrittivo... ed inoltre c'è la difficoltà aggiuntiva delle lingue diverse... se fosse una sola lingua la cosa non la vedo complicata, ma ne ho 4 (inizialmente)...quindi... secondo me la migliore è la creazione di 1 db per ogni lingua, così una volta selezionata la lingua (presumibilmente, un italiano non guarda una pagina in italiano, una in tedesco, una in francesce, una in inglese..., o almeno io non faccio così 🙂 rimango all'interno di quel determinato db, mentre per i dati specifici non traducibili (modello, prezzo, marca, ecc..) un'altro... così evito in caso di modifica dati non traducibili, di toccare tutti e quattro i db, mentre nelle descrizioni, dovrei comunque entrare nella lingua e quindi non ci sarebbero problemi...

    o sbaglio?


  • User

    Per il discorso dei database diversi intendevo dire che potresti fare le varie tabelle delle lingue in un unico database senza crearne di diversi. Attenzione a non fare confusione tra database e tabella. Poi controllando la provenienza dell'utente è ovvio che le variabili dell'ecommerce verranno caricate con i valori contenuti nella tabella della lingua opportuna, ma il database sarà lo stesso per tutte le lingue.

    Per quanto riguarda la struttura e le relazioni, decidi con calma come vuoi strutturare il sito e di conseguenza il database. Se l'hai già deciso, magari posta qui un elenco dei campi delle tabelle e proviamo a trovare una soluzione vantaggiosa su come strutturarlo.


  • User Attivo

    Ciao...grazie per la segnalazione...ieri una lapadina si è accesa e sono riuscito (magari è na cavolata, ma per moi è l'acqua tiepidina) a creare un db unico con tante tabelle...appena sistemo il tutto posto..naturalmente altre idee sono ben accette...


  • User Attivo

    allora...ho provato a pensare un po di strutture, ma ognuna ha i suoi pro e contro...

    quella che attualmente mi convince di più è così formata:

    1. creo una tabella in cui vi è l'elenco completo di tutti i prodotti, con le informazioni principali.
    2. in questa tabella PRODOTTI inserisco tanti campi quanti sono le categorie e sottocategorie, in modo da effettuare ricerche mirate molto veloci
    3. Creo una tabella per ogni CATEGORIA di prodotti, contente i campi specifici per quella particolare tipologia di prodotto, tranne tutte le informaizoni che sono traducibili in più lingue (quindi inserirò Anno, ma non Descrizione)
    4. Creo tante tabelle quante sono le informaizoni che devono essere tradotte, ed all'interno, attraverso 2 ID, indenfrifico il prodotto e la lingua...

    in riassunto, indico qui un fax simile della struttura, per rendere chiara un po di più la situazione...

    
    PRODOTTO
    (IDProdotto, Attivo, Nome, Categoria, Prezzo) 'Solo informazioni generali specifiche che tutti i prodotti hanno'
    
    AUTO
    (ID, CodProdotto, Anno, Marca,....) 'Tutte le informaizoni relative a questo specifico prodotto...'
    
    DESCRIZIONE
    (ID, CodProdotto, CodLingua, Descrizione) ' Inserisco una riga per ogni lingua con la descrizione tradotta, il CodProdotto rimane invariato (per quel prodotto, naturalmente) mentre varia CodLingua (ad esempio 1=it, 2=eng, 3=fr, 4=de, ec...)
    
    
    

    In questo modo, quando faccio una query di selezione su un prodotto, prendo il cod prodotto, lo cerco in Auto e poi per la descrizione, riprendo il codice lingua (ad esempio memorizzato in una sessione) ed estraggo solo quello della lingua specifica...

    Cosa vi sembra? più un bordello che altro?

    fatemi sapere...
    ciao!