Vous êtes sur la page 1sur 3

AU 2022/2023

Resp : Hamid AKSASSE

TP8 : PL/SQL
Travail à faire :
Préparez un compte rendu par monôme dont lequel vous insérez les captures d’écrans (Sous SQL
Developer).
1- Dictionnaire de données

La base de données avec laquelle on va travailler, est conçue pour la gestion du transport aérien.
Elle contient les relations suivantes :

Relation VOL :

Nom attribut Signification Type - contrainte


NumVol Numéro d’identification d’un vol CHAR (6) clé primaire
Vildep Ville de départ VARCHAR (30)
Vilar Ville d’arrivée VARCHAR (30)
Dep_h Heure de départ (Heure) NUMBER (2)
Dep_nm Heure de départ (Minute) NUMBER (2)
Ar_h Heure d’arrivée (Heure) NUMBER (2)
Ar_mn Heure d’arrivée (Minute) NUMBER (2)
Ch_jour Jour d’arrivée NUMBER (1)

Relation PILOTE :

Nom attribut Signification Type - contrainte


NumPilote Numéro de matricule de pilote CHAR (4) clé primaire
Nom Nom du pilote VARCHAR (35)
Adresse Adresse de pilote limité à la ville VARCHAR (30)
Sal Salaire mensuel NUMBER (8,2)
Comm Commission mensuel NUMBER (8,2)
Embauche Date d’embauche Date

Relation Avion :

Nom attribut Signification Type - contrainte


NumAvion Numéro d’immatriculation d’un avion CHAR (4) clé primaire
Type Code désignant une famille d’avion VARCHAR (3) clé étrangère
AnnServ Année de mise en service NUMBER (4)
Nom Nom donné à un avion VARCHAR (50)
Nombre heures de vol depuis la mise en
NbhVol NUMBER (8)
service

Relation Affectation :

Nom attribut Signification Type - contrainte


CHAR (6) clé primaire, clé
Vol Numéro d’identification d’un vol
étrangère
Date_vol Date du vol sous le format jj.mm.aa Date clé primaire
Pilote Numéro de pilote CHAR (4) clé étrangère
Avion Numéro d’immatriculation d’avion CHAR(4) clé étrangère
Nbpass Nombre effectif de passagers NUMBER (3)
1
Relation APPAREIL :

Nom attribut Signification Type - contrainte


Code normalisé désignant une famille
codeType CHAR (3) clé primaire
d’avion
Nbplace Nombre de place NUMBER (3)
Design Nom de la famille d’avion VARCHAR (50)

2- Création des tables

a) Créez un utilisateur TP8_votre_nom?


b) Pour créer les relations précédentes, créez une connexion sous SQL Developer pour
l’utilisateur TP8_votre_nom et exécutez le code SQL suivant :
CREATE TABLE VOL(
NUMVOL char(6) not null primary key,
VILDEP varchar2(30) not null,
VILAR varchar2(30) not null,
DEP_H number(2) not null check (DEP_H between 00 and 23),
DEP_MN number(2) not null check (DEP_MN between 00 and 59),
AR_H number(2) not null check (AR_H between 00 and 23),
AR_MN number(2) not null check (AR_MN between 00 and 59),
CH_JOUR NUMBER(1) not null
);

CREATE TABLE APPAREIL(


CODETYPE char(3) not null primary key,
NBPLACE number(3) not null,
DESIGN varchar2(50) not null
);

CREATE TABLE AVION(


NUMAVION char(4) not null primary key,
ANNSERV number(4) not null,
NOM varchar2(50),
NBHVOL number(8) not null,
TYPE char(3) not null references APPAREIL(CODETYPE)
);

CREATE TABLE PILOTE(


NUMPILOTE char(4) not null primary key,
NOM varchar2(35) not null,
ADRESSE varchar2(30) not null,
SAL number(8,2) not null,
COMM number(8,2),
EMBAUCHE date not null
);

CREATE TABLE AFFECTATION(


VOL char(6) not null,
DATE_VOL date not null,
NBPASS number(3) not null,
PILOTE char(4) not null,
AVION char(4) not null,
primary key (VOL,DATE_VOL),
foreign key (VOL) references VOL(NUMVOL),
foreign key (PILOTE) references PILOTE(NUMPILOTE),
foreign key (AVION) references AVION(NUMAVION)
);
c) Exécutez le script inserts.sql pour insérer les données.
2
3- Quelques requêtes de prise en main de la base

a) Donnez la requête qui permet de lister les vols ayant un pilote qui habite dans la ville de
départ de vol ?
b) Donnez la requête qui permet de lister les moyennes des heures de vol par type d’avions
qui ont un nombre d’heures tout type confondu ?
c) Donnez la requête qui permet d’afficher les pilotes qui n’ont jamais affectés à un vol ?
d) Donnez la requête qui permet d’afficher la liste des vols qui correspondent à des allers-
retours entre deux villes ?
e) Créez la table TOTAVION qui comptabilise par avion le nombre de personnes
transportées et le nombre de vol effectués ?

4- Création des vues

a) Donnez la requête de création d’une vue (v_pilote), qui constitue une restriction de la table
pilote, aux pilotes qui habitent à Paris ?
b) Modifiez les salaires des pilotes habitant à Paris à travers la vue (v_pilote) ?
c) Donnez la requête qui permet la création de la vue (dervol) qui donne la date du dernier
vol réalisé pour chaque avion ?
d) Créez une vue pour vérifier lors de la modification ou de l’insertion d’un pilote dans la
table pilote les critères suivants :
- Un pilote habitant à paris a toujours une commission.
- Un pilote qui n’habite pas à paris n’a jamais de valeur de commission.
e) Créez une vue (nomcomm) qui permet de valider en saisie et mise à jour, le montant
commission d’un pilote selon les critères suivant :
- Un pilote qui n’est affecté à au moins un vol, ne peut pas avoir de commission
- Un pilote qui est affecté à au moins un vol peut recevoir une commission.

5- Compréhension des blocs PL/SQL

a) Donnez le scripte qui permet d’ajouter une commission de 500DH a chaque pilote
sélectionner avec le cureur C1 ?
b) Donnez le scripte qui permet de modifier le salaire d’un pilote avec les contraintes
suivantes :
-Si la commission est supérieure au salaire alors on rajoute au salaire la valeur de la
commission et la commission sera mise à la valeur nulle.
-Si la valeur de la commission est inférieure au salaire alors supprimer le pilote du
curseur.
c) Ecrire la procédure qui permet de vérifier l’existence d’un pilote dans la table pilote
sachant son numéro qui est passé en paramètre, ainsi le teste si le salaire est inférieur à
la commission ?
d) Calculer le nombre moyen de jours de repos entre deux affectations successives. (Utiliser
un curseur) et créer une table résultats pour stocker les résultats.

Vous aimerez peut-être aussi