1728285923864_BD-3STI-cours-tps-correction
1728285923864_BD-3STI-cours-tps-correction
1728285923864_BD-3STI-cours-tps-correction
11 Les contraintes
Une contrainte est unerègle appliquée à une colonneou à une table et qui doit être toujours vérifiée à fin d’assurer
l’intégritédes données.
Ondistingue trois types de contraintes :
• Contrainted’intégrité de tables : Permetd’assurer l’unicité des lignes destables. Chaque table doit avoir une
la clé primaire.
• Contrainted’intégrité référentielle : Permet d’assurer qu’une clé secondaired’une table estreliée à une clé
primaired’une autre table. Elle est représentéesousforme de lien entre tables.
• Contraintede domaine : s’assurer dela validité desvaleurs des colonnes(obligatoireou pas,supérieurà zéro
,….)
12 Représentation de la structure de la base de données:
Aprèsla présentation des différents objets qui décrivent une bd, on peut la représenter de façonhomogène. Cette
représentationest dite model ou schéma de la base de données. Il existe deux formalismes de représentation:
1. Représentation textuelle 2. Représentation graphique
Elle consiste à décrire les entités, les attributs
et les associationsen utilisant du texte.
Soitune table A composée des attributsa1, a2, a3 et
a4 où a1 est une clé primaire et une table B composée
des attributs b1, b2 et b3 avecb1 une clé primaire. On
suppose que B réfère à A.
La représentation textuelle est:
A(a1, a2, a3, a4) Les clés primairessont représentées engras
B(b1, b2, b3, a1#) et les clés étrangères à l’aide d’un lien entre les deux
tables. Les symboles(∞) est placé du côtéde la clé
étrangère et le symbole(1) du côtéde la clé primaire
référencée.
2
BD Série n°1 3éme STI
Exercice 1 :
Exercice 2 :
Exercice 3 :
- - 3 --
BD 3éme STI
Exercice 5 :
Que présente chaque colonne de la table élève ? …………………………..
En se basant sur le tableau suivant, par quoi est décrit chaque champs ? …………………………………..
Nom: Elève
Description: Liste des élèves de lycée zouiet elmagaiz
Nom colonne Description Type de Taille Obligatoire Valeur par Valeurs
données défaut autorisées
ID_ELEVE Identifiant Numérique Entier oui
de l’élève
Nom chaîne 15 non
Prenom chaîne 15 non
Date_n Date de Date Entier non <Aujourd’hui( )
naissance
Classe chaîne 15 non
Exercice 6 :
Dans les tables suivantes, identifier les attributs permettant d’identifier l’entité d’une manière unique.
Table : OUVRIER
NOM PRENOM CIN DATE_NAISSANCE PROFESSION
Table : FILM
TITRE REFERENCE ANNE_SORTIE
Table : LIVRE
TITRE ISBN N_COPIES EDITION
Table : VOITURE
MODELE CATEGORIE IMMATRICULATION COULEUR PUYISSANCE
- - 4 --
BD 3éme STI
………………………………………………………………………………..
……………………………………………………………………………..
………………………………………………………………………………..
- - 5 --
BD 3éme STI
TP 1 : création et manipulation de la structure d’une BD en mode assisté
Une société de vente de voitures offre à ses clients la possibilité de tester et évaluer les nouveaux modèles qu’elle dispose.
L’évaluation consiste à attribuer trois notes en fonction des critères suivants : sécurité, conduite et confort.
Soit la base de données decette société décrite par la représentation textuelle suivante :
testeur ( numPermis , nom , prenom , genre ,adresse)
modeleVoiture ( idModele,libelle )
evaluation ( numPermis#, idModele# , dateTest , securite )
1) Ouvrir «MYSQL». (easyphp-administration-administrer mysql)
2) Créer cette base de données en lui attribuant le nom "BDnum de groupe".
3) Créerlesdifférentes tablesenprécisantla cléprimairepourchacuned’elles eten seréférantàladéfinition deschamps
présentée dansle tableau suivant :
- - 6 --
BD 3éme STI
Création Et manipulation D’Une Base De Données en mode commande SQL
I. Création d’une table en mode commande :
1. Introduction :
Dans le mode commande, on utilise le langage SQL (Structured Query Language)
C'est un langage structuré de requêtes destiné à interroger ou à manipuler une base de données.
On distingue trois familles de commande SQL :
a. Langage de définition de données(LDD) :
ce sont des commandes qui permettent de créer, modifier et supprimer les différentes structures de la BD.
b. Langage de manipulation de données(LMD) :
ce sont des commandes qui permettent de manipuler le contenu de la base de données, c'est-a-dire d'insérer,
de modifier, de consulter ou de supprimer des lignes dans les tables de la base de données.
c. Langage de contrôle d'accès(LCD) :
Il permet de définir des permissions au niveau des utilisateurs d'une BD. Ce sont des commandes qui
permettent de contrôler l'utilisation de la BD (sécurité de la base, intégrité et cohérences des données).
2. La création de tables :
Le langage de définition de données (LDD) permet de créer des tables grâce au mot clé CREATE TABLE.
Exemple : Ecrire une commande qui permet de créer les tables suivantes :
T1(C1 , C2, C3 , C4, C5#)
T2(C5, C6)
Sachant que :
Nom colonne type taille obligatoire Valeur par défaut Valide si
C1 Numérique 8 OUI
C2 texte 10 OUI
C3 décimal 4,2 NON 1000,23
C4 date NON <=aujourd’hui()
C5 numérique 10 OUI
C6 texte 20 OUI
Create table t1 (
C1 int(8) primary key,
C2 varchar(10) not null, Create table t2 (
C3 décimal(4.2) default 1000.23 , C5 int(10) primary key,
C4 date check (c4 <= curdate( )), C6 varchar(20) not null) ;
C5 int(10) references T2(c5) on delete cascade) ;
Retenons : La commande du langage SQL permettant de créer une table est la commande CREATE TABLE.
La forme générale de cette commande est la suivante :
CREATE TABLE nom_table(
Nom_Colonne Type_colonne[[NOT]NULL][DEFAULT valeur ][Contraintes sur colonne (1)],
…. ,
[Contraintes sur la table(2)] ) ;
(1) (2)
CONSTRAINT nom_contrainte Se sont des contraintes fonctionnant sur plusieurs champs à la fois
PRIMARY KEY PRIMARY KEY (colonne1, colonne 2, …)
REFERENCES nom_table (nom_champ_référencé) FOREIGN KEY(colonne1, colonne 2, …)
[ON DELETE CASCADE] REFERENCES nom_table(colonne1, colonne 2, …)
CHECK (Condition de valeurs) [ON DELETE CASCADE]
CHECK (Condition )
II. Les types de données : Pour chaque colonne, il faut préciser le type de données parmi les types suivants:
Type de donnée Syntaxe Description
Alphanumérique VARCHAR(n) Chaîne de caractères de n caractères maximum (n<16383)
Horaire DATE Date sous la forme 16/07/99
Numérique INT(n) Numérique à n chiffres
Numérique DECIMAL(n,m) Numérique à n chiffres dont m décimales
- - 7 --
BD 3éme STI
III. Contraintes d’intégrité :
Les contraintes d’intégrité doivent être exprimées dès la création de la table grâce aux mots clés suivants:
Clause Rôle
DEFAULT valeur Valeur par défaut
PRIMARY KEY Indiquer la clé primaire
NULL La valeur de la colonne n’est pas obligatoire
NOT NULL La valeur de la colonne est obligatoire
CHECK (condition) Faire un test sur un champ
UNIQUE Vérifier que la valeur saisie pour un champ ne se répète pas
REFERENCES table(colonne référée) Indique la clé étrangère.
IV. Exemple de création de table avec contraintes :
Create TABLE clients(
CIN INT(8) PRIMARY KEY,
Nom varchar(30) NOT NULL,
Prenom varchar(30) CONSTRAINT nl_pre NOT NULL,
Age int(2) check (age < 100),
Email varchar(50) NOT NULL check (Email LIKE "%@%"),
Adr int(3) UNIQUE REFERENCES Adresse(code_adr) ) ;
V. Nommer une contrainte :
Il est possible de donner un nom à une contrainte grâce au mot clé CONSTRAINT suivi du nom que l'on
donne à la contrainte.
VI. Définition_contraintes :
Exemple: Prenom varchar(30) CONSTRAINT nl_pre NOT NULL,
CONSTRAINT PK_cin PRIMARY KEY (cin)
II- Modification de la structure d’une base de données :
1. Modifier la structure d'une table :
C’est grâce à la close ALTER TABLE qu’on peut modifier la structure d’une table.
Elle permet les modifications suivantes sur la structure d'une table existante :
• Ajout de nouvelles colonnes, Syntaxe :
• Modification de colonnes, ALTER TABLE Nom_table
• Suppression de colonnes, [ADD COLUMN (Nom_colonne Type_donnee)]
• Ajout de contraintes d'intégrité, [MODIFY Nom_colonne Type_donnee]
• Suppression de contraintes d'intégrité, [DROP COLUMN Nom_colonne]
[ADD CONSTRAINT Nom_contrainte]
• Activation ou désactivation de contraintes
[DROP CONSTRAINT Nom_contrainte]
d'intégrité. [ENABLE|DISABLE nom_contrainte]
Exemples:
Pour ajouter une colonne Tel à la table clients :
ALTER TABLE clients ADD COLUMN (tel int(8) ) ;
Pour modifier le type de la colonne age en type date :
ALTER TABLE clients MODIFY Age DATE;
Pour supprimer la colonne email de la table clients
ALTER TABLE clients DROP COLUMN email ;
Supposons que la table clients a été crée sans clé primaire, pour ajouter donc la contrainte d’intégrité
clé primaire pour cette table on utilise la commande suivante :
ALTER TABLE clients ADD PRIMARY KEY (cin) ;
Pour supprimer la clé primaire de la table detail_commande :
ALTER TABLE detail_commande DROP PRIMARY KEY ;
Pour désactiver une contrainte d'intégrité on utilise l’option DISABLE. Lorsqu'une contrainte est
désactivée, le SGBD ne va plus effectuer le contrôle imposé par cette contrainte. Par exemple pour
désactiver la clé primaire de la table clients
ALTER TABLE clients DISABLE PRIMARY KEY ;
- - 8 --
BD 3éme STI
Lorsque cette clé primaire est référencée dans une ou plusieurs autres tables, il faut supprimer les clés
étrangères dans les tables qui s'y référent avant de procéder à la suppression de la clé primaire.
L'option ENABLE permet de réactiver une contrainte d'intégrité. Lorsqu'une contrainte est réactivée,
le SGBD va de nouveau effectuer le contrôle imposé par cette contrainte.
Par exemple pour réactiver la clé primaire de la table clients
ALTER TABLE clients ENABLE PRIMARY KEY ;
2- La suppression d'une table :
Elle se fait en suivant la syntaxe suivante: Exemple:
DROP TABLE Nom_table; Pour supprimer la table clients :
DROP TABLE clients ;
- - 9 --
BD 3éme STI
TP 2 : création et manipulation de la structure d’une BD en mode
commande sql
Soit la base de données « Location de voitures » définit par les tables suivantes :
CLIENT (NCIN_Cli, Nom_Cli, Prenom_Cli, adresse_Cli, ville)
VEHICULE (immat_Vehicule, marque, model, date_acq)
LOCATION (immat_Vehicule# , NCIN_Cli #, date_Loc, duree_Loc,cout_loc)
1. Ouvrir «MYSQL ». (easyphp-administration-administrer mysql)
2. Créer une nouvelle base de données nommée « Location de voitures »
3. Créer les tables CLIENT, VEHICULE et LOCATION en précisant la clé primaire pour chacune d’elles.
Caractéristiques obligatoire Valide si
Champs Types taille
Table
NCIN_Cli texte 8 Oui
Nom_Cli Texte 20 oui
CLIENT Prenom_Cli Texte 20 oui
Adresse_Cli Texte 50 non
Ville Texte 20 non
immat_Vehicule Texte 10 oui
VEHICULE Marque Texte 20 oui (1)
Model Texte 20 oui
Date_acq numérique 4 oui
immat_Vehicule Texte 10 oui (2)
NCIN_Cli texte 8 oui (3)
LOCATION Date_loc date <=
aujourd’hui()
Duree_loc numérique 3 >0
Cout_loc decimal 8.3 >0
(1) Les valeurs de la colonne marque sont inclues dans l’intervalle
["peogeot","renault","Fiat","Opel","volkswagen","citroen"]
(2) Les valeurs de immat_vehicule dans la table location doivent exister dans la table véhicule
(3) Les valeurs de NCIN_cli de la table location doivent exister dans la table client
4. Ajouter à la table Client une colonne Tel_cli de type texte et de taille 10 caractères
5. Modifier le type de la colonne Tel_cli de la table client en numérique de taille 8 chiffres
6. Supprimer la colonne adresse de la table Client
7. Ajouter une contrainte pour la colonne DATE_acq de la table véhicule pour qu’elle soit comprise entre
1990 et 2016
8. Ajouter la valeur par défaut « Tunis » à la colonne ville de la table Client
9. Supprimer la clé primaire de la table location puis définir les 3 colonnes NCIN_Cli, Immat_vehicule et
date_loc comme clé primaire
10. Désactiver la contrainte clé primaire de la table client
11. Réactiver cette contrainte
12. Créer une table loc puis la supprimer
- - 10 -
-
BD 3éme STI
- - 11 - -
BD 3éme STI
III- Manipulation d’une base de données en mode commande :
On peut utiliser le langage SQL pour manipuler une base de données.
1. Insertion de lignes :
a. Syntaxe :
INSERT INTO nom_table [(liste des colonnes)] VALUES (valeurs) ;
b. Remarques :
Les valeurs saisies doivent respecter l’ordre, le type et les contraintes d’intégrité.
Les chaînes de type caractères ou de type date sont mises entre apostrophes (‘ ‘) et la date doit être
sous la forme AAAA-MM-JJ .
c. Exemple :
INSERT INTO Location (Immat_Vehicule, NCIN_Cli , Date_Loc , Duree_Loc, Cout_Loc )
VALUES ('118TN2064', '04215488','2006-06-12',6,100);
INSERT INTO Client (NCIN_Cli, Nom_Cli , Prenom_Cli, Ville) VALUES ( 'O4215488' ,'Aouadi',
'Anis','Tunis');
2. Suppression de lignes :
a. Syntaxe :
DELETE FROM nom_table b. Exemple :
WHERE condition ; DELETE FROM Chauffeur
WHERE date_Naissance<’1/1/1960’ ;
3. Modification de lignes :
a. Syntaxe :
UPDATE nom_table b. Exemple :
SET Colonne1=valeur1 UPDATE Bus
Colonne2=valeur2 SET Classe=’B’
colonnex=valeurx WHERE Nb_Places>40;
WHERE condition;
4. Recherche de données : Requêtes :
La recherche en mode commande est effectuée grâce à la commande SELECT du langage SQL.
VII. Projection : recherche de certaines colonnes dans une table ;
Syntaxe
SELECT [DISTINCT] *|liste_champs
FROM table;
Distinct : permet d’afficher un seul exemplaire des lignes identiques du résultat trouvé.
*: désigne tous les champs de la table
La liste des champs sert comme entête de colonnes (alias)
S’il y a plus qu’un champ à spécifier il faut les séparer par des virgules.
Exemple
SELECT *
FROM Client ;
SELECT Prenom_Cli
FROM Client
WHERE Nom_cli IN (‘Ahmed’, ‘Mahmoud’, ‘Mohamed’);
SELECT *
FROM Client
WHERE Ville LIKE '%Menzel';
'Menzel%' commence par Menzel
'%Men%' contient le mot Men
'_M%' dont le 2ème caractère est M
Ville LIKE [B-D]% à On sélectionne les villes dont la première lettre du nom est entre le B et le D.
SELECT * FROM Client
WHERE adr_Cli IS NULL;
- - 13 - -
BD 3 SI
TP n°3 :Manipulation d’une BD en mode commande
Soit la description textuelle de la base de données d’une agence de location de voitures:
Client (NCIN_Cli, Nom_Cli, Prenom_Cli, Ville, Tel_cli)
Vehicule (Immat_vehicule, Marque, Model, date_Acq)
Location (Immat_Vehicule#, NCIN_Cli#, Date_Loc, Duree_Loc, Cout_Loc)
Questions :
1. Lancer mysql et ouvrir votre base de données « location de voiture » créée précédemment
2. Remplir les tables de la base de données par les données suivantes :
Table client
NCIN_Cli Nom_Cli Prenom_Cli Ville Tel_cli
04215488 Aouadi Anis Tunis 71455698
05986732 Beji Mohamed Tunis 97888999
06697865 Krimi Ahlem Sousse 50777569
Table Location
Immat_Vehicule NCIN_Cli Date_Loc Duree_Loc Cout_Loc
118TN2064 05986732 20/01/2017 7 105
98TN5489 06697865 13/08/2016 15 200
98TN5489 06697865 01/01/2017 15 200
Table vehicule
Immat_vehicule Marque Model date_Acq
102TN3265 Renault Clio 2003
118TN2064 Fiat Panda 2005
118TN9865 Peugeot 406 2005
98TN5489 Opel Corsa 2000
99TN2154 Peugeot 206 2001
……………………………………………………………………………………………………….…………
………………………………………………….………………………………………………………………
……………………………………….…………………………………………………………………………
…………………………….……………………………………………………………………………………
………………….………………………………………………………………………………………………
……….……………………………………………………………………………………………………….…
…………………………………………………………………………………………………….……………
………………………………………………………………………………………….………………………
……………………………………………………………………………………………………………….
3. Supprimer la ligne suivante :
102TN3265 Renault Clio 2003
……………………………………………………………………………………………………….…………
…………………………………………………………………………………………….………………
4. Modifier le NCIN_Cli 04215488 en 04215487 dans la table client.
……………………………………………………………………………………………………….…………
…………………………………………………………………………………………….……………………
………………………………………………………………………………….………………………
5. Ajouter 5dt au coût de location de toutes les voitures et les clients.
……………………………………………………………………………………………………….…………
…………………………………………………………………………………………….………………
6. Mettre à jour le nom et le prénom de client dont le NCIN_Cli="05986732" à "Nefzi" "Aymen".
……………………………………………………………………………………………………….…………
…………………………………………………………………………………………….……………………
………………………………………………………………………………………………………….
- 4-
BD 3 SI
Application : Manipulation d’une BD
La base de données d’un hôpital contient entre autres les tables suivantes :
Patient (num_patient, nom_patient, prenom_patient, adr_patient,age)
Medecin (code_med, nom_med, prenom_med, tel_med, specialite)
Sejour (num_sej, num_chambre, date_deb, date_fin, num_patient#)
Traite (num_patient#, code_med#, date_deb_trait)
Donner les commandes SQL qui permettent de :
1) a- Créer la table patient sachant que :
Nom colonne Type et taille Contrainte
Num_patient Numérique de 4 chiffres Clé primaire
nom_patient , prenom_patient Chaine de 10 caractères Obligatoire
adr_patient Chaine de 20 caractères Par défaut ‘Tunis’
Age Numérique de 2 chiffres Positif
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
b-Créer la table traite
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
2) D’ insérer les données suivantes à notre base:
Table Patient
num_patient nom_patient prenom_patient adr_patient age
133 Tounsi Ahmed Béjà 47
6754 Souissi Asma Bizerte 50
Table Séjour
num_chambre date_deb date_fin num_patient Num_sej
13 12-12-2007 10-01-2007 133 1001
56 01-01-2007 23-01-2007 6754 1300
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
3) Ajouter 2 ans à l’âge de patient ayant le numéro "133".
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
4) Attribuer la nouvelle adresse "Nabeul" aux patients qui avaient comme adresse "Tunis"
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
- 5-
BD 3 SI
5) Supprimer tous les séjours ayant pour numéro de chambre "5" ou une date_deb entre " 01-01-2007"
et "18-02-2007".
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
6) Ajouter 20 jours à la date_fin de séjour du patient ayant le numéro "6754"
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
7) Supprimer tous les enregistrements de la table Sejour.
…………………………..………………………………………………………………………………………
8) Afficher tous les patients
…………………………………………………………………………………………………………………
9) Afficher les noms , les prénoms et le numéro de tel des médecins de spécialité « pédiatrie »
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
…………………………………………………………………………………………………………………
- 6-
BD 3 SI
C . Tri:
SELECT [DISTINCT] *|liste_champs
FROM table1
WHERE condition
ORDER BY colonne1[ASC|DESC] [, colonne2[ASC|DESC]..];
Exemple
SELECT noemp, nomemp, fonction, salaire
FROM employe
WHERE num_dep = 30
ORDER BY salaire asc ;
Table Voyage
Num_voy Ville_dest Date_dep Date_arr Tarif
1001 Tripoli 13/02/2009 13/02/2009 300
1002 Beyrout 25/03/2009 25/03/2009 600
1003 Caire 13/05/2009 16/05/2009 400
Questions :
1. Lancer mysql et créer la base gestion_voyages
2. Exprimer en SQL les requêtes suivantes :
☑ Projection :
🞖 R1 : lister la table voyageur
🞖 R2 : Afficher le prénom, nom et la date de naissance de tous les voyageurs
☑ Restriction :
🞖 R3 : Afficher la liste des voyageurs dont l’adresse est Sfax
🞖 R4 : Afficher la liste des voyageurs qui sont né en novembre1978
🞖 R5 : Afficher les noms, prénom et adresses des voyageurs qui sont originaires de (Tunis, Sfax,
- 8-
BD 3 SI
Sousse)
- 10 -
BD 3 SI
Correction série 1
Exercice 1 : structurée – redondance – données – programmes- informations - base
Exercice 2 :
Exercice 3 :
- 11 -
BD 3 SI
ID_ELEVE Identifiant Numérique Entier oui
de l’élève
Nom chaîne 15 non
Prenom chaîne 15 non
Date_n Date de Date Entier non <Aujourd’hui( )
naissance
Classe chaîne 15 non
Exercice 6 :
Dans les tables suivantes, identifier les attributs permettant d’identifier l’entité d’une manière unique.
Table : OUVRIER
NOM PRENOM CIN DATE_NAISSANCE PROFESSION
x
Table : FILM
TITRE REFERENCE ANNE_SORTIE
X
Table : LIVRE
TITRE ISBN N_COPIES EDITION
x
Table : VOITURE
MODELE CATEGORIE IMMATRICULATION COULEUR PUYISSANCE
x
Exercice 7 : (contrainte d’intégrité)
Ci-dessous, on présente le contenu des trois tables Client, Article et Facture d’une base de données. Avec :
Table Facture
Table Client Table Article
CodeArt LibArt PrixArt N°Fact DateFact CodCl CodArt
NB : On suppose qu’une 003445 PC HP 1380 125 25/01/2023 123 012365
facture ne concerne qu’un 004516 PC IBM -1490 126 26/01/2023 426 045696
seul article. Questions : En 012365 PC SIEM. 1320 127 18/02/2023 456 004516
se basant sur les contenus de 023146 PC DELL 1200 128 22/02/2023 456 023146
ces tables, il apparaît que 045696 PC SIEM. 1300
129 03/03/2023 789 111111
trois contraintes d’intégrité 045696 IMP. HP 420
130 03/03/2023 123 003445
n’ont pas été respectées. Préciser l’anomalie et le nom de
Codecl Nomcl Prencl contrainte non respectée.
123 Mrad Amine
426 Abbes Amine
456 Abbes Eya
789 Nouri Ayoub
789 Sallami Ahlem
Anomalierencontrée Contrainted’intégriténonrespectée
Clé primaire qui se répéte (789 dans clients, 045696 dans
Contrainte d’intégrité de table
articles)
Code article dans facture 111111 n’existe pas dans la table
Contrainte d’intégrité référentielle
Article
Prix négatif Contrainte d’intégrité de domaine
Correction TP n°2
3. CREATE TABLE Client(
NCIN_Cli VARCHAR(8) PRIMARY KEY,
Nom_Cli VARCHAR(20) NOT NULL,
- 12 -
BD 3 SI
Prenom_Cli VARCHAR(20) NOT NULL,
Adresse_Cli VARCHAR(50),
Ville VARCHAR(20)
);
CREATE TABLE Vehicule(
immat_Vehicule VARCHAR(10) primary key,
marque VARCHAR(20) NOT NULL CHECK( marque in ('Peugeot','Renault','Fiat','Opel', 'Volkswagen',
'Citroën')),
model VARCHAR(20) NOT NULL,
date_acq INT(4) NOT NULL
);
CREATE TABLE Location(
immat_Vehicule VARCHAR(10) REFERENCES vehicule(immat_Vehicule)ON DELETE CASCADE,
NCIN_Cli VARCHAR(8) REFERENCES Client(NCIN_Cli)ON DELETE CASCADE,
date_loc DATE CHECK(date_loc<=curdate()),
duree_loc INT(3) CHECK(duree_loc>0),
cout_loc DECIMAL(8,3) CHECK(cout_loc>0),
CONSTRAINT PK_Location PRIMARY KEY(immat_Vehicule,NCIN_Cli)
);
4. ALTER TABLE Client ADD COLUMN (Tel_Cli VARCHAR(10) );
7. ALTER TABLE Vehicule ADD CONSTRAINT Vc CHECK (Annee_Acq BETWEEN 1990 AND 2016);
CORRECTION DE L’APPLICATION
2-Alter table matches ADD COLUMN ( lieu int(20))
3-Alter table matches MODIFY lieu varchar
- 13 -
BD 3 SI
8
9- drop table arbitres
Correc tp3
1. INSERT INTO Client VALUES ('O4215488','Aouadi','Anis','15 rue F Hached','Tunis');
4. UPDATE Location
SET Cout_Loc= Cout_Loc+5 ;
5. UPDATE Client
SET Nom_Cli='Nefzi', Prenom_Cli='Aymen'
WHERE NCIN_Cli='05986732' ;
Correction Application
La base de données d’un hôpital contient entre autres les tables suivantes :
Patient (num_patient, nom_patient, prenom_patient, adr_patient,age)
Medecin (code_med, nom_med, prenom_med, tel_med, specialite)
Sejour (num_sej, num_chambre, date_deb, date_fin, num_patient#)
Traite (num_patient#, code_med#, date_deb_trait)
- 14 -
BD 3 SI
nom_patient varchar(10) NOT NULL,
prenom_patient varchar(10) NOT NULL,
adr_patient varchar(20) DEFAULT ‘TUNIS’,
age int(2) check (age >0)
); Clé
b- Créer la table traite étrangère
CREATE TABLE Traite (
Num_patient int(4) References patient (num_patient ) ON DELETE CASCADE,
code_med varchar(6) References Medecin (code_med) ON DELETE CASCADE ,
date_deb_trait Date,
PRIMARY KEY (Num_patient, code_med , date_deb_trait )) ; Clé primaire composée par 3
colonnes
Table Séjour
num_chambre date_deb date_fin num_patient Num_sej
13 12-12-2007 10-01-2007 133 1001
56 01-01-2007 23-01-2007 6754 1300
INSERT INTO Patient values ( 133 , ‘Tounsi’ , ‘ Ahmed’ , ‘Béjà’ , 47) ;
INSERT INTO Patient values ( 6754 , ‘Souissi’ , ‘ Asma’ , ‘Bizerte’ , 50) ;
INSERT INTO Séjour values ( 1001, 13, ‘2007-12-12’ , ‘2007-01-10’ , 133) ;
INSERT INTO Séjour values ( 1300, 56, ‘2007-01-01’ , ‘2007-01-23’ , 6754) ;
UPDATE Patient
SET age = age+2
Where num_patient = 133;
4- Attribuer la nouvelle adresse "Nabeul" aux patients qui avaient comme adresse "Tunis"
UPDATE Patient
SET adr_patient = "Nabeul"
Where adr_patient = "Tunis";
5- Supprimer tous les séjours ayant pour numéro de chambre "5" ou une date_deb entre " 01-01-2007"
et "18-02-2007".
DELETE FROM séjour
WHERE num_chambre =5 OR date_deb Between " 2007-01-01" and "2007-02-18" ;
(remarque : dans cette question on a supprimé juste les lignes de la table séjour, la table existe
encore , mais pour supprimer toute la table on utilise la commande drop table séjour)
Correction tp1
- 17 -
BD 3 SI
- 18 -
BD 3 SI
- 19 -
BD 3 SI
- 20 -
BD 3 SI
- 21 -
BD 3 SI
- 22 -
BD 3 SI
- 23 -
BD 3 SI
- 24 -
BD 3 SI
- 25 -
BD 3 SI
- 26 -
BD 3 SI
- 27 -
BD 3 SI
5)
6)
- 28 -
BD 3 SI
- 29 -
BD 3 SI
7)
- 30 -
BD 3 SI
8)
- 31 -
BD 3 SI
- 32 -
BD 3 SI
- 33 -
BD 3 SI
- 34 -
BD 3 SI
Correction TP2
- 35 -
BD 3 SI
4- ajouter colonne
6- supprimer colonne
7- ajouter contrainte
- 36 -
BD 3 SI
Correction tp3
2-
- 37 -
BD 3 SI
3-
4-
- 38 -
BD 3 SI
5-
- 39 -
BD 3 SI
6
Correction tp 4
- 40 -
BD 3 SI
- 41 -
BD 3 SI
- 42 -
BD 3 SI
- 43 -
BD 3 SI
6-
- 44 -
BD 3 SI
7-
- 45 -
BD 3 SI
Correction applicationrequête
- 46 -
BD 3 SI
- 47 -
BD 3 SI
- 48 -
BD 3 SI
- 49 -
BD 3 SI
- 50 -
BD 3 SI
- 51 -
BD 3 SI
- 52 -
BD 3 SI
- 53 -
BD 3 SI
- 54 -
BD 3 SI
- 55 -
BD 3 SI
- 56 -
BD 3 SI
R1
R2
- 57 -
BD 3 SI
R3
R4
- 58 -
BD 3 SI
R6 :
- 59 -