corrige_1
corrige_1
corrige_1
Session 1 de Printemps
SUJET + CORRIGE
Avertissement
La plupart des questions sont indépendantes.
Le barème total est de 23 points car le sujet est assez long.
Le barème de chaque question est (approximativement) proportionnel à sa diculté.
L'espace pour répondre est susant (sauf si vous l'utilisez comme brouillon, ce qui est fortement déconseillé).
Question 1.1 (1 point) Pour la relation Personnes, donnez la seule dépendance fonctionnelle déclarée, puis
expliquez à quoi correspond la contrainte d'intégrité.
Réponse :
1/ 7
INF 159 : Bases de données Session 1, Année 2010/2011
−− Clefs etrangeres
−− PostgreSQL exige une fonction pour les contraintes d' integrite avec SELECT
Réponse :
Pour chaque triplet, les identités de l'enfant, de la mère et du père sont toutes diérentes.
Les parents doivent avoir 10 ans au moment de la naissance de leurs enfants.
Le père doit être de sexe masculin, et la mère de sexe féminin.
CREATE TABLE Genealogie . Mariages (
−− T y p a g e d e s a t t r i b u t s
Femme s e r i a l NOT NULL ,
Mari s e r i a l NOT NULL ,
D a t e M a r i a g e date NOT NULL ,
D a t e D i v o r c e date NOT NULL DEFAULT ' i n f i n i t y ' ,
−− C l e f s c a n d i d a t e s
PRIMARY KEY (Femme , Mari , D a t e M a r i a g e ) ,
UNIQUE (Femme , Mari , D a t e D i v o r c e ) ,
−− C l e f s e t r a n g e r e s
FOREIGN KEY (Femme) REFERENCES G e n e a l o g i e . P e r s o n n e s ( I d ) ,
FOREIGN KEY ( Mari ) REFERENCES G e n e a l o g i e . P e r s o n n e s ( I d ) ,
−− C o n t r a i n t e s d ' i n t e g r i t e e l e m e n t a i r e
2/ 7
INF 159 : Bases de données Session 1, Année 2010/2011
−− PostgreSQL exige une fonction pour les contraintes d' integrite avec SELECT
Réponse :
Question 1.4 (1 point) En tenant compte uniquement des dépendances fonctionnelles que vous avez listées
dans les réponses précédentes, dites si les relations Personnes, Parents et Mariages sont 3NF et/ou BCNF.
Réponse :
3/ 7
INF 159 : Bases de données Session 1, Année 2010/2011
Question 1.5 (1 point) Après en avoir donné une écriture algébrique, écrire une requête SQL qui caractérise
les identiants des Enfant ayant pour mère 7 et pour père 4.
SELECT Enfant
FROM Genealogie . Parents
WHERE G e n e a l o g i e . P a r e n t s . Mere = 7
AND G e n e a l o g i e . Parents . Pere = 4;
Question 1.6 (1,5 point) Après en avoir donné une écriture algébrique, écrire une requête SQL qui caracté-
rise les noms, prénoms et date de naissance des enfants de 4. La requête listera les réponses par ordre croissant
des dates de naissance.
4/ 7
INF 159 : Bases de données Session 1, Année 2010/2011
Question 1.9 (1 point) Lister les problèmes posés par la fusion des relations Personnes et Parents en une
seule relation qui contiendrait l'union des attributs.
Réponse :
C'est le problème de l'oeuf et de la poule. On ne peut pas ajouter une personne sans connaître ses parents.
Une solution consiste à accepter des attributs à valeurs indénies. Deux inconvénients : on sort du cadre rela-
tionnel, et les contraintes d'intégrité sont très diciles à écrire.
Question 1.10 (1,5 point) Une personne propose de scinder la relations Personnes en deux relations Hommes
et Femmes ayant les mêmes listes d'attributs (Id, Nom, Prenom, DateNaissance, DateDeces) . Donnez les
avantages et les inconvénients de ce nouveau schéma par rapport au précédent.
Réponse :
Avantages : Certaines contraintes s'écrivent plus facilement car il n'est pas nécessaire de faire les tests sur le
sexe d'une personne.
Inconvénients : Un homme et une femme peuvent avoir les mêmes identiants, ce qui demande d'ajouter
un attribut (lequel ?) dans la table parents qui n'est plus une relation, car il n'y a plus de clefs candidate
possible. Une solution consiste à imposer que les identiants soient diérents (positifs pour les uns et
négatifs pour les autres, ou bien pairs et impairs), ce qui revient à encoder l'information du sexe. Une
autre solution consiste à faire deux relations parents : parents des garçons et parents des lles. Les requêtes
deviennent compliquées à écrire.
5/ 7
INF 159 : Bases de données Session 1, Année 2010/2011
Question 2.1 (1 point) Donnez toutes les clefs candidates de la relation Concerts.
Question 2.2 (1 point) Même si l'on suppose qu'il n'y a aucun doublon dans Concerts, justiez pourquoi la
relation Concerts n'est pas en troisième forme normale.
Réponse : Une seule des explications suivantes est susante (liste non exhaustive).
Non 2NF : La clef {Salle, Jour} contient {Salle} qui détermine {Categorie}.
Non 3NF : La clef {Salle, Jour} et {Categorie} −→ {NbPlaces}.
Non 3NF : La clef {Salle, Jour} et {Soliste} −→ {TypeMusique}.
Question 2.3 (2 points) Appliquez un algorithme (ou une technique) de normalisation pour obtenir une dé-
composition, sans perte d'information, de la relation Concerts en un ensemble de relations au moins en troi-
sième forme normale. Vous n'écrirez sur la copie que les nouvelles relations et les dépendances fonctionnelles
qui sont à la base des projections eectuées.
Question 2.4 (3 points) Après avoir précisé si votre décomposition est en BCNF ou bien seulement en 3NF,
répondez aux questions qui vous concernent.
Votre décomposition est en BCNF :
1. Indiquez la dépendance fonctionnelle que vous avez perdue.
2. En supposant que cette dépendance ne soit pas écrite sous forme d'une contrainte, donnez un ensemble
de requêtes d'insertion pour vos relations, qui viole cette dépendance fonctionnelle.
Votre décomposition est seulement en 3NF :
1. Indiquez le problème de redondance qui subsiste.
2. Donnez un ensemble de requêtes d'insertion pour vos relations, suivi d'une requête de mise à jour
qui nécessite que le SGBD modie eventuellement plusieurs tuples, du fait de la redondance.
Réponse :
Décomposition en BCNF :
1. {Orchestre, TypeMusique } −→ {Soliste}.
2. Les insertions suivantes sont possibles :
INSERT INTO S o l i s t e s VALUES ( s1 , t1 ) ;
INSERT INTO S o l i s t e s VALUES ( s2 , t1 ) ;
INSERT INTO J o u r s C o n c e r t s VALUES ( s a l l e 1 , ' 01 − 01 − 2011 ' , o r c 1 , s 1 ) ;
INSERT INTO J o u r s C o n c e r t s VALUES ( s a l l e 1 , ' 02 − 01 − 2011 ' , o r c 1 , s 2 ) ;
6/ 7
INF 159 : Bases de données Session 1, Année 2010/2011
Question 3.1 (1 point) Donner les objectifs de l'algorithme de reprise après la panne.
Réponse : L'objectif principal est la reprise du service. Cette reprise doit pénaliser le moins possible les ap-
plications clientes. Elle doit donc remettre la base dans un état cohérent vis à vis de l'information connue des
clients, ainsi :
Un client ne doit pas avoir à refaire une transaction terminée avant la panne.
Un client doit avoir à refaire une transaction non terminée avant la panne.
7/ 7