Management of Information Technology - e-business Université de Lausanne Ecole des Hautes Etudes Commerciales (HEC) Cours de Bases de Données Avancées Uni. Lausanne TP1 - DBMAIN Cours de bases de données avancées TP1 – DBMAIN Autheur: Giovanni Camponovo BFSH1 - 1015 Lausanne - Switzerland - Tel. +41 21 692.3420 - Giovanni.Camponovo@unil.ch - http://www.hec.unil.ch/bda ALIGNMENT | BUSINESS MODEL | PROCESS | SERVICE | ENVIRONMENT | REQUIREMENTS 1a_introduction.ppt v1.0 (28.10.04) /yp
Management of Information Technology - e-business Uni. Lausanne Agenda Introduction DBMAIN Créer une base de données en 4 étapes avec DBMAIN 1. Générer le modèle conceptuel 2. Générer le modèle relationnel 3. Générer le modèle physique 4. Générer le code SQL pour créer la base de données La suite du projet 1a_introduction.ppt v1.0 (28.10.04) /yp
Management of Information Technology - e-business Uni. Lausanne Introduction Un outil d'ingénierie d’applications de bases de données. Conception de bases de données: Analyse conceptuelle, conception logique et physique Normalisation et optimisation Intégration de schémas Génération de code. Transformations: transformations de schémas, transformations de modèles. Conceptuel - Relationnel Rétro-ingénierie et compréhension de programmes Disponible Sur le site officiel de DB-MAIN: http://www.db-main.be/ Applications HEC > Programmation et Developpement > DB-MAIN 7.1a 1a_introduction.ppt v1.0 (28.10.04) /yp
1. Générer le modèle conceptuel Management of Information Technology - e-business Uni. Lausanne 1. Générer le modèle conceptuel Analyse et formalisation du domaine Identifier les concepts (entités, associations, attributs) du domaine Etapes Créer un nouveau projet (File>New Project) Schéma conceptuel (Product>New schema) Définir les entités (New>Entity Type) Nom Super-Types Définir les attributs (New>Attribute) Nom, Cardinalités, Type (Next Attribute) Attribut Complèxes (First Attribute + Next Attributes) Identifiant Définir les relations (New>Rel Type) Nom, Attributs Cardinalités Roles Documenting the schema Semantique (accessible à partir des entités, relations and attributs) 1a_introduction.ppt v1.0 (28.10.04) /yp
1. Générer le modèle conceptuel - Exemple Management of Information Technology - e-business Uni. Lausanne 1. Générer le modèle conceptuel - Exemple Enoncé La Bibliothèque de l’UNIL dispose d'ordinateurs interconnectés qui doivent permettre de gérer les emprunts. L'interview des bibliothécaires permet de déterminer les faits suivants: Un livre est caractérisé par son numéro dans la bibliothèque (identifiant), son titre, son éditeur et son (ses) auteur(s); Un livre peut exister dans la bibliothèque en un ou plusieurs exemplaires. Les exemplaires sont charactérisés par un numéro d’exemplaire (qui s’ajoute à l’identifiant du livre pour identifier un exemplaire de livre spécifique stocké dans la bibliothèque) Chaque abonné qui s'inscrit à la bibliothèque est charactérisé par un numéro (identifiant), un nom, un prénom et une adresse (composée, de rue ville et NPA). L’abonné a aussi un statut (étudiant, assistant, professeur), qui lui donnera le droit d'effectuer un nombre different d’emprunts (10, 50, 100) et de les garder pour une durée différente (30j, 60j, 90j). On veut pouvoir obtenir la liste des emprunts effectués par chaque abonné avec l’exemplaire emprunté, la date de l'emprunt et l’éventuelle date de restitution; Parmi les livres on distingue les thèses, qui ont les mêmes propriétés de livre, mais dont on veut aussi garder aussi le nom de l’institution qui l’a assigné et la composition du comité de thèse (sous forme d’une liste de noms). 1a_introduction.ppt v1.0 (28.10.04) /yp
1. Générer le modèle conceptuel - Exemple Management of Information Technology - e-business Uni. Lausanne 1. Générer le modèle conceptuel - Exemple 1a_introduction.ppt v1.0 (28.10.04) /yp
2. Générer le modèle relationnel Management of Information Technology - e-business Uni. Lausanne 2. Générer le modèle relationnel Générer une copie du modèle conceptuel (Product>CopyProduct) Transformer les schéma pour respecter les contraintes du relationnel Transformer les attributs Pas d’attributs multivalués Entités (Transform>Attribute>Entity Type) Pas d’attributs complèxes Désagregation (Transform>Attribute>Disagregation) Transformer les relations Associations n-n création d’une nouvelle entité (Transform>Rel-type>Entity Type) Association 1-n Clé étrangères (Transform>Rel-type>Attribute) Transformer les sous-typages Sous-types relation (Transform>Entity-Type>Is-a>Rel_Type) Transformations automatiques (à utiliser avec précaution) Transform > Relational Model 1a_introduction.ppt v1.0 (28.10.04) /yp
2. Générer le modèle relationnel - Example
3. Générer le modèle physique Management of Information Technology - e-business Uni. Lausanne 3. Générer le modèle physique Générer une copie du modèle relationnel (Product>CopyProduct) Créer les indexes (Access Key) Optimisations: normalisations éviter les indexes inutiles Créer les espaces de stockage (collections) 1a_introduction.ppt v1.0 (28.10.04) /yp
3. Générer le modèle physique - Example Management of Information Technology - e-business Uni. Lausanne 3. Générer le modèle physique - Example 1a_introduction.ppt v1.0 (28.10.04) /yp
Management of Information Technology - e-business Uni. Lausanne 4. Script SQL A partir du modèle physique (Transform>QuickSQL) Le script généré sera ensuite utilisé dans TOAD (qui sera l’objet du TP3) pour créer le schéma dans la base de données dans Oracle et notamment: Creation des tables Creation des contraintes Creation des indexes Etc. 1a_introduction.ppt v1.0 (28.10.04) /yp
4. Script SQL - example -- * Standard SQL generation * -- Database Section create database Biblio; -- Tables Section create table Livre ( Numero char(1) not null, Titre char(1) not null, Editeur char(1) not null, constraint ID_Livre primary key (Numero)); create table Abonne ( Nom char(1) not null, Prenom char(1) not null, Statut char(1) not null, Rue char(1) not null, Ville char(1) not null, NPA char(1) not null, constraint ID_Abonne primary key (Numero)); create table Auteur ( Auteur char(1) not null, constraint ID_Auteur primary key (Numero, Auteur)); create table ComiteDeThese ( Numero char(1) not null, NomExpert char(1) not null, constraint ID_ComiteDeThese primary key (Numero, NomExpert)); create table Emprunt ( NumEx char(1) not null, NumeroLivre char(1) not null, NumeroAbo char(1) not null, Date_Emprunt char(1) not null, Date_retour char(1), constraint ID_Emprunt primary key (NumEx, NumeroLivre, NumeroAbo, Date_Emprunt)); create table Exemplaire ( constraint ID_Exemplaire primary key (NumEx, Numero)); create table These ( Institution char(1) not null, constraint ID_These_LI primary key (Numero));
4. Script SQL - example ---- Constraints Section alter table Livre add constraint ID_Livre check(exists(select * from Auteur where Auteur.Numero = Numero)); check(exists(select * from Exemplaire where Exemplaire.Numero = Numero)); alter table Auteur add constraint EQU_Auteu_LI foreign key (Numero) references Livre; alter table ComiteDeThese add constraint REF_Comit_These foreign key (Numero) references These; alter table Emprunt add constraint REF_Empru_Abonn foreign key (NumeroAbo) references Abonne; alter table Emprunt add constraint REF_Empru_Exemp foreign key (NumEx, NumeroLivre) references Exemplaire; alter table Exemplaire add constraint EQU_Exemp_LI alter table These add constraint ID_These_LI -- Index Section create index ID_Livre on Livre (Numero); create index ID_Abonne on Abonne (Numero); create index ID_Auteur on Auteur (Numero, Auteur); create index ID_ComiteDeThese on ComiteDeThese (Numero, NomExpert); create index REF_Empru_Abonn on Emprunt (NumeroAbo); create index ID_Emprunt on Emprunt (NumEx, NumeroLivre, NumeroAbo, Date_Emprunt); create index ID_Exemplaire on Exemplaire (NumEx, Numero); create index EQU_Exemp_LI on Exemplaire (Numero); create index ID_These_LI on These (Numero);
Exercices: Exercice 6 – Modèle Conceptuel
Exercices: Exercice 6 – Modèle Relationnel
Questions ?