TP2 Conception de base de données

Transcription

TP2 Conception de base de données
Licence S5 Info- Conception de Base de Données
2016-2017
TP 2 : Conception de base de données
Vol
Pour les besoins de la gestion d’un aéroport, on dispose d’un logiciel de gestion de base de
données relationnelle. On dispose de la structure des tables et d’un jeu d’essai non exhaustif et
qui a pour but de rendre plus concret le sous-système d’information de l’aéroport.
AVION
Immatriculation
F-BORG
D-ABEN
D-EC123
D-B140
Date_achat
Nom_T
12-MAI-99
25-DEC-96
01-AVR-89
15-OCT-98
Sportavia
Boeing 737
Heinkel
Boeing 737
INTERVENTION
Num_int
Immatriculation Objet
Date
SSN_M
Heure_debut
Heure_ fin
1196
520
575
230
2320
F-BORG
D-ABEN
D-ABEN
D-EC123
D-B140
12-MAR-2003
26-MAI-2005
27-MAI-2005
12-OCT-2012
11-SEP-2008
15403990252
17812663215
17812663215
26904663212
26904663212
0930
0800
0700
0600
0800
1530
1700
1000
2330
1100
Control
Panne
Control
Panne
Panne
TYPE AVION
Nom_T
Boeing 737
Heinkel
Sportavia
Nom_constructeur
Nb_places
Boeing
Heinkel Flugzeugwerke
René Fournier
200
2
1
MECANICIEN
SSN_M
15403990252
17812663215
26904663212
Nom_M
Marx
Laroue
Liane
Adresse_M
45 rue des pins 13010 Marseille
12 rue des remparts 84000 Avignon
78 avenue des mers 13006 Marseille
Numero_tel
0658991230
0695123078
0676306289
PILOTE
SSN_P
19603657812
29032145678
17862365413
Numero_brevet
Nom_P
Adresse _P
12
36
85
Joe
Martin
Tricon
6 rue des martyrs 69100 villeurbanne
5 avenue des ports 13008 Marseille
8 rue des bleus 13015 Marseille
VOL
Nom_T
Boeing 737
Sportavia
SSN_P
29032145678
19603657812
Nombre_vols
2
100
1. Pourquoi le nom du type de l’avion est-il présent dans plusieurs tables ?
2. Déterminer le modèle conceptuel des données.
1
Licence S5 Info- Conception de Base de Données
2016-2017
3. Générer le script SQL et l’exécuter afin de créer les différentes tables. Vous nommerez
votre base de données « AEROPORT». Vous avez également la possibilité de créer
directement vos tables de base de données sous phpMyAdmin.
4. Procédez à la rétro-Conception en générant le modèle entité association à partir de vos
tables de la base de données « AEROPORT » onglet Rétro-ConceptionImporter les
tables et construisez le MCD.
5. Comparez le modèle obtenu par rapport au modèle que vous avez défini à la question 2).
Que pensez-vous de cette manière de procéder ?
6. Vérifier et exécuter le script d’insertion « script_aerop .sql» correspondant au jeu d’essai
qui vous est fourni. ATTENTION au type des données que vous choisissez et au nom des
colonnes.
7. A l’aide du langage SQL, vous interrogerez la base de données pour extraire :
a)
b)
c)
d)
L’avion dont la durée d’intervention est inférieure à 4h.
La liste des pilotes qui habitent soit à Marseille soit à Villeurbanne.
Le numéro de téléphone des mécaniciens qui sont intervenus après 08h du matin.
Le nombre de vols effectués par le pilote « Joe ».
e) Le nombre d’interventions réalisées par le mécanicien « Laroue ».
f) Le type d’interventions effectuées sur l’avion « Boeing 737 ».
g) L’avion qui a été le moins contrôlé.
h) Toutes les interventions opérées sur les avions pilotés par le pilote « Martin ».
i) Le nom des avions qui n’ont pas été contrôlés pour une panne
8. Les besoins pour la gestion de l’aéroport ont évolué faisant apparaître de nouvelles
données qui doivent être prises en considération dans votre base de données:
 Chaque avion possède un propriétaire. On doit connaître le nom, l’adresse et le
