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] – créée aminesite: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 : de amine