• User Newbie

    [mySQL] Struttura catalogo prodotti

    Salve a tutti. Ho cercato sul web e sul forum, ma non ho trovato nulla! Espongo subito il mio problema. Praticamente devo realizzare un catalogo prodotti per un sito ecommerce, solo che ho qualche difficoltà a strutturare il database. Riducendo tutto all'osso, date queste due tabelle (categorie e prodotti) avrei pensato di strutturarle cosi:

    TABELLA CATEGORIE

    
    ID    ParentID    NomeCategoria
    1     0           Film
    2     0           Fotografia
    3     2           Compatte
    4     2           Reflex
    5     4           Entry Level
    6     4           Professionali
    7     0           Informatica
    8     2           Accessori
    9     1           Comico
    
    

    TABELLA PRODOTTI

    
    ID    CatRiferimento     NomeProdotto    VariCampiInComune (Prezzi, Date, Descrizione Testuale...)
    1     2,4,6              Nikon D3        ........
    2     2,4,5              Nikon D90       ........
    3     2,8                Custodia xy     ........
    4     1,9                Fantozzi xy     ........
    
    

    Il problema ora stà nelle caratteristiche "peculiari" dei singoli prodotti. E' evidente che le caratteristiche di una reflex sono diverse da quelle di una custodia Vorrei quindi evitare di creare una "super tabella prodotti" estesa in orizzontale con molte colonne quindi. Come posso fare? Non sò se mi sono ben spiegato. Ad esempio un film avrà come dato le lingue, la durata... una reflex la risoluzione, memorie supportate, sensore... una custodia la capienza, i modelli compatibili... etc etc... come posso fare per ottimizzare il tutto??

    Pensandoci un pò su (ma non sò se sia la soluzione più semplice o che problemi possa dare!) mi è venuto in mente di creare un'altra tabella (sempre ridotta all'osso) di questo tipo

    
    ID   Valore
    1    Pelle                              
    2    Plastica
    3    Sensore CMOS
    4    Audio 5.1
    5    Audio 2.1
    
    

    e nella tabella dei prodotti aggiungere un campo dove richiamare questi valori... dite che potrebbe andare?? Grazie a tutti per la pazienza :ciauz:


  • User Attivo

    Se non deve essere fatta una ricerca discriminante sui valori dell'oggetto, ad esempio "mostra tutte le fotocamere con sensore cmos 12 mpx" puoi salvare tutte le informazioni in un array e poi utilizzando serialize(); generi una stringa di valori da inserire in un campo TEXT del db.


  • User Newbie

    Ciao grazie per la risposta... purtroppo devo creare dei filtri per raffinare le ricerche, quindi non è possibile utilizzare il tuo metodo. Cosa ne pensi di quello che avevo scritto in fondo al mex precedente? Dici che potrebbe darmi qualche problema?? Grazie ancora!


  • User Attivo

    Secondo me, la tua soluzione, sembra una versione estesa di quello che ti ho proposto io.
    Nei valori del prodotto dovrai mettere un campo che contiene tutti i riferimenti agli ID delle caratteristiche, mentre io proponevo di inserire direttamente il valore debitamente codificato.
    I pro del tuo metodo è il fatto che dovresti riuscire ad eseguire delle query di ricerca.
    Un'alternativa è quella di creare tabelle specifiche per i diversi prodotti.


  • User Attivo

    Secondo me, la tua soluzione, sembra una versione estesa di quello che ti ho proposto io.
    Nei valori del prodotto dovrai mettere un campo che contiene tutti i riferimenti agli ID delle caratteristiche, mentre io proponevo di inserire direttamente il valore debitamente codificato.
    I pro del tuo metodo è il fatto che dovresti riuscire ad eseguire delle query di ricerca.
    Un'alternativa è quella di creare tabelle specifiche per i diversi prodotti.