Présentation
Ce didacticiel présente les outils Oracle SQL Developer Data Model qui peuvent être utilisés pour rétroconcevoir un schéma de base de données existant dans un modèle relationnel et logique. Considérez un processus de développement de base de données typique qui commence par les exigences des utilisateurs métier qui sont modélisées sous la forme d'un modèle de relation d'entité composé d'entités, d'attributs, d'identificateurs et de relations. Ce modèle E-R est ensuite transformé en un modèle relationnel composé de relations, d'attributs, de clés et de clés étrangères. Le modèle relationnel peut ensuite être implémenté dans une base de données relationnelle sous la forme d'un ensemble de tables, de colonnes et de contraintes, notamment des contraintes d'unicité, de clé primaire et de clé étrangère.
Nous pouvons rencontrer des situations où nous avons un schéma de base de données relationnelle déjà implémenté mais où il manque le modèle relationnel original ou le modèle de relation d'entité qui a été utilisé pour concevoir la base de données. Dans ces situations, nous pourrons peut-être recréer le modèle E-R par rétro-ingénierie le modèle à partir du schéma de la base de données. Pour ce faire, nous devons suivre les étapes suivantes :
- Connectez le schéma de la base de données et identifiez toutes les tables existantes, leurs colonnes et leurs contraintes de clé primaire et étrangère.
- Construisez le modèle relationnel qui correspond à l'ensemble existant de tables et de contraintes.
- Déduire le modèle E-R du modèle relationnel.
Terminologie du modèle de données
Oracle SQL Developer utilise des termes légèrement différents de ceux généralement utilisés dans les cours universitaires sur les bases de données. Le modèle physique (avec les clés, les relations de clé étrangère et les index) extrait du schéma de la base de données est appelé « modèle relationnel » par Oracle SQL Developer. L'ensemble d'entités avec des lignes de relation est appelé le "modèle logique" par Oracle SQL Developer.
Prérequis
Avant de commencer ce didacticiel, assurez-vous que vous travaillez avec Oracle SQL Developer version 4.x ou plus récente. Malheureusement, Oracle 12c peut toujours être livré avec la version 3.x de SQL Developer qui ne dispose pas des outils de modélisation de données.
Si vous avez besoin d'obtenir et d'installer SQL Developer, ou si vous souhaitez obtenir des conseils sur la mise en route de SQL Developer, veuillez consulter le didacticiel.
Vous aurez également besoin des informations d'identification (nom d'hôte, port, nom de service, nom d'utilisateur et mot de passe) pour l'exemple de schéma "RH" (ou autre) fourni avec Oracle 11g et Oracle 12c.
Les étapes suivantes ont été réalisées à l'aide de SQL Developer 4.1 sur Windows 7 connecté à l'exemple de schéma "HR" dans une base de données Oracle 12c.
Reverse engineering du modèle relationnel à partir d'un schéma de base de données
- Exécutez Oracle SQL Developer et créez une connexion au schéma de base de données avec lequel vous allez travailler. Dans cet exemple, nous avons créé une connexion au schéma "RH", qui est l'exemple de base de données des ressources humaines fourni avec Oracle 11g et Oracle 12c.
- Déroulez le menu Fichier, sélectionnez Modeleur de données, puis le sous-menu Importer. Cliquez sur la sélection Dictionnaire de données dans le menu déroulant, comme indiqué ci-dessous. Cela lancera l'assistant d'importation de dictionnaire de données :
- Sélectionnez la connexion avec laquelle vous souhaitez travailler. Vous pouvez également cliquer sur le bouton Ajouter pour ajouter une nouvelle connexion. Une fois que vous avez mis en surbrillance votre connexion, cliquez sur le bouton Suivant> pour continuer.
- L'étape suivante consiste à sélectionner le schéma à importer. Pour cet exemple, nous avons coché la case du schéma "RH", comme indiqué ci-dessous. Notez que la sélection "Importer vers :" affiche Nouveau modèle relationnel et que le type de base de données est Oracle 12c. Cliquez sur le bouton Suivant> pour continuer :
La prochaine série d'étapes sur la page suivante couvre la sélection des objets de base de données à importer dans le modèle.
- L'étape suivante consiste à sélectionner les objets de base de données à importer. Pour cet exercice, nous allons sélectionner toutes les tables à importer. Notez qu'il existe d'autres objets de base de données tels que des vues, des séquences, des rôles, des procédures stockées, etc. qui pourraient également être importés. Pour cet exercice, nous allons rester simple et nous contenter de regarder les tableaux. Après avoir sélectionné les tableaux, cliquez sur le bouton Suivant> pour continuer.
- La dernière étape de l'assistant d'importation consiste à examiner les objets de base de données à importer. Si tout semble bon, cliquez sur le bouton Terminer pour lancer l'importation.
- À ce stade, selon le nombre de tables que vous importez, vous pouvez voir une barre de progression telle que :
- Une fois terminé, une fenêtre Résumé du journal s'affiche :
Si des instructions ont échoué, enregistrez ce journal pour faciliter le débogage.
- En supposant que le processus d'importation se soit terminé sans erreur, un nouveau modèle relationnel apparaîtra dans la fenêtre. Vous voudrez peut-être vous déplacer autour des tables pour faire un bel arrangement. Le modèle utilise la notation « patte d'oie » où la « patte d'oie » représente le côté « plusieurs » de la relation. Ainsi, par exemple, une « région » a de nombreux « pays ». Un "pays" a plusieurs "emplacements", et ainsi de suite.
- Vous pouvez modifier le niveau de détails affiché dans le modèle relationnel en cliquant avec le bouton droit sur le canevas et en sélectionnant l'élément de menu Afficher les détails.
Pour rappel, la plupart des praticiens appelleraient cela un "modèle de base de données physique" car il inclut les types de données, les clés, les clés étrangères et les index qui sont implémentés dans le schéma de la base de données.
Les étapes d'enregistrement du modèle sont présentées à la page suivante.
- À ce stade, le modèle reçoit un nom temporaire tel que Sans titre_1. Pour afficher ce modèle dans le "Navigateur", déroulez le menu Affichage, sélectionnez Modélisateur de données, puis Navigateur. Ouvrez la conception Untitled_1, puis ouvrez les modèles relationnels et enfin le modèle nommé d'après votre connexion, comme indiqué ci-dessous :
- Cliquez avec le bouton droit sur le design Untitled_1 et cliquez sur l'élément de menu Enregistrer le design. Accédez à un dossier approprié pour enregistrer votre travail et donnez un nom de fichier à la conception. Cliquez sur le bouton Enregistrer une fois que tout est prêt :
À ce stade, nous avons maintenant (ce qu'Oracle appelle) un modèle relationnel qui est essentiellement un miroir du schéma de base de données relationnelle que nous venons d'importer. En fait, SQL Developer maintient ces deux éléments synchronisés afin que si le schéma de la base de données change, cela se reflète dans le modèle relationnel, et si des modifications sont apportées au modèle relationnel, elles peuvent être poussées (implémentées dans) le schéma de la base de données.
Ce modèle affichera toutes les tables (relations), les clés, les clés étrangères, les contraintes de vérification et les index qui peuvent ou non imposer l'unicité. Par exemple, la relation EMPLOYEES ci-dessous a une clé primaire EMPLOYEE_ID, trois clés étrangères (JOB_ID, MANAGER_ID et DEPARTMENT_ID) et une contrainte unique sur la colonne EMAIL :
La prochaine série d'étapes sur la page suivante explique comment poursuivre le processus d'ingénierie inverse pour produire un modèle logique.
Rétro-ingénierie du modèle de relation d'entité
À ce stade, nous avons rétro-conçu un schéma de base de données vers un modèle relationnel, ce qui est un processus assez simple. La dernière étape consiste à poursuivre l'ingénierie inverse pour produire le modèle Entity Relationship. Notez qu'Oracle appelle cela le "modèle logique".
- En revenant au navigateur de modèles de données, ouvrez les dossiers des modèles relationnels et du modèle logique comme indiqué ci-dessous :
- Cliquez avec le bouton droit sur le modèle relationnel (le nôtre s'appelle sfscdb_pdb2_hr) et sélectionnez Concevoir vers le modèle logique dans le menu contextuel, comme illustré ci-dessous :
- L'ingénieur du modèle logique la boîte de dialogue devrait apparaître comme ci-dessous. Chacun des tableaux et des références doit être vérifié. Chaque table sera mappée à une entité et chaque référence de clé étrangère doit être mappée à une relation entre les entités. Une fois que tous les éléments appropriés sont sélectionnés dans la fenêtre de gauche, cliquez sur le bouton Ingénieur pour créer le modèle logique (ER).
- Le nouveau modèle de relation d'entité doit apparaître comme indiqué ci-dessous. Par défaut, la "patte d'oie" ou la notation de Barker est utilisée.
Les détails des relations (qu'Oracle appelle de manière confuse « relations ») peuvent être affichés en double-cliquant sur la ligne de relation. Dans l'exemple ci-dessous, la relation entre les entités Employees et Jobs est ouverte. En spécifiant des phrases verbales pour les champs « Nom sur la source » et « Nom sur la cible », chaque relation peut être complètement spécifiée avec un grand niveau de détail.
La figure ci-dessous montre la relation complètement définie qui se lirait :
One JOB may be a job performed by One or More EMPLOYEES One EMPLOYEE must be performing One and Only One JOB
La notation par défaut pour le modèle ER est la notation Crow's Foot ou Barker. Pour changer la notation en notation Bachman ou Information Engineering, cliquez avec le bouton droit n'importe où sur le diagramme et mettez en surbrillance l'élément de menu Notation. Sélectionnez l'une des notations disponibles dans la liste qui s'affiche.
Vous pouvez ajouter un titre et d'autres détails au modèle ER à l'aide de l'outil Nouvelle note