Naturligtvis kommer det att skala. Det kommer att fungera bra, det är en vanlig struktur.
Inkludera ett level_no
. Det kommer att hjälpa till med koden, men ännu viktigare, det krävs att du exkluderar dubbletter.
Om du vill ha en riktigt snäv struktur behöver du något liknande Unix-konceptet med inoder.
Du kan ha svårt att komma runt koden som krävs för att skapa hierarkin, säg från en product
, men det är en separat fråga.
Och vänligen ändra
- (
product_category
))id
tillproduct_category_id
- (
product
id
tillproduct_id
parent_id
tillparent_product_category_id
Svar på kommentarer
-
level_no
. Ta en titt på denna datamodell, den är för en katalogträdstruktur (t.ex. FlieManager Explorer-fönstret):Se om du kan förstå det, det är Unix-inodkonceptet. Filnamnen måste vara unika inom noden, därav det andra indexet. Det är faktiskt färdigt, men vissa utvecklare kommer nuförtiden att ha en häftig passform när de skriver koden som krävs för att navigera i hierarkin, nivåerna. Dessa utvecklare behöver ett
level_no
för att identifiera vilken nivå i hierarkin de har att göra med. -
Rekommenderade ändringar. Ja, det heter Good Naming Conventions. Jag är stel när det gäller det, och jag publicerar det, så det är en namngivningsstandard. Det finns anledningar till det, vilket kommer att bli tydligt för dig när du skriver lite SQL med 3 eller 4 nivåer av joins; speciellt när du går till samma ena förälder på två olika sätt. Söker du SO hittar du många frågor till detta; alltid samma svar. Den kommer också att vara upplyst i nästa modell jag skriver till dig.