Bases de Données / Databases

Site Web de l'équipe BD du LIP6 / LIP6 DB Web Site

Outils pour utilisateurs

Outils du site


site:enseignement:licence:2i009:tme8

TME 8: création de schémas – contraintes d'intégrité

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 :

  1. Proposer une insertion dans la table Employé qui ne respecte pas la contrainte de clé primaire.
  2. Proposer une insertion dans la table Employé qui ne respecte pas la contrainte de limite d'âge.
  3. Proposer une insertion dans la table Employé qui ne respecte pas la contrainte de longueur de l'attribut NumSS.
  4. Proposer une insertion dans la table Employé qui ne respecte pas la contrainte sur les villes possibles.
  5. Insérer dans la table Employé deux employés avec le même nom et le même prénom.
  6. Proposer une insertion dans la table Grille_SAL qui ne respecte pas la contrainte C8.
  7. 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é
  8. 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.
site/enseignement/licence/2i009/tme8.txt · Dernière modification: 25/03/2019 12:27 par amine