Bases de Données
Année 2003-2004
24 Mars 2004
- durée 2 heures -
Les documents ne sont pas autorisés.
Les exercices sont indépendants.
L’ordre des questions ne détermine pas la difficulté.
Exercice 1 : Questions
de cours (4 points)
Chose promise, chose due :
1. Donnez la définition d’une clé primaire.
2. Donnez
la définition d’une clé étrangère.
3. Pourquoi a-t-on besoin de la notion de transaction dans les SGBD ?
Exercice 2 : Requêtes
(12 points)
Le schéma relationnel suivant représente la gestion simplifiée d’un zoo. Les clés primaires sont soulignées, les clés étrangères sont suivies d’un dièse (#). Ce schéma est en BCNF.
Animal( NumA, Nom, Poids, Date de naissance, Lieu de
naissance, Date de mort, Sexe, NumPere#, NumMere#, NumE# )
Emplacement( NumE, Taille )
Nourriture( NumN, Descriptif, Stock courant, Stock minimum
pour rachat, Prix unitaire )
MangeParJour( NumA#, NumN#, Qte )
Personnel( NumP, Nom, Prénom, Fonction, Age )
SOccupeDe( NumP#, NumA# )
A – Ecrivez
les requêtes suivantes en algèbre
relationnelle puis en SQL (2 réponses par question)
1. Donnez la liste des animaux (description complète) du zoo.
2. Donnez la liste des animaux (description complète) encore en vie.
3. Donnez la liste des animaux (numéro et nom) mangeant plus de 30 kg par jour.
4. Donnez la liste des animaux (numéro et nom) avec leur emplacement ainsi que les personnes qui s’en occupent.
B – Ecrivez
les requêtes suivantes en SQL uniquement
5. Donnez la liste de nourriture à commander.
6. Donnez pour chaque personne, la liste des animaux dont il a la charge.
7. Donnez la durée moyenne de vie des animaux par sexe.
8. Donnez la liste des animaux qui mangent plus par jour qu’il ne pèse.
9. Donnez la quantité de nourriture nécessaire par jour par emplacement.
10. Donnez la liste des animaux plus vieux que l’une des personnes qui en a la charge.
11. Quel est l’animal qui coûte le plus cher en nourriture.
12. Afficher tous les descendants de l’animal numéro 24. (BONUS. Information : laissez vos intuitions prendre le dessus sur votre raison).
Exercice 3 :
Normalisation et Dépendances Fonctionnelles (4 points)
Modification de schéma et
Normalisation
On souhaite modifier notre modèle afin d’éviter l’utilisation d’un même emplacement pour des animaux incompatibles c’est-à-dire où l’un peut est une proie pour l’autre.
1. Proposez un nouveau modèle permettant de mettre en évidence ce problème. Il faudra bien sûr vérifier que le modèle que vous proposez soit bien en BCNF (rappel : le schéma initial est en BCNF).
2. Proposez une requête SQL permettant d’afficher la liste des emplacements posant un problème.
Dépendances Fonctionnelles
Considérons la relation R(A, B, C, D) avec les DF A ® D, BD ® C et AD ® B.
3. Quel(s) est (sont) la (les) clé(s) de cette relation ?
4. Est-ce
que cette relation est en 3 BCNF ?
Si oui, justifiez votre réponse.
Sinon, normalisez cette relation en 3 BCNF.
Rappel de cours :
Propriétés des DF : X et Y sont deux ensembles d’attributs.
Réflexivité |
Si Y Í X |
alors X ® Y (et donc X ® X) |
Augmentation |
Si X ® Y et W Í Z |
alors X, Z ® Y, W |
Transitivité |
Si X ® Y et Y ® Z |
alors X ® Z |
Pseudo-transitivité |
Si X ® Y et Y, Z ® W |
alors X, Z ® W |
Union |
Si X ® Y et X ® Z |
alors X ® Y, Z |
Décomposition |
Si X ® Y, Z |
alors X ® Y et X ® Z |
Première forme normale :
Une relation est en 1 NF, si tous ses attributs sont atomiques (mono-valués).
Deuxième forme normale :
Une relation est en 2 NF si et seulement si :
· Elle est en 1 NF
· Tout attribut n’appartenant pas à la clef primaire est en DF totale avec la clef primaire.
Troisième forme normale :
Une relation est en 3 NF si et seulement si :
· Elle est en 2 NF
· Elle ne contient pas de DF Transitive entre attributs non-clef
3 BCNF :
Une relation est en BCNF si et seulement si :
· Elle est en 2 NF
· Toute source de DF est une clef primaire minimale