TD n°8 - Membres

Transcription

TD n°8 - Membres
BD4
TD 8
L3 MASS-M1 ISIFAR
2015-2016
Dépendences fonctionnelles et normalisations
1
Définitions
Une dépendance fonctionnelle est un énoncé du type
A1 , A2 , . . . , Ak → Ak+1 , . . . , An
où A1 , A2 , . . . , Ak , Ak+1 , . . . , An sont des attributs (colonnes) d’une base de données. Elle
signifie que deux tuples ayant la même valeur sur A1 , . . . , Ak doivent avoir la même valeur
sur chaque colonnes Ak+1 , . . . , An (en français : A1 , . . . , Ak déterminent Ak+1 , . . . , An ). On
dit que les attributs Ak+1 , . . . , An dépendent fonctionnellement de A1 , A2 , . . . , Ak .
La notion de dépendance est transitive : si A → B et B → C alors A → C. Un ensemble
de dépendances fonctionnelles F est minimal si aucune dépendance ne peut être déduite des
autres par transitivité.
La clôture transitive des attributs A1 , . . . , Ak pour un ensemble de dépendances fonctionnelles F est l’ensemble des attributs B1 , . . . , B` qui dépendent fonctionnellement de
A1 , . . . , Ak . On la note [A1 , . . . , Ak ]F
+ . Un ensemble d’attributs A1 , . . . , Ak est une clef pour
une relation R(B1 , . . . , B` ) si ce sont des attributs de R et si sa clôture transitive contient
B1 , . . . , B` . C’est une clef primaire si elle est minimale, c’est-à-dire, aucun sous-ensemble
strict de cette clé n’est une clé.
Un schéma est en :
— Forme normale 1 si tout attribut est atomique.
— Forme normale 2 si un attribut ne fait pas partie d’une clef, il ne peut pas dépendre
d’une partie stricte d’une clef primaire.
— Forme normale 3 Pour toute dépendance fonctionnelle, le membre de gauche contient
une clef ou tout attribut du membre de droit appartient à une clef primaire.
Un schéma et un ensemble de dépendances fonctionnelles peut se décomposer en une
collection de schémas, dans le sens où chaque relation R peut se décomposer en R1 , . . . , Rk
tels que Ri = πi (R) pour une certaine projection πi .
On dit cette décomposition sans perte d’information si toute relation R du schéma d’origine peut être retrouvée à partir des relations R1 , . . . , Rk : R = π1 (R) ./ . . . ./ πk (R).
On dit que cette décomposition respecte les dépendances fonctionnelles si celles-ci sont
toujours satisfaites par la nouvelle décomposition.
Exemple/excercice. En exemple, considérons la table suivante qui liste les tournois de
tennis et leur gagnant :
Année
Tournoi
Surface
Gagnant
Sexe
Nationalités
1984
Roland Garos H
Terre battue
Yannick Noah
M
Française
1992
Wimbledone H
Herbe
Andre Agassi
M
Américaine, Arménienne
2003
Australian Open F
Hard
Serena Williams
F
Américaine
On a les dépendances fonctionnelles suivantes :
1. (Année, Tournoi) → Gagnant
2. Tournoi → Surface
3. Gagnant → (Sexe, Nationalités).
Quelles sont les clefs de cette table ? Quelles sont les clefs primaires ? Pour chaque forme
normale sus-citée, expliquez pourquoi la table n’est pas dans cette forme normale et réparer
la table pour qu’elle respecte cette forme normale.
1
BD4
TD 8
2
L3 MASS-M1 ISIFAR
2015-2016
TD
On veut créer une base de données servant à faire l’emploi du temps d’une université. Le
service concerné a envoyé aux informaticiens de l’université le schéma suivant pour qu’il soit
implémenté.
ELEVE(Mid,Nom,Prénom,Cid)
COURS(Cid,DateDebut,DateFin,HoraireDebut,HoraireFin,Durée,Pnom,Pprénom,Pgrade,PUFR,
Groupe,UFR,responsable,année,cursus,matière,semestre, NumSalle,batiment,equipementSalle)
où Duree est la durée horaire du cours, par séance ; Pnom,Pprenom sont les noms et prénoms
du professeur, Pgrade son grade (maı̂tre de conférence, professeur, moniteur, ATER), PUFR
l’UFR qui l’emploi ; UFR est l’unité de recherche et de formation de la matière. Par exemple
voici des tuples de la table COURS :
(1,12-01-2016,17-04-2016,13h30,14h30,1h,’Boucheron’,’Stéphane’,Professeur’,1,’Mathématiques’,
’Mathématiques’,’Boucheron’,2015,’ISIFAR’,’BDD’,2,2004,’SG’,’Linux’)
(1,12-01-2016,17-04-2016,15h00,16h00,1h,’Capelli’,’Florent’,’Moniteur’,2,’Informatique’,
’Mathématiques’,’Boucheron’,2015,’L3 MIASS’,’BDD’,2,2005,’SG’,’Mac’)
1. Cette base de données est mal faite. Expliquez pourquoi.
2. Proposer un schéma qui efface ces problèmes. Précisez bien les clefs.
3. Donnez les cardinalités et proposez des dépendances fonctionnelles pour ce nouveau
schéma. Votre schéma est-il en forme normale 1, 2 ou 3 ?
3
TP
On va travailler sur le schéma ATP (cf. feuille jointe).
1. Quelles sont les dépendances fonctionnelles de la table tournament ? Est-elle en FN3 ?
2. Mettre la table tournament en FN3 en la séparant en deux tables : une table tournament
qui contient les informations constantes d’un tournoi et une table tournament_edition
qui contient les informations propres à chaque édition du tournoi.
3. Créez ce schéma dans votre schéma personnel avec les contraintes de clés primaires et
étrangère et importez les données de tournament.
4
DM
Chaque joueur est identifié par un identifiant pid. Pour chaque tournoi, il s’inscrit (tables
played_in et registration) et obtient un numéro d’enregistrement valable pour ce tournoi. La table match liste les matchs par tournois. Si un tournoi est en n rounds (colonne
numrounds), alors la colonne round de match est un nombre entre 1 et n qui contient le
numéro du round, n étant la finale. La colonne winner de match_result contient le numéro
d’inscription du joueur ayant gagné le match mid.
1. Écrire une fonction SQL qui étant donné le prénom et le nom d’un joueur renvoie la
liste des identifiants des tournois dans lesquels il a joué :
CREATE OR REPLACE FUNCTION e n t i d . t o u r n o i s j o u e s ( prenom v a r c h a r ( 4 5 ) ,nom
varchar (45) )
RETURNS TABLE( t i d INTEGER) LANGUAGE s q l AS $$ . . . $$ ;
2. Écrire une fonction SQL qui étant donné le prénom et le nom d’un joueur renvoie la
liste des identifiants des tournois qu’il a gagné :
CREATE OR REPLACE FUNCTION e n t i d . t o u r n o i s g a g n e s ( prenom v a r c h a r ( 4 5 ) ,nom
varchar (45) )
RETURNS TABLE( t i d INTEGER) LANGUAGE s q l AS $$ . . . $$ ;
2

Documents pareils