Associations (IDEF1X)

Une association est une relation entre deux ou plusieurs entités. Elle peut comporter des attributs qui caractérisent l'association entre ces entités.
Les associations peuvent être comparées à des liens entre des fiches.
Le dessin suivant permet de visualiser "en trois dimensions" les situations qu'un diagramme de données permet de mémoriser.
Pierre et Marie sont des clients. Pierre a effectué les réservations numéros 312 et 329.
Un diagramme de données doit permettre de mémoriser toutes les situations du contexte de l'entreprise, mais rien que celles-là.

Le diagramme ne doit pas permettre de représenter des situations irréalistes ou aberrantes.
Exemples d'association :
• Un client passe une commande.
• Une commande comprend plusieurs produits.
• Une personne travaille pour une société.
• Une alarme est déclenchée par un capteur.
• Un capteur couvre une zone.
• Une fenêtre affiche une chaîne de caractères.
Relation identifiante obligatoire

Une relation identifiante obligatoire est une association entre des entités dans laquelle chaque instance de la première entité est associée à zéro, une ou plusieurs instances de la seconde entité et chaque instance de la seconde entité est associée à une instance de la première entité et est identifiée par cette association. La seconde entité est toujours une entité dépendante représentée par une boîte aux angles arrondis. Une relation identifiante est représentée par une ligne pleine avec un point du côté de l'entité dépendante.
Si une instance d'entité est identifiée par son association avec une autre entité, la relation est dite "identifiante", et chaque instance de cette entité doit être associée avec exactement une instance de l'autre entité. Par exemple, si une ou plusieurs tâches sont associées à chaque projet et que les tâches sont identifiées de manière unique à l'intérieur d'un projet, une relation identifiante existe entre les entités "Projet" et "Tâche". C'est-à-dire que le projet associé doit être connu pour pouvoir identifier de manière unique une tâche des autres (Pour plus de détails, voir Composite identifier). L'existence d'un fils dans une relation identifiante est toujours dépendante de celle de son parent, c-à-d qu'une instance de l'entité fils ne peut exister que si elle est reliée à une instance de l'entité parente.
Pour créer une relation identifiante :
1. Dans la barre d'objets du diagramme, cliquez sur le bouton
Relation identifiante obligatoire 
.
2. Cliquez sur l'entité parente, et en gardant le bouton de la souris enfoncé, déplacez le pointeur jusqu'à l'entité fille, avant de relâcher votre pression.
L'association apparaît dans le diagramme. Elle est représentée par un trait plein avec un point à l'extrémité du trait du côté de l'entité dépendante. La forme de l'entité dépendante est automatiquement changée en une boîte aux angles arrondis.
Relation obligatoire identifiante
Dans l'exemple ci-dessus, une commande est composée de lignes de commandes, et chaque ligne de commande est identifiée par son association avec la commande. La ligne de commande est une entité dépendante représentée par une boîte aux angles arrondis.
Relation non-identifiante obligatoire

Une relation non-identifiante obligatoire est une association entre des entités dans laquelle chaque instance de la première entité est associée à zéro, une ou plusieurs instances de la seconde entité et chaque instance de la seconde entité est associée à une instance de la première entité mais n'est pas identifiée par cette association. Elle est représentée par une ligne pointillée avec un point du côté de l'entité dépendante.
Si chaque instance d'une entité peut être identifiée de manière unique sans connaître l'instance de l'autre entité associée, la relation est "non-identifiante". Par exemple, bien qu'il puisse exister une relation de dépendance entre les entités "Acheteur" et "Ordre d'achat", les ordres d'achat peuvent être identifiés de manière unique par un numéro d'ordre d'achat sans nécessairement connaître l'acheteur concerné.
Pour créer une relation non-identifiante :
1. Dans la barre d'objets du diagramme, cliquez sur le bouton
Relation non-identifiante obligatoire 
.
2. Cliquez dans l'entité parente, et en gardant le bouton de la souris enfoncé, déplacez le pointeur jusqu'à l'entité fille, avant de relâcher votre pression.
L'association apparaît dans le diagramme.
Relation obligatoire non-identifiante
Dans l'exemple ci-dessus, une ligne de commande inclut un article, mais elle n'est pas identifiée par son association avec cet article.
Relation optionnelle non-identifiante

