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

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

site:enseignement:licence:2i009:tme8 [14/02/2019 12:09]
amine créée
site:enseignement:licence:2i009:tme8 [25/03/2019 12:27] (Version actuelle)
amine
Ligne 1: Ligne 1:
 ====== TME 8: création de schémas – contraintes d'​intégrité ====== ====== 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 ====
 +<code sql>​insert into Table values ('​val1',​ '​val2',​ ....) ;</​code>​
 +
 +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
 +<code sql>​insert into employe values('​21456','​LARS',​ '​Anna','​paris',​ to_date('​25-08- 1975'​),​ sysdate);</​code>​
 +
 +et de constater que la système retourne bien le message
 +<code bash>1 ligne(s) insérée(s)</​code>​
 +
 +==== Syntaxe pour la suppression ====
 +<code sql>​delete from Table ;</​code>​
 +
 +===== 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:
 +<code sql>​insert into employe values(null,'​LARS',​ '​Anna','​paris',​ to_date('​25-08- 1975'​),​ sysdate);</​code>​
 +
 +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
 +<code bash>​ERREUR à la ligne 1 :
 +ORA-01400: impossible d'​insérer NULL dans "​EMPLOYE"​."​NUMSS"​ </​code>​
 +
 +On peut utiliser une syntaxe alternative pour les insertions en spécifiant les attributs dont on renseigne les valeurs comme indiqué ci-dessous
 +<code sql>​insert into employe (NumSS, NomE, PrenomE, villE, dateNaiss) values ('​LARS',​ '​Anna','​paris',​ to_date('​25-08-1975'​)) ;</​code>​
 +
 +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.
site/enseignement/licence/2i009/tme8.1550142590.txt.gz · Dernière modification: 14/02/2019 12:09 par amine