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:tme9-h2

Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
site:enseignement:licence:2i009:tme9-h2 [14/04/2020 00:16]
amine créée
site:enseignement:licence:2i009:tme9-h2 [14/04/2020 09:54] (Version actuelle)
amine
Ligne 1: Ligne 1:
 ====== TME 9: Modification des données – contraintes d'​intégrité sous H2====== ====== TME 9: Modification des données – contraintes d'​intégrité sous H2======
  
-Ce TME se base sur le {{ :​site:​enseignement:​licence:​2i009:​td9_ddl_dml_etudiants-19.pdf | TD 9}} et vise à illustrer la modification des tables et l'​interaction avec les contraintes d'​intégrité. ​Le schéma ​**Entreprise**  ​est celui qui est utilisé avec une légère modification permettant de faciliter la saisie des données+Ce TME réutilise ​le schéma **Entreprise** du {{ :​site:​enseignement:​licence:​2i009:​td9_ddl_dml_etudiants-19.pdf | TD 9}} et vise à illustrer la modification des tables et l'​interaction avec les contraintes d'​intégrité. ​ 
 +Ce schéma est décrit ci-dessous ​:
   * **EMPLOYE**(__NumSS__,​ NomE, PrenomE, VilleE, DateNaiss)    * **EMPLOYE**(__NumSS__,​ NomE, PrenomE, VilleE, DateNaiss)
   * **PROJET** (__NumProj__,​ NomProj, RespProj*, VilleP, Budget)    * **PROJET** (__NumProj__,​ NomProj, RespProj*, VilleP, Budget)
Ligne 7: Ligne 8:
   * **GRILLE_SAL** (__Profil__,​ salaire) ​   * **GRILLE_SAL** (__Profil__,​ salaire) ​
  
 +Pour faciliter la saisie des données, une légère modification est apporté : désormais, l'​attribut NumSS de Employe a une longueur fixe de 5 chiffres et l'​attribut NumProj de Projet contient 3 chiffres. ​
 +Pour créer le schéma de cette base, exécuter le script accessible depuis [[site:​enseignement:​licence:​2i009:​donnees:​tme8-creations-h2|]].
  
-Désormais, l'​attribut NumSS de Employe a une longueur fixe de 5 chiffres et l'​attribut NumProj de Projet contient 3 chiffres. Pour créer les tables de ce schéma, il vous est demandé de télécharger l'​archive ​ 
-{{:​site:​enseignement:​licence:​2i009:​documents-tme:​tme8.tar|tme8.tar}} et d'en extraire le fichier TME8-creations.sql qui contient les instructions de création du schéma Entreprise. Il suffit ensuite de taper la commande @TME8-creations.sql pour créer ce schéma.  ​ 
- 
-//​Remarque ://​ Pour vérifier que les tables Employe, Projet, Embauche et Grille_sal ont été créées, ​  ​utiliser,​ par exemple, la commande @liste. 
  
  
 Les tables que vous venez de créer sont vides. Vous pouvez le vérifier en exécutant une requête du style  Les tables que vous venez de créer sont vides. Vous pouvez le vérifier en exécutant une requête du style 
 <code sql>  <code sql>