Une relation optionnelle est une association entre entités dans laquelle chaque instance de la première entité est associée à zéro, une ou plusieurs instances de la seconde entité et chaque instance de la seconde entité est associée à zéro, une ou plusieurs instances de la première entité. Elle est représentée par une ligne pointillée avec un point du côté de la seconde entité et un petit losange à l'autre extrémité.
Dans une relation optionnelle non-identifiante, chaque instance de l'entité fille est reliée à zéro ou une instance de l'entité parente.
Une relation optionnelle non-identifiante représente une dépendance conditionnelle. Une relation optionnelle non-identifiante est représentée par un trait pointillé entre l'entité parente et l'entité fille, avec un petit losange du côté de l'entité parente.
Une instance de l'entité fille pour laquelle chaque attribut de la clé étrangère qui correspond à la relation possède une valeur, doit être associée à une instance de l'association parente dans laquelle les valeurs des attributs de la clé primaire de l'entité parente doit être égale à la valeur des attributs de la clé étrangère de l'entité fille.
Pour créer une relation optionnelle non-identifiante :
1. Dans la barre d'objets du diagramme, cliquez sur le bouton
Relation optionnelle 
.
2. Cliquez sur l'entité parente, et en gardant le bouton de la souris enfoncé, déplacez le pointeur jusqu'à l'entité fille, avant de relâcher votre pression.
L'association apparaît dans le diagramme.
Relation optionnelle
Dans l'exemple ci-dessus, une commande devrait être facturée à un client, mais ce n'est pas obligatoire (problèmes de livraison, etc.).
Relation non-spécifique

Une relation non-spécifique est une association entre entités dans laquelle chaque instance de la première entité est associée à zéro, une ou plusieurs instances de la seconde entité et chaque instance de la seconde entité est associée à zéro, une ou plusieurs instances de la première entité. Elle est représentée par une ligne tirée entre les deux entités avec un point à chaque extrémité.
Des relations non-spécifiques sont utilisées dans des vues Entité-Relation de haut niveau pour représenter des relations plusieurs-à-plusieurs entre des entités.
Dans le développement initial d'un modèle, il est souvent pratique d'identifier des "relations non-spécifiques" entre les entités. Ces relations non-spécifiques sont raffinées dans les phases de développement ultérieures du modèle.
Une relation non-spécifique, également appelée "relation plusieurs-à-plusieurs", est une association entre deux entités dans laquelle chaque instance de la première entité est associée avec zéro, une ou plusieurs instances de la deuxième entité et chaque instance de la deuxième entité est associée avec zéro, une ou plusieurs instances de la première entité. Par exemple, si un employé peut être affecté à plusieurs projets et si plusieurs employés peuvent être affectés au même projet, le lien entre les entités "Employé" et "Projet" peut être exprimé par une relation non-spécifique. Cette relation non-spécifique pourra être remplacée par des relations spécifiques plus tard dans le développement du modèle en introduisant une troisième entité, telle que "Affectation Projet", qui est une entité fille commune dans les relations spécifiques avec les entités "Employé" et "Projet". Ces nouvelles relations spécifient que chaque employé est affecté à zéro, un, ou plusieurs projets. Chaque assignement de projet est pour exactement un employé et un projet. Les entités introduites pour résoudre les relations non-spécifiques sont parfois appelées "entités associatives" ou "entités d'intersection".
La définition d'une relation non-spécifique peut ensuite être complétée en spécifiant les cardinalités pour chaque sens de la relation.
Pour créer une relation non-spécifique :
1. Dans la barre d'objets du diagramme, cliquez sur le bouton
Relation non-spécifique 
.
2. Cliquez sur la première entité, et en gardant le bouton de la souris enfoncé, déplacez le pointeur jusqu'à la deuxième entité, avant de relâcher votre pression.
L'association apparaît dans le diagramme.
Relation non-spécifique
Dans l'exemple ci-dessus, un article peut apparaître dans zéro, un ou plusieurs catalogues et un catalogue peut contenir zéro, un ou plusieurs articles.
Entité associative

Une entité associative est une entité qui est introduite pour résoudre une relation non-spécifique ou pour afficher des attributs en tant que propriétés d'une association.
Des relations non-spécifiques sont utilisées dans des vues Entité-Relation de haut niveau pour représenter des relations plusieurs-à-plusieurs entre des entités. Dans une vue basée sur les clés ou définie complètement avec ses attributs, toutes les associations entre les entités doivent être exprimées sous forme de relations spécifiques. Cependant, dans le développement initial d'un modèle, il a été souvent pratique d'identifier des "relations non-spécifiques" entre les entités. Ces relations non-spécifiques sont raffinées dans les phases de développement ultérieures du modèle.
Les entités introduites pour résoudre les relations non-spécifiques sont parfois appelées "entités associatives" ou "entités d'intersection".
Pour créer une entité associative :
1. Dans la barre d'objets du diagramme, cliquez sur le bouton
Entité 
.
2. Cliquez sur le plan de travail du diagramme.
La fenêtre Ajout d'une entité s'ouvre.
3. Saisissez le Nom de l'entité associative.
4. Cliquez sur Créer (Windows Front-End) ou Ajouter (Web Front-End).
L'entité apparaît dans le diagramme.
5. Cliquez sur le bouton
Relation identifiante obligatoire 
.
6. Cliquez sur la première entité, et en gardant le bouton de la souris enfoncé, déplacez le pointeur jusqu'à l'entité associative, avant de relâcher votre pression.
L'association apparaît dans le diagramme. La forme de l'entité associative est changée en une boîte aux angles arrondis pour indiquer qu'il s'agit d'une entité dépendante.
7. Créez de la même manière la deuxième association en cliquant sur la deuxième entité et, en gardant le bouton de la souris enfoncé, déplacez le pointeur jusqu'à l'entité associative, avant de relâcher votre pression.

