Association (EDM)
Dans le modèle EDM (Modèle de données d'entité), les relations modélisent des connexions logiques entre des entités. Le modèle EDM prend en charge l'objet AssociationType des relations, qui modélise la relation d'égal à égal entre des entités.
Dans une association, chaque entité participante est appelée « terminaison » (End). Chaque terminaison est assortie d'un attribut Role utilisé pour nommer et décrire la logique de chaque terminaison de l'association.
Les attributs Type des terminaisons d'une association définissent les types d'entités participant à la relation.
Les associations ont un attribut Multiplicity. L'attribut Multiplicity spécifie le nombre d'instances de chaque terminaison qui peut participer à la relation.
Dans la logique de nombreuses applications métier, les clients passent des commandes et les commandes doivent être livrées aux clients. La relation entre un client et une commande peut être modélisée par une association EDM. Les terminaisons de l'association sont les entités client et commande. Chaque terminaison a une entité Type. L'attribut Role décrit la fonction de l'entité spécifiée par l'attribut Type. Dans la plupart des cas, chaque client peut avoir zéro, une ou plusieurs commandes, mais chaque commande est associée à un et un seul client. En d'autres termes, la multiplicité (Multiplicity) du type client est 1, tandis que celle de la commande est *. Pour plus d'informations sur la multiplicité, voir Relations du modèle Entity Data Model.
Exemple
Dans la syntaxe CSDL (Conceptual Schema Definition Language) ci-dessous, un élément Association spécifie la logique de la relation entre clients (Customers
) et commandes (Orders
).
<?xml version="1.0" encoding="utf-8"?>
<Schema xmlns:cg="https://schemas.microsoft.com/ado/2006/04/codegeneration" xmlns:edm="https://schemas.microsoft.com/ado/2006/04/edm" xmlns="https://schemas.microsoft.com/ado/2006/04/edm" Namespace="MyCompany.LOBSchema" Alias="Self">
<EntityType Name="Customer">
<Key>
<PropertyRef Name="CustomerId" />
</Key>
<Property Name="CustomerId" Type="Guid" Nullable="false" />
<Property Name="Name" Type="String" Nullable="false" />
<Property Name="Address" Type="String" Nullable="false" />
<Property Name="City" Type="String" Nullable="false" />
<NavigationProperty Name="Orders" Relationship="Self.Order_Customer" FromRole="Customers" ToRole="Orders" />
</EntityType>
<EntityType Name="Order">
<Key>
<PropertyRef Name="OrderId" />
</Key>
<Property Name="OrderId" Type="String" Nullable="false" />
<Property Name="TotalAmount" Type="Decimal" />
<Property Name="Tax" Type="Decimal" />
<Property Name="ShippingAddress" Type="String" />
<NavigationProperty Name="Customer" Relationship="Self.Order_Customer" FromRole="Orders" ToRole="Customers" />
</EntityType>
<Association Name="Order_Customer">
<End Role="Customer" Type="OrderInfoModel.Customers"
Multiplicity="1" />
<End Role="Orders" Type="OrderInfoModel.Order" Multiplicity="*" />
</Association>
<EntityContainer Name="LOBSchemaData">
<EntitySet Name="Customers" EntityType="Self.Customer" />
<EntitySet Name="Orders" EntityType="Self.Order" />
<AssociationSet Name="Customers_Orders"
Association="Self.Order_Customer">
<End Role="Customer" EntitySet="Customers" />
<End Role="Order" EntitySet="Orders" />
</AssociationSet>
</EntityContainer>
</Schema>
L'attribut Name de l'AssociationOrder_Customer
permet d'identifier la relation dans toutes les opérations. Chaque entité participante est une terminaison. L'attribut Type de l'AssociationOrder_Customer
permet d'identifier le type dans toutes les opérations. Chaque entité participante d'une terminaison spécifie les types d'entités participant à l'association, à savoir dans le cas présent Customers
et Orders
. Chaque terminaison a un attribut Role et un attribut Multiplicity.
Caractéristiques des associations EDM
Une association possède les caractéristiques suivantes :
Multiplicité : les éléments End d'une association peuvent avoir la valeur 0..n, où la cardinalité de l'un ou l'autre End peut varier.
Appartenance non exclusive : un type d'entité peut participer à plusieurs associations.
Direction : les associations sont bidirectionnelles entre les entités et peuvent être explorées depuis l'une ou l'autre terminaison (l'un ou l'autre élément End).
Multiplicité
L'attribut Multiplicity définit la cardinalité de la terminaison dans toutes les opérations. Chaque entité participante est un élément End d'un élément Association. L'exemple CSDL précédent spécifie qu'il existe un et un seul Customer (Multiplicty="1")
pour zéro, une ou plusieurs commandes (Multiplicty="*"
).
Le tableau suivant répertorie toutes les valeurs possibles de Multiplicity :
Valeur | Description |
---|---|
|
Zéro ou un |
|
Un et un seul |
|
Zéro, un ou plus |
Appartenance non exclusive
Un type d'entité peut participer à plusieurs associations.
Direction
Les associations de l'EDM sont bidirectionnelles.