Mysql
 sql >> Database >  >> RDS >> Mysql

Modellazione di database:come classificare prodotti come Amazon?

Ovviamente si ridimensionerà. Funzionerà bene, è una struttura comunemente usata.

Includi un level_no . Ciò aiuterà nel codice, ma, cosa più importante, è necessario escludere i duplicati.

Se vuoi una struttura davvero compatta, hai bisogno di qualcosa come il concetto Unix di inode.

Potresti avere difficoltà a capire il codice richiesto per produrre la gerarchia, diciamo da un product , ma questo è un problema separato.

E per favore cambia

  • (product_category )) id a product_category_id
  • (product id a product_id
  • parent_id a parent_product_category_id

Risposte ai commenti

  1. level_no . Dai un'occhiata a questo modello di dati, è per una struttura ad albero di directory (es. la finestra di FlieManager Explorer):

    Modello dati directory

    Vedi se riesci a dargli un senso, questo è il concetto di inode Unix. I nomi dei file devono essere univoci all'interno del nodo, da qui il secondo indice. In realtà è completo, ma al giorno d'oggi alcuni sviluppatori avranno un accesso sibilante a scrivere il codice necessario per navigare nella gerarchia, nei livelli. Quegli sviluppatori hanno bisogno di un level_no per identificare con quale livello nella gerarchia hanno a che fare.

  2. Modifiche consigliate. Sì, si chiama Good Naming Conventions. Sono rigido al riguardo e lo pubblico, quindi è uno standard di denominazione. Ci sono ragioni per questo, che ti saranno chiare quando scrivi un SQL con 3 o 4 livelli di join; soprattutto quando vai dallo stesso genitore in due modi diversi. Se cerchi SO, troverai molte domande per questo; sempre la stessa risposta. Sarà evidenziato anche nel prossimo modello che scrivo per te.