Vous êtes sur la page 1sur 5

STI

Classe : 4ème année Sciences de l’informatique

Série 6 : Manipulation d’une base de

données relationnelle

---------------------------------

Nom du Prof : Mr. Hatem ROMDHANE

S
Objectifs :
• Insertion de lignes
• Modification de lignes
• Suppression de lignes

Exercice 1 30 min
Afin de gérer les opérations de don de sang au niveau des différents centres de
transfusion sanguine, on se propose d’utiliser la base de données simplifiée intitulée
"DonSang" décrite par la représentation textuelle suivante :

CENTRE (CodeCentre, NomCentre, AdrCentre, TelCentre)


DONNEUR (CIN, NomPrenom, DateNaiss, Genre, GS, TelDonn)
TYPEDON (CodeType, LibType)
DON (CIN#, DateDon, CodeCentre#, CodeType#, Quantite)

Description des colonnes des tables


Nom de la Nom de la
Description de la colonne Description de la colonne
colonne colonne
CodeCentre Code d’un centre Genre Genre d’un donneur ("M" ou "F")
NomCentre Nom d’un centre GS Groupe sanguin d’un donneur
AdrCentre Adresse d’un centre TelDonn Téléphone d’un donneur
TelCentre Téléphone d’un centre CodeType Code du type d’un don
CIN Numéro CIN d’un donneur LibType Libellé du type d’un don
NomPrenom Nom et prénom d’un donneur DateDon Date d’un don
DateNaiss Date de naissance d’un donneur Quantite Quantité donnée en ml

1) Compléter le tableau ci-dessous par la clé primaire et les clés étrangères de la table
"DON"
Clé primaire Clés étrangères
……………………………………………… ………………………………………………

1
2) Pour chacune des affirmations ci-dessous, mettre dans la case correspondante la
lettre « V » si la réponse est correcte ou la lettre « F » dans le cas contraire.
a) Pour s’assurer que les numéros de téléphone des donneurs ne se répètent pas,
on utilise la requête SQL :
ALTER TABLE Donneur ADD CONSTRAINT TelDonn DISTINCT
ALTER TABLE Donneur ADD CONSTRAINT TelDonn UNIQUE
ALTER TABLE Donneur ADD CONSTRAINT PRIMARY KEY (TelDonn)

b) Pour garantir que le champ "Genre" de la table "Donneur" n’accepte que les
valeurs suivantes "M" ou "F", on utilise la requête SQL :
ALTER TABLE Donneur ADD CONSTRAINT CHECK (Genre = "M" OR Genre = "F")

ALTER TABLE Donneur ADD CONSTRAINT CHECK (Genre IN ("M","F"))


ALTER TABLE Donneur MODIFY Genre CHECK (Genre = "M" OR Genre = "F")

3) En supposant que les tables "CENTRE", "DONNEUR" et "TYPEDON" sont déjà


créées, écrire la requête SQL permettant de créer la table "DON" en tenant compte
de la description suivante :
Nom de la colonne Type Taille Contrainte
CIN Chaîne 8
DateDon Date Obligatoire
CodeCentre Chaîne 10
CodeType Chaîne 10
Obligatoire
Quantite Entier 3
400 ≤ Quantite ≤ 600

4) L’administrateur de la base de données décide d’ajouter une nouvelle colonne à la


table "DONNEUR" intitulée "Poids" de type entier de taille 3 et qui doit être ≥ 50.
Ecrire la requête SQL correspondante.

5) On souhaite ajouter à la table « DONNEUR » la liste des donneurs suivants :


CIN NomPrenom DateNaiss Genre GS TelDonn
05545499 Salmen Tarek 27/05/2003 M AB+ 55774411
07887711 Korbi Bilel 18/08/2000 F O- 22555444
05669933 Beji Lamia 05/03/1988 F A+ 98663663
Ecrire la/les requête(s) correspondante(s) :

