Natuurlijk zal het schalen. Dat zal prima werken, het is een veelgebruikte structuur.
Voeg een level_no
toe . Dat helpt bij de code, maar belangrijker nog, het is nodig om duplicaten uit te sluiten.
Als je een echt strakke structuur wilt, heb je zoiets als het Unix-concept van inodes nodig.
Je hebt misschien moeite om de code te begrijpen die nodig is om de hiërarchie te produceren, bijvoorbeeld van een product
, maar dat is een aparte kwestie.
En verander alstublieft
- (
product_category
))id
naarproduct_category_id
- (
product
id
naarproduct_id
parent_id
naarparent_product_category_id
Reacties op opmerkingen
-
level_no
. Kijk eens naar dit gegevensmodel, het is voor een directorystructuur (bijv. het FlieManager Explorer-venster):Kijk of je het kunt begrijpen, dat is het Unix inode-concept. De bestandsnamen moeten uniek zijn binnen de node, vandaar de tweede index. Dat is eigenlijk compleet, maar sommige ontwikkelaars zullen tegenwoordig moeite hebben met het schrijven van de code die nodig is om door de hiërarchie, de niveaus, te navigeren. Die ontwikkelaars hebben een
level_no
. nodig om te identificeren met welk niveau in de hiërarchie ze te maken hebben. -
Aanbevolen wijzigingen. Ja, het heet Good Naming Conventions. Ik ben er rigide over en ik publiceer het, dus het is een naamgevingsstandaard. Daar zijn redenen voor, die je duidelijk zullen worden als je wat SQL schrijft met 3 of 4 niveaus van joins; vooral als je op twee verschillende manieren naar dezelfde ouder gaat. Als je SO zoekt, zul je hiervoor veel vragen vinden; altijd hetzelfde antwoord. Het zal ook worden benadrukt in het volgende model dat ik voor je schrijf.