version pour H2
Créez le schéma Entreprise du TD sous H2 et associez aux tables les contraintes d'intégrité correspondantes.
Tester les contraintes existantes sur le schéma précédent en exécutant les commandes spécifiées dans ce fichier: TME8
On considère le schéma relationnel suivant d’une application d’écoute de musique sur Internet de type Deezer :
Chaque album (table ALBUM) est identifié par un identifiant (albumId) et on stocke le titre (albumTitre), l’année de parution, le genre et le label. Il y a exactement trois genres ('jazz', 'classique', 'rock') et deux labels ('Sony', 'Universal') possibles.
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'artistes ('compositeurs', 'interprêtes', 'interprêtes-compositeurs').
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), l’identifiant de l’interprète (interId), l’identifiant du compositeur (compId) et la durée en secondes (spérieur à 0).
Tous les comptes utilisateurs (table COMPTE) sont identifiés par leur email (32 charactères max) et on stocke leur temps d'écoute global (0 par défaut). Les comptes avec un abonnement sont identifiés dans la table ABONNE. 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 pour tous les n-uplets 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.