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.
Artiste (N°Artiste : Autoincrement, Type : bit, Nom : text, Prénom : text, Rôle : text,
Nature : text)
AlbumArtiste (RefAlbum : int, RefArtiste : int)
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.