0

Certaines entités sont étiquetées sous différentes catégories. Cependant, certaines catégories comportent plusieurs sous-catégories (jusqu'à 2 niveaux), mais la hiérarchie n'est pas uniforme - certaines avec des hauteurs de 1 à 2.Bases de données relationnelles - Modélisation de la hiérarchie déséquilibrée

Mon idée était de créer un tableau distinct pour chaque catégorie et un pour chacun des niveaux, puis lier l'identifiant de l'entité à la feuille cependant, cela ne semble pas très efficace.

L'amour pour entendre vos pensées!

Répondre

1

Il y a une conception plus souple:

enter image description here

Lorsque vous recherchez des entités appartenant à la catégorie donnée, la première recherche dans la catégorie pour l'ensemble de ses sous-catégories, sous-sous-catégories, etc. En fonction sur le SGBD, cela pourrait potentiellement être fait dans une seule requête récursive.

Une fois que vous avez toutes les catégories dans la hiérarchie, il suffit de JOIN les catégories CATEGORY_ENTITY et ENTITY et filtrer par ces CATEGORY_ID.

BTW, le nom de catégorie doit-il être unique globalement ou seulement parmi les frères et soeurs? En fonction de cela, vous pouvez ajouter une contrainte UNIQUE sur NAME ou sur {PARENT_ID, NAME} respectivement.


Mais vérifier comment votre SGBD NULLs dans les contraintes composites UNIQUE.

Questions connexes