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-ConceptionImporter 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