Copyright © 2005-2007 Yves MARCOUX; dernière modification : 2007-01-23, corrections mineures : 2021-09-21.

Comment distinguer une entité d’un attribut

Yves MARCOUX - EBSI - Université de Montréal


Il est parfois difficile de distinguer ce qui doit être considéré comme une entité de ce qui doit être considéré comme un attribut lorsqu’on établit le diagramme entités-relations d’une situation réelle qu’on veut modéliser avec une base de données. Voici une façon (intuitive et informelle) de procéder.

Dans la situation à modéliser, il y a des objets (concrets ou abstraits) que l’on veut représenter dans la base, c’est-à-dire au sujet desquels on veut emmagasiner de l’information dans la base. On identifie d’abord les différents types d’objets (e.g., des personnes, des livres, des heures, etc.). Ensuite, pour chacun de ces types d’objets, on se demande : est-on est intéressé à ces objets en eux-mêmes, ou seulement parce qu’ils qualifient ou se rapportent à des objets d’un autre type ? Si c’est le premier cas, alors les objets du type considéré constituent une entité. Si c’est le second cas, les objets sont un attribut d’une (autre) entité.

Une autre façon de poser le problème est de se demander si on voudrait conserver l’information sur un objet de ce type, même s’il s’adonnait, à un moment donné, à n’être en relation avec aucun autre objet dans la base.

Par exemple, dans la base INSCRIP : un cours se donne dans un certain local, et on veut conserver cette information dans la base; par contre, s’il n’y a aucun cours qui se donne dans un certain local particulier, il n’est pas gênant de n’avoir aucune information sur ce local dans la base. C’est pour ça que les locaux sont un attribut (de l’entité « cours »), et non une entité.

La situation serait différente si on voulait gérer l’attribution des locaux aux différents cours avec la base de données. Il faudrait alors être capable de formuler des requêtes du genre « Quels sont les locaux qui peuvent recevoir le nombre d’étudiants qui se sont inscrits à tel cours ? » Alors, il faudrait conserver dans la base l’information sur un local (en particulier, le nombre de places), et ce, même si aucun cours ne s’y donne à un moment précis. Les locaux constitueraient donc une entité, qui aurait comme attributs une localisation physique, un nombre de places, etc. Le fait qu’un type d’objets doive être considéré comme une entité ou un attribut peut donc dépendre de l’utilisation prévue de la base.

Pour ce qui est des cours, la situation est claire : même si aucun étudiant n’est inscrit à un cours (ce qui arrive au début de chaque année, avant que les inscriptions ne commencent), on veut conserver les informations qui y sont reliées : son titre, qui le donne, où il se donne. Les cours constituent donc clairement une entité.


Valid XHTML 1.0 Strict! Valid CSS Level 3!