sql >> Database >  >> RDS >> Mysql

Databasemodellering:hoe producten zoals Amazon categoriseren?

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

Reacties op opmerkingen

  1. level_no . Kijk eens naar dit gegevensmodel, het is voor een directorystructuur (bijv. het FlieManager Explorer-venster):

    Directorygegevensmodel

    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.

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



  1. Probleem bij het maken van externe sleutels in mySql

  2. Android SQLiteOpenHelper:waarom wordt de methode onCreate() niet aangeroepen?

  3. Installeer en maak verbinding met PostgreSQL 10 op Ubuntu 16.04

  4. Fluent NHibernate kan MySql.Data niet laden van GAC in debug-modus van een test