Ceci est une ancienne révision du document !
Table des matières
TME 8: création de schémas – contraintes d'intégrité
version pour H2
Ce TME se base sur le TD8 et vise à illustrer la modification des tables et l'interaction avec les contraintes d'intégrité. On utilise un schéma Entreprise similaire à celui vu en TD et rappelé ici.
- EMPLOYE(NumSS, NomE, PrenomE, VilleE, DateNaiss)
- PROJET (NumProj, NomProj, RespProj*, VilleP, Budget)
- EMBAUCHE (NumSS*, NumProj*, DateEmb, Profil*)
- GRILLE_SAL (Profil, salaire)
Exercice 1
Créez le schéma du Entreprise sous Oracle et associez aux tables les contraintes d'intégrité correspondantes.
Dans ce qui suit, il vous est demandé d'effectuer des insertions de n-uplets dans des tables.
Syntaxe pour l'insertion
INSERT INTO TABLE VALUES ('val1', 'val2', ....) ;
Par exemple, pour insérer une employée 'LARS Anna', qui habite 'Paris' et qui est née le 25- 08-1975, il suffit d'exécuter l'instruction ci-dessous
INSERT INTO employe VALUES('21456','LARS', 'Anna','paris', to_date('25-08- 1975'), sysdate);
et de constater que la système retourne bien le message
1 ligne(s) insérée(s)
Syntaxe pour la suppression
DELETE FROM TABLE ;
Exercice 2
Insérez dans chaque table au moins un n-uplet qui vérifie les contraintes d'intégrité. Vous avez la liberté de choisir les valeurs que vous voulez.
Exercice 3
Proposez des insertions qui violent les contraintes d'intégrité définies pour chaque table. Par exemple, l'instruction ci-dessous:
INSERT INTO employe VALUES(NULL,'LARS', 'Anna','paris', to_date('25-08- 1975'), sysdate);
viole la contrainte de clé primaire de Employe car elle tente d'insérer un employé sans valeur pour l'attribut clé primaire Si vous tentez d'exécuter cette instruction, vous constaterez l'erreur
ERREUR à la ligne 1 : ORA-01400: impossible d'insérer NULL dans "EMPLOYE"."NUMSS"
On peut utiliser une syntaxe alternative pour les insertions en spécifiant les attributs dont on renseigne les valeurs comme indiqué ci-dessous
INSERT INTO employe (NumSS, NomE, PrenomE, villE, dateNaiss) VALUES ('LARS', 'Anna','paris', to_date('25-08-1975')) ;
Répondre aux questions suivantes :
- Proposer une insertion dans la table Employé qui ne respecte pas la contrainte de clé primaire.
- Proposer une insertion dans la table Employé qui ne respecte pas la contrainte de limite d'âge.
- Proposer une insertion dans la table Employé qui ne respecte pas la contrainte de longueur de l'attribut NumSS.
- Proposer une insertion dans la table Employé qui ne respecte pas la contrainte sur les villes possibles.
- Insérer dans la table Employé deux employés avec le même nom et le même prénom.
- Proposer une insertion dans la table Grille_SAL qui ne respecte pas la contrainte C8.
- Proposer une insertion dans la table Projet qui ne respecte pas la contrainte référentielle vers Employe : insérer un responsable de projet qui n'est pas dans la table Employé
- Proposer une insertion dans la table Embauche qui ne respecte pas une des contraintes référentielles : par exemple, associer un employé existant à un projet qui n'existe pas.