Pilote OData : Mappage des clés. SAP 4.1 Support Package 2
Informations de référence sur le pilote d'accès aux données
6.3.7 Pilote OData : Mappage des clés
Mappage de clés primaires
La propriété Clé d'un élément EntityType est mappée à la clé primaire de la table qui mappe l'élément
EntitySet correspondant. Il peut s'agir d'une ou de plusieurs colonnes.
Exemple :
La table Customers possède une clé primaire sur la colonne CustomerID, car l'élément EntityType
Customer possède une propriété Key qui fait référence à la propriété CustomerID.
Mappage de clés étrangères
Le protocole OData utilise des NavigationProperties pour exposer les chemins de jointure d'un modèle relationnel. Les NavigationProperties utilisent des Rôles définis dans des AssociationSets pour lier des
EntitySets selon leur multiplicité.
Le pilote OData représente des jointures bidirectionnelles sous forme de clés étrangères. Une jointure bidirectionnelle peut être créée entre des tables si les EntityTypes des EntitySets représentant ces tables contiennent des NavigationProperties qui utilisent le même AssocationSet pour lier des EntitySets.
Cela signifie que les deux extrémités d'un AssociationSet doivent posséder des NavigationProperties dans les deux EntityTypes. Les associations qui ne remplissent pas cette condition ne sont pas exposées en tant que clés étrangères.
Si la multiplicité des deux EntitySets est *, l'AssociationSet est mappé à une table. Si au moins une des multiplicités des EntityTypes est 1 ou 0..1, l'AssociationSet est mappé à une clé étrangère de la table qui représente l'EntitySet de la multiplicité *. Le modèle d'un nom de clé étrangère est
-idref-<NavigationProperty>-<Clé primaire>
.
Rappel :
Les clés étrangères sont des colonnes masquées dans les tables de fondation de données par défaut, car elles ne contiennent pas de données professionnelles. Vous pouvez cependant les afficher en modifiant les propriétés de table et de colonne. Voir le Guide de l'utilisateur de l'outil de conception d'information.
Attention :
SAP recommande aux utilisateurs d'application de ne pas interroger les colonnes -idref, car cela peut réduire les performances du pilote.
Exemple : Clés étrangères d'un EntitySet
La table Orders possède les clés étrangères -idref-Customer-CustomerID, -idref-Employee-
EmployeeID et -idref-Shipper-ShipperID car :
• L'EntityType Order possède les NavigationProperties suivantes.
<EntityType Name="Order">
...
84 2013-11-22
Informations de référence sur le pilote d'accès aux données
<NavigationProperty Name="Customer" Relationship="NorthwindModel.FK_Orders_Customers" FromRole="Orders"
ToRole="Customers"/>
<NavigationProperty Name="Employee" Relationship="NorthwindModel.FK_Orders_Employees" FromRole="Orders"
ToRole="Employees"/>
<NavigationProperty Name="Shipper" Relationship="NorthwindModel.FK_Orders_Shippers" FromRole="Orders"
ToRole="Shippers"/>
</EntityType>
• Ces NavigationProperties font référence aux Associations FK_Orders_, qui lient l'EntityType Order aux EntityTypes Customer, Employee et Shipper. Il existe une multiplicité 0..1 dans chaque
Association. Cela génère trois clés étrangères dans la table qui représente l'EntitySet Orders.
<Association Name="FK_Orders_Employees">
<End Role="Employees" Type="NorthwindModel.Employee" Multiplicity="0..1"/>
<End Role="Orders" Type="NorthwindModel.Order" Multiplicity="*"/>
</Association>
• La colonne CustomerID qui figure dans -idref-Customer-CustomerID provient de la clé primaire de la table Customers.
• La colonne EmployeeID qui figure dans -idref-Employee-EmployeeID provient de la clé primaire de la table Employees.
• La colonne ShipperID qui figure dans -idref-Shipper-ShipperID provient de la clé primaire de la table Shippers.
Exemple : Clés étrangères d'un AssocationSet
La table CustomerCustomerDemo possède les clés étrangères -idref-CustomerDemographics-
CustomerTypeID et -idref-Customers-CustomerID car :
• L'EntityType Customer possède une PropriétéNavigation CustomerDemographics.
<EntityType Name="Customer">
...
<NavigationProperty Name="CustomerDemographics" Relationship="NorthwindModel.CustomerCustomerDemo"
FromRole="Customers" ToRole="CustomerDemographics"/>
</EntityType>
• L'EntityType CustomerDemographic possède une PropriétéNavigation Customers.
<EntityType Name="CustomerDemographic">
...
<NavigationProperty Name="Customers" Relationship="NorthwindModel.CustomerCustomerDemo" FromRole="Cus tomerDemographics" ToRole="Customers"/>
</EntityType>
• Les NavigationProperties font référence à l'Association CustomerCustomerDemo, qui lie les
EntityTypes Customer et CustomerDemographic. Cela génère deux clés étrangères dans la table qui représente l'AssocationSet CustomerCustomerDemo.
<Association Name="CustomerCustomerDemo">
<End Role="CustomerDemographics" Type="NorthwindModel.CustomerDemographic" Multiplicity="*"/>
<End Role="Customers" Type="NorthwindModel.Customer" Multiplicity="*"/>
</Association>
• La colonne CustomerID qui figure dans -idref-Customers-CustomerID provient de la clé primaire de la table Customers.
• La colonne CustomerTypeID qui figure dans -idref-CustomerDemographics-Customer
TypeID provient de la clé primaire de la table CustomerDemographics.
85 2013-11-22

Enlace público actualizado
El enlace público a tu chat ha sido actualizado.