site:enseignement:licence:2i009:tme8_h2
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
site:enseignement:licence:2i009:tme8_h2 [15/04/2020 16:35] – amann | site:enseignement:licence:2i009:tme8_h2 [16/04/2021 09:52] (Version actuelle) – [Exercice 3] amine | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== TME 8: création de schémas – contraintes d' | + | ====== TME 8: création de schémas – contraintes d' |
<fc # | <fc # | ||
- | Ce TME se base sur le TD8 et vise à illustrer la modification des tables | + | ===== Exercice 1 ===== |
+ | |||
+ | Créez | ||
* **EMPLOYE**(__NumSS__, | * **EMPLOYE**(__NumSS__, | ||
Ligne 10: | Ligne 13: | ||
* **GRILLE_SAL** (__Profil__, | * **GRILLE_SAL** (__Profil__, | ||
- | ===== Exercice | + | ===== Exercice |
- | Créez | + | Tester les contraintes existantes sur le schéma |
+ | ===== Exercice 3 (facultatif) ===== | ||
- | Dans ce qui suit, il vous est demandé | + | On considère le schéma relationnel suivant |
- | ==== Syntaxe pour l' | + | |
- | <code sql> | + | |
- | Par exemple, pour insérer une employée 'LARS Anna', qui habite ' | + | * ALBUM(albumId, albumTitre, parution, genre, label) |
- | 08-1975, il suffit d' | + | * PISTE(pisteId, albumId, pisteTitre, interId, compId, durée) |
- | <code sql> | + | * ARTISTE(artistId, nom, typeArtiste) |
+ | * COMPTE(email, | ||
+ | * ABONNÉ(email) | ||
+ | * PLAYLIST(email, | ||
+ | * AVIS(email, pisteId, albumId, score) | ||
- | et de constater que la système retourne bien le message | ||
- | <code bash>1 ligne(s) insérée(s)</ | ||
- | ==== Syntaxe | + | Chaque album (table ALBUM) est identifié par un identifiant (albumId) et on stocke le titre (albumTitre), |
- | <code sql> | + | |
+ | Les artistes sont stockés dans la table ARTISTE qui contient l’identifiant (artistId) et le nom de l’artiste (32 charactères max). On distingue entre trois types d' | ||
+ | |||
+ | Les pistes de chaque album (table PISTE) sont identifiées par le numéro de piste (pisteId) et l’identifiant de l’al bum. On stocke le titre de la piste (obligatoire), | ||
+ | |||
+ | |||
+ | Tous les comptes utilisateurs (table COMPTE) sont identifiés | ||
+ | par leur email (32 charactères max) et on stocke leur temps d' | ||
+ | Tous les utilisateurs peuvent écouter des chansons et donner un avis (score optionnel entre -5 et 5). Uniquement les abonnées peuvent maintenir une playlist (table PLAYLIST). | ||
+ | |||
+ | Question 1 : Définissez le schéma H2 avec contrainte de clé (PRIMARY KEY et UNIQUE), contrainte référentielle (FOREIGN KEY), contrainte de domaine (valeurs possibles des attributs, NOT NULL) et contrainte de tuple (condition liant les valeurs des différents attributs | ||
+ | de la table). | ||
+ | |||
+ | Question 2: Est-ce qu'il est possible qu'un compositeur d'une piste (table PISTE) soit un interprête dans la table ARTISTE ? Si oui, comment faudrait-il modifier le schéma pour éviter cette incohérence. | ||
- | ===== Exercice 2 ===== | ||
- | Insérez dans chaque table au moins un n-uplet qui vérifie les contraintes d' | ||
- | ===== Exercice 3 ===== | ||
- | Proposez des insertions qui violent les contraintes d' | ||
- | Par exemple, l' | ||
- | <code sql> | ||
- | viole la contrainte de clé primaire de Employe car elle tente d' | ||
- | Si vous tentez d' | ||
- | <code bash> | ||
- | Unique index or primary key violation: " | ||
- | INSERT INTO employe VALUES(21456,' | ||
- | 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> | ||
- | ;</ | ||
- | 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' | ||
- | - Proposer une insertion dans la table Employé qui ne respecte pas la contrainte de longueur de l' | ||
- | - 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' |
site/enseignement/licence/2i009/tme8_h2.1586961328.txt.gz · Dernière modification : de amann