7.1.2012 / 5.11.2013 p.a. sunier Visual Paradigm Description du comportement du plugin HE-Arc de transformation de MCD en MLD Sommaire 1 Propos liminaires... 2 2 Principes généraux... 2 3 Logique de transformation... 3 4 Transformation des entités... 4 4.1 Généralités... 4 4.1.1 Nommage des tables... 4 4.1.2 Attributs... 4 4.1.3 Clés primaires... 5 4.1.4 Identifiants naturels... 5 4.2 Entités indépendantes... 6 4.3 Entités dépendantes... 6 4.4 Entités associatives... 7 4.5 Entités spécialisées... 8 5 Transformation des associations... 9 5.1 Associations de degré n:n sans entité associative liée... 9 5.2 Associations de degré 1:1 ou 1:n... 9 6 Webographie... 9
1 Propos liminaires Dans ce document, nous décrivons les règles internes du plugin de transformation; si nécessaire, le lecteur se référera au document [1] pour connaître les modalités de réalisation d'un modèle conceptuel de données (MCD) conforme et adapté à la puissance du plugin. 2 Principes généraux Le plugin fonctionne conformément aux principes présentés dans le document [2-a]. De manière succincte, la transformation d'un MCD en un MLD relationnel se résume à 3 règles de base: les entités deviennent des tables; les attributs des entités deviennent des colonnes de tables. Chaque table doit être dotée d'une contrainte de clé primaire; si aucun attribut n'est défini comme clé primaire «PK», il y a lieu de créer une colonne qui servira de clé primaire. les associations de degré 1:1 et 1:n sont transformées en contraintes de clés étrangères. Une ou des colonnes de clés étrangères sont créées dans les tables enfants. Un index est créé pour la ou les colonnes de clés étrangères pour optimiser l'accès aux enregistrements enfants lors des opérations de jointure entre parents et enfants. les associations de degré n:n sont transformées en tables associations; les liens entre tables parent et enfant sont identifiants. Page 2
3 Logique de transformation Le diagramme ci-dessous explique la logique de transformation du plugin. Dans un premier temps et à titre d'initialisation du processus de transformation, les entités indépendantes sont transformées en tables indépendantes. Ensuite et de manière itératives et jusqu'à ce qu'il n'y ait plus d'entités ou d'associations à transformer, les 4 opérations suivantes sont effectuées: 1. Les entités spécialisées qui réfèrent à une entité généralisée déjà transformée sont transformées en tables dépendantes. L'entité généralisée peut avoir été transformée lors de Page 3
l'initialisation ou être une entité spécialisée, dépendante ou associative transformée lors de l'itération précédente. 2. Les entités dépendantes qui peuvent être identifiées par une entité déjà transformée sont transformées en tables dépendantes. L'entité identifiante peut avoir été transformée lors de l'initialisation ou être une entité dépendante, spécialisée ou associative transformée lors de l'itération en cours ou précédente; l'association identifiante est transformée simultanément. 3. Les entités associatives dont les entités parents ont déjà été transformées sont transformées en tables associatives. Les entités parents peuvent avoir été transformées lors de l'initialisation ou être des entités dépendantes, spécialisées ou associatives transformées lors de l'itération en cours ou précédente; l'association n:n est transformée simultanément. 4. Les associations qui ne sont ni identifiantes, ni de généralisation/spécialisation, ni de degré n:n sont transformées en contraintes de clés étrangères si les entités parent et enfant de l'association ont déjà été transformées. 4 Transformation des entités 4.1 Généralités 4.1.1 Nommage des tables Le nom des tables est créé à partir de la valeur marquée TableName si elle existe; sinon, en reprenant le nom de l'entité. 4.1.2 Attributs 4.1.2.1 Types de données Dès la version 1.0.0, le plugin assume la transformation des types de données des attributs en type de données de colonnes de tables exclusivement selon le tableau ci-dessous. Type de données au niveau MCD 1 conformément au langage MCD que nous avons défini Type de données assumé au niveau MLD Oracle Remarque boolean Char(1) Deux valeurs possibles: Y pour yes ou true N pour no ou false byte char date datetime decimal double Char Date 1 Name au niveau Programming Language; veillez à respecter la casse des caractères. Page 4
4.1.3 Clés primaires Les attributs de clé primaire stéréotypés «PK» deviennent des colonnes de clé primaire. 4.1.4 Identifiants naturels Pour chaque stéréotype UID-i (i allant de 1 à 5) ou UID, une contrainte d'unicité est créée; les différentes colonnes associées aux contraintes d'unicité sont rendues obligatoire. Page 5
4.2 Entités indépendantes Toutes les entités indépendantes doivent être dotées d'un attribut clé primaire (stéréotype «PK»), sinon l'erreur suivante est générée. 4.3 Entités dépendantes Dès que la ou les entités parents de l'entité dépendante ont été transformées en tables, cette entité dépendante peut à son tour être transformée en table; dans le même temps, la ou les associations identifiantes sont transformées en contraintes de clé étrangère La ou les clés étrangères du parent sont placées avant la clé primaire de la table enfant. Page 6
4.4 Entités associatives Dès que les entités parents de l'entité associative ont été transformées en tables, cette entité associative peut à son tour être transformée en table; dans le même temps, la ou les associations identifiantes sont transformées en contraintes de clé étrangère. Le nom de la table associative est issu de l'entité associative en respectant les règles énoncées pour le nommage des entités. Page 7
4.5 Entités spécialisées Dès que l'entité généralisée de l'entité spécialisée a été transformées en table, cette entité spécialisée peut à son tour être transformée en table; dans le même temps, l'associationde généralisation est transformées en contrainte de clé étrangère identifiante. La clé étrangère référant à la table généralisée devient la clé primaire de la table spécialisée. Page 8
5 Transformation des associations Les associations identifiantes, de généralisation/spécialisation et encore de degré n:n liées à une entité associatives ont été traitées dans le chapitre précédent consacré aux entités. 5.1 Associations de degré n:n sans entité associative liée Les associations de degré n:n sont transformées en tables associatives. Si l'association n:n n'est pas liées à une entité associative, elle doit impérativement comporter un nom sinon, l'erreur suivante est générée. Le nom de la table est créé à partir de la valeur marquée TableName de l'association si elle existe; sinon, en reprenant le nom de l'association. 5.2 Associations de degré 1:1 ou 1:n 6 Webographie [1] Réaliser un MCD conforme aux règles de modélisation HE-ARC Page 9
http://lgl.isnetne.ch/visual-paradigm-8/chapitre30/realisermcdconformehearc.pdf [2] Cours de modélisation de systèmes d'information informatisés (SII) de gestion http://lgl.isnetne.ch/modelisation-2005/index.htm [2-a] [2-b] [I-1] Transformation du modèle conceptuel de données en modèle logique relationnel http://lgl.isnetne.ch/modelisation-2005/chapitre_170/trsf_mcd_mld.pdf Identifiants d'entité et associations identifiantes http://lgl.isnetne.ch/modelisation-2005/chapitre_110/mcd_identifiantsnaturels.pdf Stéréotype (UML) http://fr.wikipedia.org/wiki/st%c3%a9r%c3%a9otype_(uml) Page 10