Mysql
 sql >> Base de données >  >> RDS >> Mysql

Modélisation de bases de données :Comment catégoriser des produits comme Amazon ?

Bien sûr, il évoluera. Cela fonctionnera très bien, c'est une structure couramment utilisée.

Inclure un level_no . Cela aidera dans le code, mais plus important encore, il est nécessaire d'exclure les doublons.

Si vous voulez une structure vraiment serrée, vous avez besoin de quelque chose comme le concept Unix des inodes.

Vous pouvez avoir des difficultés à comprendre le code requis pour produire la hiérarchie, par exemple à partir d'un product , mais c'est un autre problème.

Et s'il vous plait changez

  • (product_category )) id à product_category_id
  • (product id à product_id
  • parent_id à parent_product_category_id

Réponses aux commentaires

  1. level_no . Jetez un œil à ce modèle de données, il s'agit d'une arborescence de répertoires (par exemple, la fenêtre de l'explorateur FlieManager) :

    Modèle de données d'annuaire

    Voyez si vous pouvez lui donner un sens, c'est le concept d'inode Unix. Les noms de fichiers doivent être uniques dans le nœud, d'où le deuxième index. C'est en fait complet, mais certains développeurs de nos jours auront une crise de nerfs en écrivant le code nécessaire pour naviguer dans la hiérarchie, les niveaux. Ces développeurs ont besoin d'un level_no pour identifier à quel niveau de la hiérarchie ils ont affaire.

  2. Changements recommandés. Oui, cela s'appelle les bonnes conventions de dénomination. Je suis rigide à ce sujet, et je le publie, c'est donc une norme de nommage. Il y a des raisons à cela, qui deviendront claires pour vous lorsque vous écrirez du SQL avec 3 ou 4 niveaux de jointures; surtout quand vous allez chez le même parent de deux manières différentes. Si vous recherchez SO, vous trouverez de nombreuses questions à ce sujet ; toujours la même réponse. Il sera également mis en évidence dans le prochain modèle que j'écris pour vous.