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
aproduct_category_id
- (
product
id
aproduct_id
parent_id
aparent_product_category_id
Risposte ai commenti
-
level_no
. Dai un'occhiata a questo modello di dati, è per una struttura ad albero di directory (es. la finestra di FlieManager Explorer):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. -
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.