Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072

    Suggerimento per struttura DB

    Ciao a tutti, vorrei un consiglio su come strutturare al meglio una tabella prodotti

    supponendo di avere una struttura

    serie-modello

    dove modello è la tabella che contiene tutte le caratteristiche del prodotto

    ogni serie ha ovviamente diverse caratteristiche

    è corretto creare in un'unica tabella "modelli" tutte le caratteristiche?

    come poi discriminerò il fatto che ogni serie ha le proprie caratteristiche (quindi i propri campi da visualizzare)?

    Grazie

  2. #2
    Quote Originariamente inviata da Valeria75_bis Visualizza il messaggio
    Ciao a tutti, vorrei un consiglio su come strutturare al meglio una tabella prodotti

    supponendo di avere una struttura

    serie-modello

    dove modello è la tabella che contiene tutte le caratteristiche del prodotto

    ogni serie ha ovviamente diverse caratteristiche

    è corretto creare in un'unica tabella "modelli" tutte le caratteristiche?

    come poi discriminerò il fatto che ogni serie ha le proprie caratteristiche (quindi i propri campi da visualizzare)?

    Grazie

    ad occhio mi sembra una relazione n:n quindi hai bisogno anche di una terza entita...
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Perché N:N?

    La tabella modelli ha molti campi (che variano per ogni Serie)

    Ho una tabella Serie con tutte le serie possibili
    Un tabella Modelli con tutti i modelli (con campi: l'id_Serie ed i vari campi)

    Il problema è che tra questi campi, alcuni sono specifici per alcuni modelli (in quanto specifiche Serie hanno determinati campi)

    Esempio

    Serie: frutta
    Serie: abbigliamento

    Nella tabella Modelli avrei
    Pesca, Pera, Cappello, Maglione

    e tra i campi della tabella Modelli avrei
    Peso
    Tessuto
    Taglia
    Data raccolta

    come vedi alcuni campi sono legati solo ad una specifica Serie, mi chiedevo come questore questo aspetto

    il fatto che alcuni campi devono essere visualizzati/gestiti per solo per specifici Modelli/Serie

  4. #4
    perché chiami "modello" la tabella della caratteristiche?

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    La chiamo Modello perché nel naming indicato ho Serie e Modelli

  6. #6
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Non si mischiano le pere con le mele ... e in questo caso direi non si mischiano le pere con i pantaloni.

    Se hai prodotti di tipologie così diverse dovrai avere anche tabelle diverse quindi qualcosa del tipo:

    modelli_alimentari
    idProdotto | Peso | Scadenza | ecc...

    modelli_abbigliamento
    idProdotto | tessuto | colore | taglia | ecc..
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Quote Originariamente inviata da las Visualizza il messaggio
    Non si mischiano le pere con le mele ... e in questo caso direi non si mischiano le pere con i pantaloni.

    Se hai prodotti di tipologie così diverse dovrai avere anche tabelle diverse quindi qualcosa del tipo:

    modelli_alimentari
    idProdotto | Peso | Scadenza | ecc...

    modelli_abbigliamento
    idProdotto | tessuto | colore | taglia | ecc..

    Che fanno capo alla stessa Tabella Serie?

  8. #8
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Quote Originariamente inviata da Valeria75_bis Visualizza il messaggio
    Che fanno capo alla stessa Tabella Serie?
    Esatto, io farei 1 tabella serie e tante tabelle modelli quante sono le tipologie di prodotti che devi gestire, ovviamente ciascuna tabella modelli è collegata all'unica tabella serie.
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

  9. #9
    Utente di HTML.it
    Registrato dal
    Jul 2006
    Messaggi
    3,072
    Quote Originariamente inviata da las Visualizza il messaggio
    Esatto, io farei 1 tabella serie e tante tabelle modelli quante sono le tipologie di prodotti che devi gestire, ovviamente ciascuna tabella modelli è collegata all'unica tabella serie.
    Capisco! Strana però come logica, N tabelle Modelli collegate ad un'unica tabella Serie.

    Anche perché è complicato poi metterle tutte in JOIN, se volessi avere tutti i Modelli, che razza di JOIN dovrei inventare se i Modelli (prodotti) sono sparsi in N tabelle?

  10. #10
    Utente di HTML.it L'avatar di las
    Registrato dal
    Apr 2002
    Messaggi
    1,221
    Quote Originariamente inviata da Valeria75_bis Visualizza il messaggio
    Capisco! Strana però come logica, N tabelle Modelli collegate ad un'unica tabella Serie.
    Anche perché è complicato poi metterle tutte in JOIN, se volessi avere tutti i Modelli, che razza di JOIN dovrei inventare se i Modelli (prodotti) sono sparsi in N tabelle?
    In effetti non è proprio così, devi ragionare pensando che per ciascun modello (prodotto) hai una sola tabella di dettaglio, tutte le altre non lo riguardano, faccio un esempio concreto:

    Modelli
    codice:
    id    tipo                         nome 
    1      alimentare              Pane
    2      abbigliamento         Gonna
    3      informatica             PC
    4      alimentare              Carne
    i dettagli dei prodotti con id 1 e 4 (Pane e Carne) saranno solo nella tabella serie_alimentare, per questi due prodotti tutte le altre tabelle serie (serie_informatica e serie_abbigliamento) non ti riguardano.

    Chiarito questo passiamo a come estrarre i dati, le soluzioni sarebbero tante, e molto dipende da come stai programmando (spero sia programmazione a oggetti) e da come devi visualizzare i dati all'utente.

    Se proprio vuoi fare tutto in un unica query (personalmente non lo farei) puoi fare una cosa di questo tipo:
    --------------------------------
    SELECT modelli.*,serie_alimentiari.*, serie_informatica.*,serie_abbigliamento
    FROM modelli
    left join serie_alimentiari on serie_alimentiari.idModelli=modelli.id
    left join serie_informatica on serie_informatica.idModelli=modelli.id
    left join serie_abbigliamento on serie_abbigliamento.idModelli=modelli.id
    WHERE <CONDIZIONI>
    ------------------------------------

    mentre per fare una cosa più funzionale lascerei che siano gli script a gestire la cosa, e precisamente programmando a oggetti farei una classe prodotti che poi viene estesa dalla classe informatica, dalla classe abbigliamento etc.. questo anche in considerazione del fatto che sicuramente nelle scermate per l'utente avrai dei compartimenti separati per ciascuna tipologia, anche perchè sarebbe assurdo dare all'utente una schermata del tipo

    codice:
    nomeProdotto          Peso          HardDisk             Taglia               Scadenza
    Gonna ABC                 250g             -                      45                       -
    Notebook VV               5 Kg         250GB                  -                          -
    Fettine                        1Kg             -                       -                  15/04/2012
    Quindi, molto probabilmente, quando devi estrarre tutti i prodotti insieme non hai necessità dei dettagli ma solo dei dati generali (nome, descriione, prezzo, prezo acquisto, pezzi disponibili etc..) e quindi vai a guardare solo la tabella modelli, mentre se sei in una sezione dove devi visualizzare solo i prodotti informatici allora nello script userai la classe informatica le cui query saranno tutte costruite per andare a vedere nella tabella serie_informatica.

    Tutto ciò ovviamente IMHO .... anche perchè la programmazione è anche una questione di gusti
    Ultima modifica di las; 01-11-2013 a 12:07 Motivo: Centrare i dati tabellari
    Il calcolatore è straordinariamente veloce, accurato e stupido.
    L'uomo è incredibilmente lento, impreciso e creativo.
    L'insieme dei due costituisce una forza incalcolabile.
    (Albert Einstein)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.