TP1 - DBMAIN BFSH Lausanne - Switzerland - Tel Université de Lausanne Ecole des Hautes Etudes Commerciales (HEC) Cours de Bases de Données Avancées ALIGNMENT | BUSINESS MODEL | PROCESS | SERVICE | ENVIRONMENT | REQUIREMENTS
Bases de Données Avancées – TP1 2 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
Bases de Données Avancées – TP1 3 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: –Applications HEC > Programmation et Developpement > DB-MAIN 7.1a
Bases de Données Avancées – TP 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)
Bases de Données Avancées – TP 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).
Bases de Données Avancées – TP Générer le modèle conceptuel - Exemple
Bases de Données Avancées – TP 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
Bases de Données Avancées – TP Générer le modèle relationnel - Example
Bases de Données Avancées – TP 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)
Bases de Données Avancées – TP Générer le modèle physique - Example
Bases de Données Avancées – TP 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.
Bases de Données Avancées – TP 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 ( Numero char(1) not null, 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 ( Numero char(1) not null, 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 ( Numero char(1) not null, NumEx char(1) not null, constraint ID_Exemplaire primary key (NumEx, Numero)); create table These ( Numero char(1) not null, Institution char(1) not null, constraint ID_These_LI primary key (Numero));
Bases de Données Avancées – TP Script SQL - example ---- Constraints Section alter table Livre add constraint ID_Livre check(exists(select * from Auteur where Auteur.Numero = Numero)); alter table Livre add constraint ID_Livre 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 foreign key (Numero) references Livre; alter table These add constraint ID_These_LI foreign key (Numero) references Livre; -- 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);
Bases de Données Avancées – TP1 14 Exercices: Exercice 6 – Modèle Conceptuel
Bases de Données Avancées – TP1 15 Exercices: Exercice 6 – Modèle Relationnel
Bases de Données Avancées – TP1 16 Questions ?