TD 5. Schéma de Base de Données. Base de données Discothèque.

publicité
UFR SEGMI.
Science éco-gestion et
langues.
Année Universitaire 2009-2010.
S. Baarir.
TD 5.
Schéma de Base de Données.
Base de données Discothèque.
Description du cas d’étude
Il s’agit de réaliser la Base de Données d’une Discothèque privée. Cette discothèque contient
des albums de musique classique.
Un album contient les enregistrements de un ou plusieurs œuvres. Chaque œuvre (symphonie,
sonate, opéra, etc.) a au plus un auteur. Un album a un titre (mentionné sur la tranche, il
permet de le retrouver rapidement dans les rayons). On souhaite aussi enregistrer le nombre
de CD de l’album ainsi que son prix d’achat.
Un compositeur est souvent l’auteur de plusieurs œuvres. Pour chaque compositeur, on
souhaite enregistrer son nom, son prénom, l’année de sa naissance et celle de sa mort. Il y a
dans notre discothèque des œuvres de compositeurs vivants.
Pour chaque œuvre, on souhaite connaître son titre complet (exemple : concerto pour violon
en la mineur op.53 – le compositeur est Antonin Dvořák).
Exercice 1 : Schéma de la BD
•
Décrire les tables (les schémas de tables) qui permettent de mémoriser ces informations, en
précisant :
o les types des différents champs, leurs valeurs par défaut, et toutes les propriétés qui
vous semblent intéressantes),
o les liens logiques qui les unissent (préciser les clefs externes et leurs types) dans les
deux cas suivants :
1. une œuvre ne peut figurer que dans un seul album ;
2. une œuvre peut figurer dans plusieurs albums.
Solution :
Album
(N°album : Autoincrement, titre : text, NbCd : int, Prix : numeric)
Compositeur(N°Compositeur : Autoincrement , nom : text, prénom : text, AnnéeN : date,
AnnéeD : date)
Avec la contrainte (1) :
Œuvre
(N°œuvre : Autoincrement, Titre : text, type : text, RefCompositeur : int,
RefAlbum : int)
Avec la contrainte (2) :
Œuvre
(N°œuvre : Autoincrement, Titre : text, type : text, RefCompositeur : int)
AlbumŒuvre(RefAlbum : int , RefŒuvre : int)
Exercice 2 : Plusieurs artistes par album
Pour chaque album on désire enregistrer la liste des artistes y ayant participé. Par artiste on
entend aussi bien une personne qu’un groupe constitué.
Pour une personne, on enregistrera son nom et son prénom ainsi que son rôle (piano, chant,
direction d’orchestre, etc.) ; exemple : Isaac Stern, violon.
Pour un groupe on enregistrera sa nature (orchestre, quatuor, chœur, etc.) et son nom ;
exemple : orchestre de Philadelphie.
Un artiste peut bien entendu participer à plusieurs albums ; et il en faut plusieurs en général
pour un album (exemple : pour le concerto de Dvořák susnommé, il faut un soliste, un
orchestre et un chef).
•
Décrire les tables qui permettent de mémoriser ces informations et de les relier entre elles
et aux précédentes (en reprenant, de l’exo. 1, le schéma avec la contrainte 2).
Solutions :
Solution 1 (simple mais non optimale). Elle n’est possible que si l’on autorise que certains
champs ne soient pas renseignés.
(N°Artiste : Autoincrement, Type : bit, Nom : text, Prénom : text, Rôle : text,
Nature : text)
AlbumArtiste (RefAlbum : int, RefArtiste : int)
Artiste
Dans ce cas, le champ Type peut prendre deux valeurs 1/0 : 1 pour indiquer une personne et
0 pour indiquer un groupe. Si c’est une personne alors les champs Nom, Prénom et Rôle sont
renseignés, sinon c’est les champs Nom et Nature qui sont renseignés.
Solution 2 (optimale):
Artiste
(N°Artiste : Autoincrement, Nom : text)
ArtsitePhysique (N°PPhy : int, Prénom : text, Rôle : text)
ArtsiteGroupe (N°PGroup : int, Nature : text)
AlbumArtiste (RefAlbum : int, RefArtiste : int)
Dans ce cas, les champs N°PPhy et N°PGroup sont des clefs primaires (de leur tables
respectives) et externes en même temps. Chacune référence la clef primaire de la table
Artiste.
Exercice 3 : Plusieurs rôles par artiste
Il arrive qu’un artiste puisse jouer plusieurs rôles différents ; par exemple : soliste et chef
d’orchestre, ou bien soliste de plusieurs instruments tels que violon et alto, etc.).
•
Modifier le schéma de la base de données pour prendre en compte cette modification,
sachant que :
1. un même artiste peut jouer plusieurs rôles dans un même album ;
2. on ne souhaite pas enregistrer plusieurs fois l’identité de l’artiste.
Solutions :
Solution 1 : en se basant sur la solution 1 de l’exercice précédent, on doit modifier les tables
comme suit.
Artiste
(N°Artiste : Autoincrement, Type : bit, Nom : text, Prénom : text, Nature : text)
AlbumArtiste (RefAlbum : int, RefArtiste : int, Rôle : text)
PS : la clef primaire de la table AlbumArtiste est composée des trois champs.
Solution 2 : de la même façon, mais en se basant sur la solution 2 cette fois, on doit modifier
les tables comme suit.
Artiste
(N°Artiste : Autoincrement, Nom : text)
ArtsitePhysique (N°PPhy : int, Prénom : text)
ArtsiteGroupe (N°PGroup : int, Nature : text)
AlbumArtiste (RefAlbum : int, RefArtiste : int, Rôle : text)
Exercice 4 : Création de la base sous ACCESS
Une fois le schéma de la base de données stabilisé (terminé). On veut maintenant implémenter
la Base de Données. Notre choix porte sur ACCESS comme SGBD.
•
Ecrire toutes les requêtes SQL (de définition) nécessaires à la création de la BD sous ACCESS,
en assurant, à chaque fois, l’intégrité référentielle des tables.
Solution : voir la BD (.mdb) associée à ce document.
Téléchargement