Vous êtes sur la page 1sur 16

Universit de Lausanne

Ecole des Hautes Etudes Commerciales (HEC)


Cours de Bases de Donnes Avances

TP1 - DBMAIN

BFSH1 - 1015 Lausanne - Switzerland - Tel. +41 21 692.3420 - Giovanni.Camponovo@unil.ch - http://www.hec.unil.ch/bda

Agenda
Introduction
DBMAIN

Crer une base de donnes en 4 tapes avec DBMAIN


1. Gnrer le modle conceptuel
2. Gnrer le modle relationnel
3. Gnrer le modle physique
4. Gnrer le code SQL pour crer la base de donnes

La suite du projet

Bases de Donnes Avances TP1

Introduction

Un outil d'ingnierie dapplications de bases de donnes.


Conception de bases de donnes:

Analyse conceptuelle, conception logique et physique


Normalisation et optimisation
Intgration de schmas
Gnration de code.

Transformations: transformations de schmas, transformations de modles.


Conceptuel - Relationnel

Rtro-ingnierie et comprhension de programmes

Disponible
Sur le site officiel de DB-MAIN: http://www.db-main.be/
Applications HEC > Programmation et Developpement > DB-MAIN 7.1a

Bases de Donnes Avances TP1

1. Gnrer le modle conceptuel


Analyse et formalisation du domaine
Identifier les concepts (entits, associations, attributs) du domaine
Etapes
Crer un nouveau projet (File>New Project)
Schma conceptuel (Product>New schema)
Dfinir les entits (New>Entity Type)
Nom
Super-Types

Dfinir les attributs (New>Attribute)


Nom, Cardinalits, Type (Next Attribute)
Attribut Complxes (First Attribute + Next Attributes)
Identifiant

Dfinir les relations (New>Rel Type)


Nom, Attributs
Cardinalits
Roles

Documenting the schema


Semantique (accessible partir des entits, relations and attributs)

Bases de Donnes Avances TP1

1. Gnrer le modle conceptuel - Exemple


Enonc
La Bibliothque de lUNIL dispose d'ordinateurs interconnects qui doivent
permettre de grer les emprunts. L'interview des bibliothcaires permet de
dterminer les faits suivants:
Un livre est caractris par son numro dans la bibliothque (identifiant), son titre, son
diteur et son (ses) auteur(s);
Un livre peut exister dans la bibliothque en un ou plusieurs exemplaires. Les
exemplaires sont charactriss par un numro dexemplaire (qui sajoute lidentifiant
du livre pour identifier un exemplaire de livre spcifique stock dans la bibliothque)
Chaque abonn qui s'inscrit la bibliothque est charactris par un numro (identifiant),
un nom, un prnom et une adresse (compose, de rue ville et NPA). Labonn a aussi
un statut (tudiant, assistant, professeur), qui lui donnera le droit d'effectuer un nombre
different demprunts (10, 50, 100) et de les garder pour une dure diffrente (30j, 60j, 90j).
On veut pouvoir obtenir la liste des emprunts effectus par chaque abonn avec
lexemplaire emprunt, la date de l'emprunt et lventuelle date de restitution;
Parmi les livres on distingue les thses, qui ont les mmes proprits de livre, mais dont
on veut aussi garder aussi le nom de linstitution qui la assign et la composition du
comit de thse (sous forme dune liste de noms).

Bases de Donnes Avances TP1

1. Gnrer le modle conceptuel - Exemple

Bases de Donnes Avances TP1

2. Gnrer le modle relationnel


Gnrer une copie du modle conceptuel (Product>CopyProduct)
Transformer les schma pour respecter les contraintes du relationnel
Transformer les attributs
Pas dattributs multivalus Entits (Transform>Attribute>Entity Type)
Pas dattributs complxes Dsagregation (Transform>Attribute>Disagregation)

Transformer les relations


Associations n-n cration dune nouvelle entit (Transform>Rel-type>Entity Type)
Association 1-n Cl trangres (Transform>Rel-type>Attribute)

Transformer les sous-typages


Sous-types relation (Transform>Entity-Type>Is-a>Rel_Type)

Transformations automatiques ( utiliser avec prcaution)


Transform > Relational Model

Bases de Donnes Avances TP1

2. Gnrer le modle relationnel - Example

Bases de Donnes Avances TP1

3. Gnrer le modle physique


Gnrer une copie du modle relationnel (Product>CopyProduct)
Crer les indexes (Access Key)
Optimisations:
normalisations
viter les indexes inutiles

Crer les espaces de stockage (collections)

Bases de Donnes Avances TP1

3. Gnrer le modle physique - Example

Bases de Donnes Avances TP1

10

4. Script SQL
A partir du modle physique (Transform>QuickSQL)
Le script gnr sera ensuite utilis dans TOAD (qui sera lobjet du TP3) pour crer
le schma dans la base de donnes dans Oracle et notamment:

Creation des tables


Creation des contraintes
Creation des indexes
Etc.

Bases de Donnes Avances TP1

11

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 (
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 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));

create table Auteur (


Numero char(1) not null,
Auteur char(1) not null,
constraint ID_Auteur primary key (Numero, Auteur));

Bases de Donnes Avances TP1

12

4. Script SQL - example


---- Constraints Section

-- Index Section

alter table Livre add constraint ID_Livre


check(exists(select * from Auteur
where Auteur.Numero = Numero));

create index ID_Livre


on Livre (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;

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);

alter table Emprunt add constraint REF_Empru_Exemp


foreign key (NumEx, NumeroLivre) references
Exemplaire;

create index ID_Exemplaire


on Exemplaire (NumEx, Numero);

alter table Exemplaire add constraint EQU_Exemp_LI


foreign key (Numero) references Livre;

create index EQU_Exemp_LI


on Exemplaire (Numero);

alter table These add constraint ID_These_LI


foreign key (Numero) references Livre;

create index ID_These_LI


on These (Numero);

Bases de Donnes Avances TP1

13

Exercices: Exercice 6 Modle Conceptuel

Bases de Donnes Avances TP1

14

Exercices: Exercice 6 Modle Relationnel

Bases de Donnes Avances TP1

15

Questions

?
Bases de Donnes Avances TP1

16