Vous pouvez ajouter des attributs à une entité associative.
Entité associative
Dans l'exemple ci-dessus, un article peut faire l'objet d'une remise pour zéro, un ou plusieurs clients, et un client peut bénéficier de remises sur zéro, un ou plusieurs articles. Dans chaque cas, le taux de remise est indiqué sur l'entité associative.
Définir les rôles des associations

Un rôle permet d'indiquer une des entités concernées par l'association. L'indication des rôles est particulièrement importante dans le cas d'une association entre une entité et elle-même.
Chaque extrémité d'une association permet de préciser le rôle joué par chaque entité dans l'association.
Visuellement, le nom du rôle se distingue du nom d'une association, car il est placé près de son extrémité. De plus, il apparaît en caractères droits, alors que le nom de l'association est en italique.

La barre d'état (située au bas de la fenêtre) permet aussi de distinguer les différentes zones : lorsque vous déplacez la souris le long de l'association, elle indique si vous vous trouvez sur l'association ou sur un rôle.
Lorsque deux entités sont reliées par une seule association, le nom des entités suffit souvent à caractériser le rôle ; nommer les rôles prend tout son intérêt lorsque plusieurs associations relient deux entités.
Certaines associations peuvent mettre en œuvre plus de deux entités. Ces associations sont généralement rares.
Pour ajouter un rôle à une association :
1. Cliquez sur le bouton
Rôle de l'association 
et reliez l'association à l'entité.
Multiplicités
Chaque rôle d'une association porte une indication de multiplicité qui montre combien d'objets de l'entité considérée peuvent être liés à un objet de l'autre entité. La multiplicité est une information portée par le rôle, sous la forme d'une expression entière bornée. On l'indique en particulier pour chacun des rôles que jouent les entités dans une association.
La multiplicité exprime le nombre de participations minimum et maximum d'un objet donné d'une entité à une association.
Les multiplicités usuelles sont "1", "0..1", "*" ou "0..*", "1..*", et "M..N" où "M" et "N" sont des entiers :
• La multiplicité "1" indique que chaque objet de l'entité est relié par cette association une fois et une seule.
Elle est représentée par une relation obligatoire avec un point sur ce rôle et pas de point sur le rôle opposé.
• La multiplicité "0..1" indique qu'un objet de l'entité ne peut être relié par cette association qu'une fois au plus.
Elle est représentée par un "Z" à côté du rôle.
• La multiplicité "*" ou "0..*" indique qu'un objet de l'entité peut être relié par l'association une ou plusieurs fois ou pas du tout.
C'est la valeur par défaut.
• La multiplicité "1..*" indique que chaque objet de l'entité est obligatoirement relié par l'association et qu'il peut l'être plusieurs fois.
Elle est représentée par un "P" (pour Positif) à côté du rôle.
• La multiplicité "M..N" indique que chaque objet de l'entité est obligatoirement relié par l'association au moins "M" fois et qu'il peut l'être au maximum "N" fois.
1 | Un et un seul |
0..1 | Zéro ou un (Z) |
M..N | De M à N (entiers naturels) |
* | De zéro à plusieurs |
0..* | De zéro à plusieurs |
1..* | De un à plusieurs (P) |
Pour préciser la multiplicité d'un rôle :
1. Cliquez avec le bouton droit sur le trait qui se trouve entre l'association et l'entité, afin d'ouvrir le menu contextuel du rôle.
2. Cliquez sur Propriétés.
La page de propriétés du rôle s'ouvre.
3. Cliquez sur l'onglet Caractéristiques.
4. Dans le champ Multiplicité, sélectionnez la multiplicité voulue.
La représentation de l'association change en fonction de la nouvelle valeur de ses multiplicités.

Dans HOPEX Windows Front-End, la multiplicité est également affichée dans le menu contextuel du rôle. Si le menu affiché ne propose pas les multiplicités, vérifiez que vous avez bien cliqué sur le trait qui matérialise le rôle, et non sur l'association.