- ​select * from nom_table ;​+ ​select ​count(*from nom_table ;​
 </​code>​ </​code>​
  
Ligne 39: Ligne 38:
  
  
-Pour la suite des questions, il vous est demandé d'​insérer ​dans Employe ​les n-uplets ​suivants :+Pour la suite des questions, il vous est demandé d'​insérer ​de vider Employe ​et d'​insérer trois nouveaux ​n-uplets ​en exécutant les commandes suivantes :
 <code sql>  <code sql>
-          ​22334, '​Adam',​ '​Funk',​ '​Paris',​ '​1-12-1982'​  +delete from Employe; 
-       45566, '​Rachid',​ '​Allaoui',​ '​Lyon',​ '​13-4-1986'​  ​      + 
-       77889, '​Florent',​ '​Girac'​ , '​Marseille',​ '​4-11-1990'​+insert into Employe (NumSS, NomE, PrenomE, VilleE, DateNaiss) 
 +select * from ( 
 +       ​select 22334, '​Adam',​ '​Funk',​ '​Paris', ​ ​PARSEDATETIME('​1-12-1982'​,  '​dd-mm-yyyy'​) union all 
 +       select 45566, '​Rachid',​ '​Allaoui',​ '​Lyon', ​PARSEDATETIME('​13-4-1986'​,  '​dd-mm-yyyy'​)       union all 
 +       select 77889, '​Florent',​ '​Girac'​ , '​Marseille', ​PARSEDATETIME('​4-11-1990'​, '​dd-mm-yyyy'​) 
 +); 
 +select * from Employe;
 </​code> ​     ​ </​code> ​     ​
  
Ligne 51: Ligne 56:
  
  
-A présent, il est vous demandé d'​insérer dans Projet ​les nuplets ​suivants +A présent, il est vous demandé d'​insérer dans Projet ​trois nuplets ​en exécutant les commandes suivantes 
 <code sql>  <code sql>
-                ​123, '​ADOOP',​ 22334, '​Paris',​ 120000 + 
- 757, '​SKALA',​ 45566, '​Lyon',​ 180000 +insert into Projet values (123, '​ADOOP',​ 22334, '​Paris',​ 120000); 
- 890, '​BAJA',​ 22334, '​Paris',​ 24000+insert into Projet values (757, '​SKALA',​ 45566, '​Lyon',​ 180000); 
 +insert into Projet values (890, '​BAJA',​ 22334, '​Paris',​ 24000);
 </​code>​ </​code>​
   * **7.** ​  Peut on insérer des n-uplets dans Embauche en l’état ?​   * **7.** ​  Peut on insérer des n-uplets dans Embauche en l’état ?​
  
  
-Insérer les nuplets suivants dans la table Grille_sal+Insérer les nuplets suivants dans la table Grille_sal ​trois nuplets comme suit : 
 <code sql> <code sql>
- '​Admin',​ 80000 +insert into grille_sal values ('​Admin',​ 80000); 
- '​Deve', ​   45000 +insert into grille_sal values ('​Deve',​45000); 
- '​Tech', ​    ​35000+insert into grille_sal values ('​Tech',​35000);
 </​code>​ </​code>​
   * **8.  ** Proposer une insertion dans Embauche qui ne respecte pas au moins une contrainte parmi celles définies pour cette table.   * **8.  ** Proposer une insertion dans Embauche qui ne respecte pas au moins une contrainte parmi celles définies pour cette table.
Ligne 70: Ligne 76:
 <fc #​6495ed>​Suppressions rejetées</​fc>​ <fc #​6495ed>​Suppressions rejetées</​fc>​
  
-Afin de répondre aux questions qui suivent, ​tapez la commande +Afin de répondre aux questions qui suivent, ​exécuter les commandes se trouvant dans [[site:​enseignement:​licence:​2i009:​donnees:​tme8-creations-h2|Creation]] puis celles dans [[site:​enseignement:​licence:​2i009:​donnees:​tme8-insertions-h2|Insertions]] 
-<code sql> +
- @TME8-insertions +
-</​code>​+
  
   * **9.** ​  ​Proposer une suppression de nuplets de Employe qui ne respecte pas une contrainte référentielle d'une autre table. Précisez laquelle puis essayer de contourner les contraintes jusqu'​à pouvoir supprimer les nuplets de Employe référencés nulle part.    * **9.** ​  ​Proposer une suppression de nuplets de Employe qui ne respecte pas une contrainte référentielle d'une autre table. Précisez laquelle puis essayer de contourner les contraintes jusqu'​à pouvoir supprimer les nuplets de Employe référencés nulle part. 
Ligne 85: Ligne 89:
 <fc #​6495ed>​Mises à jour rejetées</​fc>​ <fc #​6495ed>​Mises à jour rejetées</​fc>​
  
-Remettre la base à l'​état initial en tapant la commande: +Remettre la base à l'​état initial en exécutant les commandes se trouvant dans [[site:enseignement:​licence:​2i009:​donnees:​tme8-creations-h2|Creation]] puis celles dans [[site:​enseignement:​licence:​2i009:​donnees:​tme8-insertions-h2|Insertions]] 
-<code sql> +
- @TME8-insertions +
-</​code>​+
  
   * **13.** ​ Proposez un mise à jour de  Employe qui ne respecte pas les contraintes référentielles puis tenter de trouver une mise-a-jour qui les respecte toutes.   * **13.** ​ Proposez un mise à jour de  Employe qui ne respecte pas les contraintes référentielles puis tenter de trouver une mise-a-jour qui les respecte toutes.
Ligne 100: Ligne 102:
 <fc #​ff0000>​**2. Deuxième Partie**</​fc>​ <fc #​ff0000>​**2. Deuxième Partie**</​fc>​
  
 +Comme indiqué précédemment,​ le but de cette partie d'​illustrer un cas où les mises-a-jour ne sont pas rejetées mais plutôt propagées. ​
 +Pour ce faire exécuter les commandes se trouvant dans [[site:​enseignement:​licence:​2i009:​donnees:​tme8-creations-cascade-h2|Creation-contraintes-cascade]]
 +puis insérer les nuplets en exécutant les commandes de [[site:​enseignement:​licence:​2i009:​donnees:​tme8-insertions-h2|Insertions]].
  
-Pour cette partietapez la commande: +Désormaisil sera possible ​de supprimer des nuplets ​d'une table référencées par une autre table. 
-<code sql> +Pour le voir, supprimer les n-uplets de Employe et vérifier que tous les n-uplets des autres tables qui référencent des employés venant d'​être supprimés ​sont aussi supprimés.
-@TME8-insertions-bis +
-</​code>​ +
- +
-Comme indiqué précédemment,​ le but de cette partie ​d'illustrer un cas où les mises-a-jour ne sont pas rejetées mais plutôt propagées. Pour le voir, supprimer les n-uplets de Employe et vérifier que tous les n-uplets des autres tables qui référencent des employés venant d'​être supprimés ​seront supprimés eux aussi.+
site/enseignement/licence/2i009/tme9-h2.1586816197.txt.gz · Dernière modification: 14/04/2020 00:16 par amine