2
6) Le tableau suivant représente les informations relatives à un nouveau donneur :
CIN NomPrenom DateNaiss Genre GS TelDonn
05545499 Jerbi Lobna 13/08/2007 F A+ 20300300
En validant l’opération d’insertion de cette nouvelle ligne à la table « DONNEUR » un
message d’erreur s’affiche en interdisant cette opération. Expliquer pourquoi ?
7) À la suite d’une erreur de saisie lors de l’ajout du donneur ayant le numéro de CIN
'07887711', on souhaite modifier le groupe sanguin par 'B+'. Ecrire la requête SQL
correspondante.
8) Ecrire la requête SQL permettant de supprimer tous les dons ayant une quantité
inférieure à 500 ml.

Exercice 2 30 min
Afin de gérer les victoires des courses de la Formule1, on se propose d’utiliser la base
de données simplifiée intitulée "GestionFormule1" décrite par la représentation tex-
tuelle suivante :
MARQUE (CodeMarq, LibMarq)
PILOTE (IdPilote, NomPilote, DateNaiss)
CIRCUIT (CodeCircuit, NomCircuit, PaysCircuit, LongCircuit, NbTours)
VICTOIRE (IdPilote#, CodeCircuit#, Annee, CodeMarq#, TempsRealise)

Description des colonnes des tables


Nom de la Nom de la
Description de la colonne Description de la colonne
colonne colonne
CodeMarq Code d’une marque d’automo- NomCircuit Nom d’un circuit
bile (Champ obligatoire)
LibMarq Marque d’une automobile PaysCircuit Pays d’un circuit
Longueur d’un circuit exprimée
IdPilote Identifiant d’un pilote LongCircuit
en kilomètre
NomPilote Nom et prénom d’un pilote NbTours Nombre de tours d’un circuit
DateNaiss Date de naissance d’un pilote Annee Année d’une compétition
Temps réalisé dans une course
CodeCircuit Code d’un circuit TempsRealise
par le pilote vainqueur

1) On vient de créer un nouveau circuit. Ecrire la requête SQL correspondante permet-


tant d’ajouter ce nouveau circuit à la table "CIRCUIT" en tenant compte des infor-
mations suivantes :
CodeCircuit NomCircuit PaysCircuit LongCircuit NbTours
RED850 Red Bull Ring Autriche 4.318 71

3
2) On souhaite modifier la longueur et le nombre de tours du circuit ayant le code
"JED520" en attribuant les nouvelles valeurs suivantes : 6.174 Km et 50 tours. Ecrire
la requête SQL correspondante.
3) Afin d’alléger la table "VICTOIRE", on souhaite supprimer toutes les victoires qui
ont été enregistrées avant l’année 1950. Ecrire le requête SQL correspondante.
4) Ci-dessous un extrait du contenu des différentes tables de la base de données :

Table MARQUE Table PILOTE


CodeMarq LibMarq IdPilote NomPilote DateNaiss
RB001 Red Bull P001 Max Verstappen 30/09/1997
ME008 Mercedes P002 Oscar Piastri 06/04/2001
FE002 Ferrari P003 Fernando Alonso 29/07/1981

Table CIRCUIT
CodeCircuit NomCircuit PaysCircuit LongCircuit NbTours
JID520 Jiddah Corniche Circuit Arabie Saoudite 6.174 50
BAK250 Baku City Circuit Azerbaïdjan 6.003 51
MON120 Circuit de Monaco Monaco 3.337 78
RED850 Red Bull Ring Autriche 4.318 71

Table VICTOIRE
IdPilote CodeCircuit Annee CodeMarq TempsRealise
P001 MON120 2022 RB001 1:27:48
P003 BAK250 2023 FE002 1:29:32
P001 JED520 2023 RB001 1:26:12
P002 MON120 2021 FE002 1:32:48

L’exécution de chacune des requêtes suivantes génère une erreur. Indiquer pour
chaque requête la contrainte d’intégrité non respectée et justifier la réponse.
a) INSERT INTO PILOTE (IdPilote, NomPilote, DateNaiss) VALUES ('P002',
'George Russell', '15/02/1998');
b) INSERT INTO VICTOIRE VALUES ('P002', 'PAR630', 2023, 'ML008', '1:36:21');
c) UPDATE VICTOIRE SET TempsRealise = '1:31:48' WHERE IdPilote = 'P002'
AND CodeCircuit = 'JAP800' AND Annee = 2023;
d) INSERT INTO CIRCUIT VALUES ('BRE163', 'Brézil', 4.309, 71);

Vous aimerez peut-être aussi