Vous êtes sur la page 1sur 4

Faculté des Sciences Exactes Niveau : L3 RN-SI

Département d’Informatique Module : Bases de Données

Solution de la SÉRIE de TP N° 3.

1. Créer la base de données « BaseTP3» :


CREATE DATABASE IF NOT EXISTS BaseTP3;

Créer les trois tables constituant cette base :


CREATE TABLE IF NOT EXISTS Modules (
CodeModule VARCHAR(10) NOT NULL,
IntituleM VARCHAR(20) NOT NULL,
CoefM INT NOT NULL,
PRIMARY KEY (CodeModule));

CREATE TABLE IF NOT EXISTS Personnes (


idPersonne VARCHAR(10) NOT NULL,
NumSec INT NOT NULL,
NomP VARCHAR(20) NOT NULL,
PreP VARCHAR(20) NOT NULL,
DateNaiP DATE NOT NULL,
AdresseP VARCHAR(10) NOT NULL,
PRIMARY KEY (idPersonne));

CREATE TABLE IF NOT EXISTS Suivre (


idPer VARCHAR(10) NOT NULL,
idMod VARCHAR(10) NOT NULL,
Note INT NOT NULL,
PRIMARY KEY (idPer, idMod),
FOREIGN KEY (idPer) REFERENCES Personnes (idPersonne) ON DELETE
CASCADE ON UPDATE RESTRICT,
FOREIGN KEY (idMod) REFERENCES Modules (CodeModule) ON
DELETE CASCADE ON UPDATE RESTRICT);
Remarque importante:
Si vous obtenez le message d’erreur N°1215 : impossible d’ajouter des contraintes d’index
externe essayez les commandes suivantes :

CREATE TABLE IF NOT EXISTS Suivre (


idPer VARCHAR(10) NOT NULL ,
idMod VARCHAR(10) NOT NULL ,
Note INT NOT NULL,
PRIMARY KEY (idPer, idMod) );

ALTER TABLE Suivre add CONSTRAINT FK5 FOREIGN KEY (idper)


REFERENCES Personnes (idpersonne) ON DELETE CASCADE ON UPDATE
RESTRICT ;

ALTER TABLE Suivre add CONSTRAINT FK6 FOREIGN KEY (idMod)


REFERENCES Modules (CodeModule) ON DELETE CASCADE ON UPDATE
RESTRICT ;

1
Faculté des Sciences Exactes Niveau : L3 RN-SI
Département d’Informatique Module : Bases de Données

2. Ajouter la colonne « idEnseignant» :


ALTER TABLE Modules ADD idEnseignant varchar(20) NOT NULL;

3. Définir la colonne « idEnseignant» comme clé étrangère avec l’option SET NULL pour
la suppression et CASCADE pour la modification :
ALTER TABLE modules add CONSTRAINT FK1 FOREIGN KEY (idenseignant)
REFERENCES Personnes (idpersonne) ON DELETE RESTRICT ON UPDATE
CASCADE;

4. Ajouter la contrainte d’unicité pour la colonne numSec de la table PERSONNES :


ALTER TABLE Personnes ADD CONSTRAINT CK2 UNIQUE (NumSec);

Dans le cas où cette colonne a été créée sans avoir définit la contrainte de non nullité, on l’a
rajoute en utilisant la requête suivante :
ALTER TABLE Personnes ADD CONSTRAINT CK2 UNIQUE (NumSec);

5. Définir la chaîne de caractères « Algérie » comme la valeur par défaut de la colonne adresse :
ALTER TABLE Personnes MODIFY adresse VARCHAR(10) DEFAULT 'Algérie';

6. Ajouter une contrainte imposant au coefficient associé à un module d’être un entier positif :
ALTER TABLE Modules ADD CONSTRAINT CK3 CHECK (coef > 0);

7. Insérer les données