numéro de téléphone du propriétaire.
 La maintenance des avions est assurée par les mécaniciens de l’aéroport. Par
sécurité, les interventions sont toujours effectuées par deux mécaniciens (l’un
répare, l’autre vérifie).
Quel est l’impact de ces nouvelles données sur votre base de données ?
9. Ecrire une requête SQL permettant de déterminer tous les propriétaires d’un avion ayant
déjà subi au moins une intervention.
10. Déterminer le nom des mécaniciens qui ont effectué des réparations sur l’avion ayant
l’immatriculation « D-EC123 ».
Rétro-ingénierie à partir du code DDL
On considère une application utilisant une base de données relationnelle. On ne dispose
plus que des fragments de code ci-après, sans documentation . On se propose de
reconstituer le schéma logique complet et un schéma conceptuel de la base de données.
create table EMPLOYE (
NUME char(6) not null,
NOM char(30) not null,
ADRESSE varchar(60),
primary key(NUME));
create table NEGO_VENTE (
DATEN date not null,
DESTIN char(20) not null,
RESP char(6) not null,
OBJET char(10) not null,
CONSTRAINT RESP
2
Licence S5 Info- Conception de Base de Données
2016-2017
create table HISTORIQUE (
CODE_E char(6) not null,
STAT varchar(60) not null,
DESCR varchar(200) not null,
primary key(CODE_E),
CONSTRAINT CODE_E
FOREIGN KEY (CODE_E)
REFERENCES EMPLOYE(NUME)
)
ENGINE=InnoDB;
FOREIGN KEY (RESP)
REFERENCES EMPLOYE(NUME),
CONSTRAINT DESTIN
FOREIGN KEY (DESTIN)
REFERENCES PROJET(NOMP),
CONSTRAINT OBJET
FOREIGN KEY (OBJET)
REFERENCES AFFAIRE(NUMA)
)
create unique index XPRO
on PROJET(NOMP);
create unique index XEMP
on EMPLOYE(NUME);
create unique index XHIS
on HISTORIQUE(CODE_E);
create unique index XTECH
on AGENT_CONTRACT (NUME);
create unique index XNEG
on NEGO_VENTE (DATEN,DESTIN,
RESP,OBJET);
create unique index XAFFAIRE
on AFFAIRE(NUMA);
create table PROJET (
NOMP char(20) not null,
STAFF char(110) not null,
primary key(NOMP));
create table AFFAIRE (
NUMA char(10) not null,
NOMA varchar(25) not null,
primary key(NUMA));
create table AGENT_CONTRACT (
NUME char(6) not null,
QUALIF char(10),
DATE_E date not null,
primary key(NUME),
CONSTRAINT NUME
FOREIGN KEY (NUME)
REFERENCES EMPLOYE(NUME)
)
ENGINE=InnoDB;
procedure VI-PROJECT(NOM_P:char[20])
variable section
MEMBRES :array[1:11] of
record DATE_DEBUT : date;
NE : char(6);
end-record;
NOM : char(30);
I : integer;
create view EMP_HIST(NE)
as select NUME from EMPLOYE
where NUME not in
(select CODE_E from HISTORIQUE);
. . .
select 'Erreur : ', NE
from EMP_HIST;
body section
. . .
select STAFF into :MEMBRES from PROJET
where NOMA = :NOM_A;
if SQLCODE = 0 then
select NOM into :NOM from EMPLOYE
where NUME = :MEMBRES[1].NE;
display("Chef_de : ",NOM);
for I := 2 to 10 while MEMBRES[I].NE <> 0 do
select NOM into :NOM from EMPLOYE
where NUME = :MEMBRES[I].NE;
display("Assistant : ",NOM);
end-for
else
...
end-if;
[
end-procedure VI-PROJECT;
3
Licence S5 Info- Conception de Base de Données
2016-2017
1. Proposer un modèle relationnel à partir de l’analyse du DDL (Data Definition Language)
relatif aux tables, aux index (schéma physique des données) et en prenant en
considération les informations qui sont fournies dans la vue EMP_HIST et la procédure
VI-PROJECT. Créer vos tables.
2. Procédez à la rétro-Conception pour produire le schéma conceptuel des données.
4

Documents pareils