Correspondances objet-relationnel (O/R)

Les développeurs utilisent de plus en plus des langages de programmation orientés objet tels que Java pour développer des objets de gestion et des composants. Ces objets peuvent être stockés dans une base de données. Un problème peut survenir lorsque l'utilisateur tente de stocker des objets dans une base de données relationnelle car la modélisation d'objets décrit un système via des objets dotés d'une entité, d'un comportement et d'un état encapsulé alors que la modélisation relationnelle décrit un système par le biais de ses données.

En outre, les codes de langage objet sont souvent différents de ceux utilisés pour identifier des tables et des colonnes dans une base de données relationnelle, de sorte que vous devez les modifier lorsque vous générez un MOO dans un MPD ou un MPD dans un MOO.

Vous pouvez utiliser la mise en correspondance des objets afin de contourner ce problème.

Le schéma suivant illustre le lien entre les classes et tables pour stocker les objets dans une base de données relationnelles :



La persistance des objets implique de stocker et d'extraire les objets dans une base de données relationnelles.

Mise en correspondance de classes avec des objets de MPD

Si une classe hérite d'une classe non générée via un lien de généralisation, les attributs de la classe s'affichent dans la boîte de dialogue Sélection afin de vous permettre de créer une correspondance avec ces attributs hérités. Les attributs d'une classe dérivée non générée s'affichent également dans la boîte de dialogue Sélection.

Mise en correspondance de associations avec des objets de MPD

La correspondance O/R d'une association permet de définir la navigabilité du rôle d'une association dans la base de données. Si un rôle d'association n'est pas navigable, il n'est alors pas nécessaire de définir une correspondance pour cette association puisqu'aucune information n'est transmise entre les classes. En revanche, lorsqu'un rôle d'association est navigable, vous devez configurer la structure pour la transmission des données au sein de la base de données. Dans les bases de données relationnelles, la transmission des données est mise en oeuvre via l'utilisation de clés étrangères conçues pour lier un enregistrement contenu dans une table à un enregistrement contenu dans une autre table.

Le type de correspondance pour une association dépend de la multiplicité de l'association :

  • Les associations un-à-un ou un-à-plusieurs peuvent être mises en correspondance avec une référence dans le modèle source. Cette référence est utilisée dans la base de données pour transférer des données et migrer les colonnes de clé dans la table appropriée.

  • Les associations plusieurs-à-plusieurs doivent être mises en correspondance avec une table associative. Cette table est créée pour conserver une relation entre plusieurs tables dans une base de données relationnelles. Les colonnes contenues dans une table associative sont une combinaison de clés dans la table impliquée dans la référence. Par exemple, les classes suivantes ont une association plusieurs-à-plusieurs :



    Dans une base de données relationnelles, cette association est mise en correspondance avec la table associative suivante :



Requêtes SQL

Lorsque les rôles d'association sont navigables, les requêtes suivantes sont automatiquement calculées :

Requête

Action

Select (Rôle A)

Extrait les instances de la classe A pour le rôle A défini sur la classe B.

Insert (Rôle A)

Associe une instance de la classe A à la classe B. Le traitement n'est effectué que si l'association source est une table associative.

Delete (Rôle A)

Supprime de la classe B l'association à la classe A. Cette requête n'est calculée que si l'association source est une table associative.

Select (Rôle B)

Extrait les instances de la classe B pour le rôle B défini sur la classe A.

Insert (Rôle B)

Associe une instance de la classe B à la classe A. Cette requête n'est calculée que si l'association source est une table associative.

Delete (Rôle B)

Supprime de la classe A l'association à la classe B. Cette requête n'est calculée que si l'association source est une table associative.