-INSERT INTO Personnes VALUES ('1MI', 11992, 'KABLI', 'Cilia', '1992/01/20',
'Bejaia');
-INSERT INTO Personnes VALUES ('2MI', 21992,' ADI ', 'Mounir', '1991/03/25',
'Bouira');
-INSERT INTO Personnes VALUES ('2MI', 31993,' HAMOUDI', '1993/08/14', 'Bejaia');
ERREUR: deux tuples ne peuvent pas avoir la même clé primaire.
- INSERT INTO Personnes VALUES (Null , 51989,' KASRI ', 'Amine' , '1989/05/01'
, 'Bejaia');
ERREUR: une clé primaire ne peut pas être nulle.
- INSERT INTO Personnes VALUES (10,31980,' KARA ','Lyes','1980/05/18','Alger') ;
- INSERT INTO Personnes VALUES (11,41981,' SALMI','Riad','1981/01/09','') ;
- INSERT INTO Personnes VALUES (13,41985,NULL,'Ryma','1985/02/26','Béjaia');
ERREUR : le champ nom ne doit pas être nul.

- INSERT INTO Modules VALUES ('BDL2','Bases de données',3,'10');


- INSERT INTO Modules VALUES ('SEL3','Système d''exploitation ',2,'11');
- INSERT INTO Modules VALUES ('SEL2','Système d''information',4,'11') ;

- INSERT INTO Suivre VALUES ('1MI','BDL2',15);


- INSERT INTO Suivre VALUES (NULL,'SEL3',11);
ERREUR : le champ idEtudiant ne peut être vide (null).
- INSERT INTO Suivre VALUES ('1MI','SEL3',17);
- INSERT INTO Suivre VALUES ('2MI','SEL3',12);

2
Faculté des Sciences Exactes Niveau : L3 RN-SI
Département d’Informatique Module : Bases de Données
- INSERT INTO Suivre VALUES ('2MI','LML2',13);
ERREUR : la contrainte clé étrangère n’est pas respectée (LML2 n’existe pas dans la
table personne)
- INSERT INTO Suivre VALUES ('3MI','SEL3',11);
ERREUR : la contrainte clé étrangère n’est pas respectée (3MI n’existe pas dans la
table MODULE)

8. Mettre le numéro de sécurité sociale de la personne ayant l’identifiant 11 à la valeur 31980


UPDATE Personnes SET numSec=31980 WHERE (idPersonne=11);
ERREUR01 : contrainte d'unicité sur numsec, 31980 existe déjà.
ERREUR02: on créant la contrainte clé étrangére de la table suivre on à rajouter
l’option RESTRICT pour la modification ( RESTRICT empeche l’action de
modification)

9. Changer le code du module BDL2 en BDDL2


UPDATE Modules SET codeModule='BDDL2' WHERE (codeModule='BDL2');
ERREUR: on créant la contrainte clé étrangére de la table suivre on à rajouter l’option
RESTRICT pour la modification ( RESTRICT empeche l’action de modification)
Pour effectuer la modification on change l’option RESTRICT par CASCADE Via ces
requêtes (CASCADE signifie une mise-a-jour au niveau du père vas produire
automatiquement une mise-a-jour au niveau des fils vice versa) :

ALTER TABLE Suivre drop FOREIGN KEY fk6;


ALTER TABLE Suivre add CONSTRAINT FK6 FOREIGN KEY (idMod)
REFERENCES Modules (CodeModule) ON DELETE CASCADE ON UPDATE
RESTRICT ;

ALTER TABLE suivre drop FOREIGN KEY fk5;


ALTER TABLE Suivre add CONSTRAINT FK5 FOREIGN KEY (idper)
REFERENCES Personnes (idpersonne) ON DELETE CASCADE ON UPDATE
CASCADE ;

10. Supprimer le module ayant le code SEL3


DELETE FROM Modules WHERE codeModule='SEL3

11. Mettre l’identifiant de la personne 1MI à 11MI


UPDATE Personnes SET idPersonne='11MI' WHERE idPersonne='1MI' ;

12. Supprimer la personne dont l’identifiant est 2MI


DELETE FROM Personnes WHERE idPersonne='2MI';

13. Mettre l’identifiant de la personne 11 à21


UPDATE Personnes SET idPersonne=21 WHERE idPersonne=1;

14. Supprimer la personne dont l’identifiant est 10


DELETE FROM Personnes WHERE idPersonne=10;

3
Faculté des Sciences Exactes Niveau : L3 RN-SI
Département d’Informatique Module : Bases de Données

Vous aimerez peut-être aussi