sql >> Databasteknik >  >> RDS >> Mysql

Databasmodellering:Hur kategoriserar man produkter som Amazon?

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 till product_category_id
  • (product id till product_id
  • parent_id till parent_product_category_id

Svar på kommentarer

  1. level_no . Ta en titt på denna datamodell, den är för en katalogträdstruktur (t.ex. FlieManager Explorer-fönstret):

    Katalogdatamodell

    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.

  2. 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.



  1. Upprätthålla ordning i MySQL IN-frågan

  2. Skapa en app för Django Movie Recommendation med Jaccard Index

  3. SQLite-data till en RecyclerView

  4. Anonymisera dina plandetaljer inbyggt i Plan Explorer