TP AMC - Modélisation, Conception, Réalisation

Transcription

TP AMC - Modélisation, Conception, Réalisation
TP AMC - Modélisation, Conception, Réalisation
I. Mougenot & T. Libourel & C. Pierkot
2009-2010
L'objectif est de tester dans le logiciel PowerAMC les éléments suivants :
Outils graphiques permettant de représenter un modèle conceptuel (formalismes E/A, UML).
Passage du modèle objet à un modèle relationnel de données (celui-ci est désigné en fait sous le nom modèle physique
de données (MPD) par PowerAMC).
Génération d'un script de création du schéma de la base de donnée associée à un MPD et un SGBD cible.
Génération de données de test.
Transformation inverse ( reverse engineering ), passant d'un code SQL de création de schéma au MPD puis au MCD
associé.
1. Modélisation avec PowerAMC
Attention il y a plusieurs versions d'AMC disponibles, tester avec la plus récente (mais il y aura peut-être quelques
variations dans les options) On démarre une session Windows puis on atteint par Programmes / Sybase / PowerAMC12 /le
programme PowerAMC. L'interface de ce logiciel est classique : une seule fenêtre, des menus contextuels utilisant le bouton
droit, des browsers d'objets organisés de façon strictement hiérarchique (+ pour développer un niveau).
1.1
Classe et Associations binaires simples
La modélisation à réaliser correspond au texte suivant : Un ensemble de personnes identiées par leur nom, ayant un
prénom, un age et une adresse sont suceptibles d'être catégorisées en buveurs. On s'intéresse, en eet, aux bières que ces
personnes boivent ou pas. Une bière est identiée par un nom. Elle possède un conditionnement. Les bières sont proposées
dans des bars.
1. Commencez par créer un nouveau MOO (langage Analyse). Dans le menu contextuel, on trouve l'item Option du
modèle, Paramètres du modèle, il faut :
Cocher Imposer la cohérence et type de données pour les domaines/attributs
Choisir un type de données par défaut dans la liste, par exemple chaîne de caractères.
Enregistrer ces choix comme les choix par défaut pour les MOO suivants.
2. Pour ce premier modèle, un buveur boit ou ne boit pas des bières. Les bières sont bues ou pas par des buveurs.
(a) Avec la palette d'outils, créez les classes Buveur, Biere avec leurs attributs. Pour les attributs, accéder à leurs
propriétés particulières (en double cliquant sur l'attribut sélectionné) comme persistance et notion d'identication
(primaire)
(b) Créez l'association Boit et compléter celle-ci avec les bonnes multiplicités, les noms de rôles, qu'on peut modier
par double-clic sur le lien.
(c) Dans le menu contextuel du MOO, on trouve l'item préférences d'achage :
Sous-item Objets / Classe : On ache tous les attributs, les types avec leur domaine, le champ obligatoire ou
non, on indique si l'attribut fait partie ou non d'un identiant.
Enregistrez ces choix comme les choix par défaut pour les MOO suivants.
(d) Sauvez ce MOO.
(e) Vérier le modèle (menu Outils) - tester les diverses possibilités.
(f) Créez le MPD associé avec la commande Générer un modèle physique du menu Outils. Vous choisirez comme
SGBD Oracle 10g .
(g) Dans le menu contextuel du MPD aché, oberver les Options du modèle :
Choisissez de cocher Imposer la cohérence avec Types de données
Choisissez de cocher Code unique et Migrer les colonnes.
Choisissez de cocher Clé primaire pour le lien par défaut
Enregistrez ces choix comme les choix par défaut pour les MPD suivants.
1
M1 IFPRU 2009-2010
2
(h) Dans le menu contextuel du MPD aché, on trouve l'item Préférences d'achage. Faites des choix que vous
sauverez.
(i) On passe du MPD à un script de dénition de schéma en utilisant la commande Générer une base de données du menu SGBD. Vous éditerez le chier sql engendré pour bien noter les choix faits.
(j) Pour ce qui concerne des instances, avant d'exécuter les outils, il faut donner une valeur au nombre de tuples de
chaque table. Pour celà, vous cliquez sur les tables pour renseignez le champ Nombre, et cocher Générer.
i. Commande Estimez la taille de la base du menu SGBD : Estimez la taille de la base avec 100 buveurs, 100
bières, et un buveur buvant en moyenne 10 bières diérentes. Vous noterez que cette estimation n'engendre
pas de script de création de tuples.
ii. Une application utile consiste à engendrer une instance pour faire des tests (taper des INSERT est assez lourd
quand les données sont nombreuses !).
Utilisez la commande Générer les données de test du menu SGBD. Dans la fenêtre qui s'ouvre choisissez
l'item Nombre de Lignes pour dénir le nombre de tuples que vous souhaitez obtenir par génération aléatoire
dans chaque table.
Par exemple : 4 buveurs, 4 bières, et 12 tuples dans la table Boit. (un buveur boit en moyenne 3 bières).
Vous éditerez le chier sql engendré pour bien noter les choix faits. Que remarquez-vous ?
1.2
Ajout de contraintes simples (domaines) aux attributs
i. Dans un nouveau MOO, que vous créez par fusion à partir d'un MOO de buveurs existant, (Outils :
Fusionner des modèles), vous allez ajouter de nouveaux attributs et modier les types de données associés
aux attributs existants :
A. Avec la commande Domaines... du menu Modèle, créez les modèles suivants :
MesAges entier puis en double-cliquant dénir la contrainte intervalle dans [0,100]
MesContenances ottant et dénir la contrainte d'appartenance à {25, 33.3, 50, 100}.
MesBrasseries chaîne de caractères avec la contrainte d'appartenance à {'Duyck', 'Sleeman', 'Labatt'}.
B. Modiez alors la classe bière comme suit : Une bière a un nom, une contenance dont le type est MesContenances,
une brasserie dont le type est MesBrasseries.
C. Modiez la classe buveur comme suit : un buveur est identié par une clé numérique entière NumBuv. Il a
un nom, un prénom, un age de type MesAges, une adresse.
D. Recommencez la suite MOO -> MPD -> script de création de la base -> script de génération de données
tests . (Vous pouvez tester diverses options).
E. Si vous avez le temps, observez les diérences de modèle relationnel engendré (les scripts) suivant que
l'on choisit les SGBD cibles par exemple : MySQL (foreign keys ou non ?), SQL server (SQL standard ?),
Postgresql.
1.3
Ajout de spécialisation-généralisation
Les buveurs peuvent être catégorisés par leur age (mineur, majeur). On ajoutera dans la sous-classe mineur un
attribut seuil xant la consommation possible à 2 bières maximum et dans la sous classe majeur un attribut type
de buveur (moyen, gros).
i. Recommencez la suite MOO -> MPD -> script de création de la base en jouant sur les paramètres possibles relatifs à la génération des tables associées aux sous-classes et superclasse (cf. politique choisie pour la
traduction spécialisation-généralisation)
1.4
Ajouts de références
On peut utiliser le MPD pour ajouter des contraintes d'intégrité référentielles.
i. On dénit le modèle des nouveaux buveurs comme suit :
Un buveur est identié par son nom et son prénom. Il a une adresse.
Une bière est identiée par son code. Elle possède un nom de bière et un nom de brasserie qui forment une
clé. Elle possède un conditionnement.
Un buveur boit des bières, au moins une. Les bières sont bues par des buveurs, au moins 1.
Un buveur préfère certaines bières, au moins une. Il donne un surnom a chacune de ses bières préférées.
Toute bière n'est pas nécessairement préférée par un buveur.
M1 IFPRU 2009-2010
3
Dénissez le MOO.
ii. Engendrez le MPD pour le système Oracle.
iii. Ajoutez alors la contrainte Chacune des bières qu'un buveur préfère est une bière qu'il boit en ajoutant
une référence dans le MPD.
iv. Engendrez les scripts pour Oracle.
Reprenez ce modèle, nouveaux buveurs bis avec les modications suivantes :
Un buveur est identié par son nom et son prénom. Il a une adresse.
Une bière est identiée par son code. Elle possède un nom de bière et un nom de brasserie qui forment une
clé. Elle possède un conditionnement.
Un buveur boit des bières, au moins une. Les bières sont bues par des buveurs, au moins 1.
Un buveur a au plus une bière préférée à laquelle il donne un surnom. Toute bière n'est pas nécessairement
préférée par un buveur.
Dénissez le MOO, le MPD, ajoutez la contrainte Chacune des bières qu'un buveur préfère est une bière
qu'il boit en ajoutant une référence dans le MPD. Puis engendrez les scripts pour Oracle. Constatations ?
1.5
Les rapports
Là où vous pouvez faire preuve de grande productivité c'est dans la génération de rapports complets.
Choisissez le Menu Fichier / Nouveau / Rapport multimodèles.
Le nom du modèle sera celui d'un des modèles que vous avez créé précédemment, par exemple un MPD (un modèle
relationnel créé par Power AMC). Vous choisirez ensuite un modèle de rapport et une langue.
On peut ensuite modier le modèle choisi en incorporant de nouveaux éléments, en modiant/supprimant certains
éléments. Ceci crée votre "modèle" de rapport.
L'instance est visualisable en sélectionnant le menu Fichier / Aperçu avant impression. ou produire du RTF ou
du HTML. Visualisez, mais n'imprimez pas ! car certains rapports comportent près d'une centaine de pages.
1.6
Ingéniérie inverse
Le reverse engineering consiste étant donné un script SQL recréer le schéma conceptuel pour un SGBD.
i. Prenez un des scripts que vous avez utilisé dans les TP précédents.
ii. Sélectionnez l'item Reverse Engineering / Base de Données dans le menu Fichier. Vous sélectionnerez le chier
source (il peut y en avoir plusieurs), les options qui vont bien, puis vous produirez le MPD, et les M00, MCD
associés.
2. Test d'implantation des références avec AMC et Oracle
Reprenons l'association Buveur - Boit - Bière En modiant les multiplicités de l'association, successivement
0..* - 0..*, 1..1 - 0..*, 0..1 - 0..*, ... vous exécuterez :
i. La génération (regénération) du MPD associé.
ii. L'observation du code SQL associé à chaque table du MPD. Il n'est pas nécessaire d'engendrer le code SQL
de création de la base pour le SGBD cible. Il sut de consulter les propriétés de la table, et d'utiliser l'onglet
approprié (Aperçu) qui contient le code SQL associé à l'objet.
iii. Vous testerez les conséquences de la modication du type des références entre tables. Suivant qu'on impose
la suppression en cascade ou la modication en cascade, suivant que les références sont gérées de manière
déclarative (par des contraintes de type foreign key), ou par des triggers.
Attention, à chaque modication de propriété dans le modèle physique, il faut regénérer les parties du
modèle concernée : clés, triggers, ... Utilisez le menu Outils / Regénérer des objets / Regénérer des
... Pour créer des triggers sur une table choisir le modèle de trigger adapté. Pour observer le code des
triggers associés à une référence prise en compte par des triggers, il faut aller consulter les diérents triggers
associés dans les 2 tables concernées par la référence ( mère et lle dans la terminologie amc). On consulte les
propriétés de la table, onglet trigger, on sélectionne un trigger, on consulte ses propriétés, onglet aperçu.
iv. Il me parait intéressant de tester la qualité du code engendré par AMC. Pour plusieurs versions du modèle
physique, pour chaque type de gestion de référence (déclarative ou trigger), vous conserverez le code SQL de
création de la base Oracle, le code PL/SQL des triggers éventuels, le code SQL d'une génération d'un jeu de
données.
M1 IFPRU 2009-2010
4
3. Les ultimes buveurs
On dénit le modèle des ultimes buveurs comme suit :
Un buveur est identié par son code numérique entier. Il a un nom, un age etc.
Une bière est identiée par son code numérique. Elle possède un nom de bière , une contenance et un type à
choisir parmi 'pression', 'bouteille', 'canette'.
Un bar est identiée par son code numérique. Il a pour attributs supplémentaires son nom, le nom de la ville,
le nom de la rue où il est situé, et le code postal.
Un buveur boit des bières, au moins une. Les bières sont bues par des buveurs, au moins 1.
Un buveur a au plus une bière préférée à laquelle il donne un surnom. Toute bière n'est pas nécessairement
préférée par un buveur.
Un buveur fréquente des bars.
Un bar sert des bières. Chacune de ces bières servies a un prix de vente.
i. Faites le MOO associé.
ii. Engendrez le modèle relationnel de données version Oracle10g (c-a-d le MPD pour AMC). Sauvez.
iii. Modier le modèle relationnel engendré pour y incorporer des contraintes diverses (soit sous forme déclarative,
soit sous forme de triggers) comme :
A. Pour chaque référence il faut que la suppression dans la table mère induise la suppression dans la
table lle .
B. (C1) La bière qu'un buveur préfère est une bière qu'il boit.
iv. Pour chaque table du MPD, renseignez la case nombre. Elle correspond au nombre de tuples que vous estimez
être celui d'une instance de la base engendrée. Consultez la taille estimée de la Base de Données.
v. Engendrez un jeu de test, et conservez le script pour l'utiliser avec Oracle.
vi. Engendrez un rapport avec la commande Modèles/Modèle de rapport. Vous engendrerez un nouveau rapport.
Ceci crée le modèle. L'instance est visualisable en sélectionnant Aperçu ou engendrez du HTML. Visualisez,
mais n'imprimez pas ! car certains rapports comportent près d'une centaine de pages.

Documents pareils