Frédéric Gava (MCF) gava@univ

Transcription

Frédéric Gava (MCF) gava@univ
Le modèle relationnel
Frédéric Gava (MCF)
[email protected]
LACL, bâtiment P2 du CMC, bureau 223
Université de Paris XII Val-de-Marne
61 avenue du Général de Gaulle
94010 Créteil cedex
« Théorie »
2/16
Définitions (1)
C’est le modèle le plus utilisé par les SGBD actuels. Il
n’utilise que le concept de relation. On peut lui associer le
cadre mathématique de l’algèbre relationnelle (non vue ici)
Une relation est une partie d’un produit cartésien
d’ensembles. Dans le langage SGBD, les ensembles sont
appelés domaine
L’arité d’une relation est le nombre de ses domaines
Une relation est représenté par une table où les lignes sont
des « uplets » et les colonnes des composants (ou attributs).
Exemple :
Numéro avocat
Nom
Prénom
Nombre de clients
1
Lecouturier
Guigui
10
2
Collard
Bebert
0
3
Vergès
Jacquy
100
3/16
Définitions (2)
Cette table représente un ensemble d’avocats. Pour facilité
la lisibilité de la table, on nomme les colonnes (nom,
domaine). Exemple (nom, chaîne de caractères)
Le schéma de la relation est la liste de ses attributs
(numéro, nom, prénom, nb_clients)
Pour simplifier, on omettra les domaines, ils sont souvent
implicite.
Les notions de clé et de dépendance fonctionnelle seront
aussi utilisées. Les attributs constituant la clé d’une table
seront soulignés.
Si un attribut d’une table appartient à la clé principale
d’autre autre table, il est dit clé externe (ou étrangère). On le
mettra en rouge.
4/16
Définitions (3)
Le schéma de relation donne la signification ou
l’interprétation de la relation. Il est définit par :
son nom
la liste des attributs
ses clés et clés externes
sa définition
la liste des contraintes
Par mis les contraintes se trouvent les dépendances
fonctionnelles
5/16
Exemple Complet
Avocats (numéro, nom, prénom, nb_clients)
(nom, chaîne de caractères)
(prénom, chaîne de caractères)
(numéro, entier)
(nb_client, entier)
Contrainte : le nom ne peut être identique au
prénom.
En pratique, on se contentera d’écrire juste la
relation et écrire à côtés les contraintes. Les
domaines seront sous-entendus
6/16
Important
Avocats (numéro, nom, prénom, nb_clients) et le nom ne peut être
identique au prénom.
Écrire cette relation correspond à :
Numéro
Nom
Prénom
Nombre de clients
1
Lecouturier
Guigui
10
2
Collard
Bebert
0
3
Vergès
Jacquy
100
On fait une abstraction des données en ne donnant juste que les noms
des colonnes et les relations entres elles
Numéro sera la clé de la relation car elle identifie une ligne de
manière unique : il ne pourra pas y avoir 2 avocat ayant le même
numéro (pas 2 français ayant le même numéro de sécu)
7/16
Passage des diagrammes EA
aux tables du relationnel
À partir d’un diagramme EA, il est possible de construire un
diagramme relationnel . Les TE et les TA sont transformés en schéma
de relation (table) suivant cette méthode :
chaque TE donne naissance à une relation de même nom, ayant les
mêmes attributs et les mêmes clés
chaque TA, dont aucune des « pattes » ne contient une
connectivité maximale égale à 1 (dépendance fonctionnelle)
devient une relation dont les attributs sont les clés des TE liés et de
ses propres attributs.
En cas d’une dépendance fonctionnelle, le TA n’est pas
transformé en relation et il est matérialisé par l’ajout d’un attribut
dans la relation source de la dépendance fonctionnelle, cet attribut
correspond à la clé de l’autre TE
Dans le cas d’un TE faible, on ne fait qu’une seule table avec le
TA et le TE. On ajoute aussi la clé de l’autre TE (clé extérieur) 8/16
Exemple 1
(0,n)
Etudiant
Nº, nom
Etudiant(Nº, Nom)
Contrôle
Note
(0,n)
Contrôle(Nºétudiant, Nºmatière, note)
Livre
ISBN, titre, auteur
(1,n)
Livre(ISBN, titre, auteur)
(1,1)
Est_un
Matière
Nº, libellé
Matière(Nºmatière, libellé)
Exemplaire
Nº, date, état
Exemplaire(Nº exemplaire, date, état, ISBN)
9/16
Suite exemple 1
Nous aurons donc les tables (relations) suivantes :
Etudiant(Nº, Nom)
Contrôle(Nºétudiant, Nºmatière, note)
Matière(Nºmatière, libellé)
Livre(ISBN, titre, auteur)
Exemplaire(Nº exemplaire, date, état, ISBN)
Ces relations seront notre base de données. Dans un
SGBD, il suffira de créer ces tables puis de les
remplir, consulter etc.
Nous verrons cela plus tard
10/16
Exemple 2
Assurance(Nº assurance, type)
Assurance
Nº, type
Véhicule
Nº immatriculation, type
(1,n)
(0,1)
Assure
Date
Personne
Nº, nom, prénom
(0,n)
Personne(Nºpersonne, nom, prénom)
Véhicule(Nº immatriculation, type, date, Nºpersonne, Nº assurance )
11/16
Suite exemple 2
Nous aurons donc les tables (relations) suivantes :
Véhicule(Nº immatriculation, type, date, Nºpersonne, Nº
assurance )
Assurance(Nº assurance, type)
Personne(Nºpersonne, nom, prénom)
12/16
Notion de clôture
On part d’un ensemble d’attribut X d’une relation R et l’on
veut calculer tous les autres attributs qui dépendent
fonctionnellement de cette ensemble initial (noté {X}+)
On parle aussi de fermeture transitive
Définition mathématique : trop dure pour ici
Méthode (algorithme) : On commence avec l’ensemble de
départ (initial). Pour chaque dépendance fonctionnelle, on
regarde s’ils on peut obtenir de nouveaux attributs. L’on
rajoute alors ces nouveaux attributs à l’ensemble précédent
d’attribut. On recommence alors l’opération jusqu’à ne plus
rajouter d’attributs
PECA
Propriété : {clé}+=R
La clôture minimal est la clôture qui est la plus petite et
13/16
qui recouvre le maximal
Algorithme de
+
X de
R
Entrée : La relation R, un ensemble d’attribut X de R et
des DF sur R
Sortie : La clôture X+ de X sur R d’après les DF
Début
X+ ← X
Aux ← ∅
PECA
Répéter
Aux ← X+
pour chaque Y→Z faire
si Y⊆X alors X + ←X+ ∪ Z
fin pour chaque
Jusqu’à Aux=X+ ou X+=R
Fin
14/16
Mathématiquement
PECA
A ne lire que que si vous êtes à l’aise en maths
Méthode déclaratif :
X+={A ⊆R | X→A}
Obtenue par la relation de récurrence suivante :
X(0) = X
X(i+1) = X(i) ∪{
et A⊆Z}
∪A} tel que si ∃ Y→Z∈F alors Y⊆X
(i)
15/16
Exemple d’une clôture
PECA
R(A,B,C,D,E) avec DF={AB→C, B→D, CD→E}
X0={A,B}
X1=X0∪{C}∪{D}={A,B,C,D} car AB→C et B→D
X2=X1∪{E}=R car CD→E
On ne rajoute plus d’attribut donc X2={AB}+
16/16
L’opération de jointure
17/16
Décomposer une relation (1)
Étant donnée une relation non satisfaisante
(répétitions, pbs d’intégrités etc.) on peut trouver un
sous-ensemble de sous-relation satisfaisant et qui
décrivent les mêmes informations
NOM
STATUT AGE
Exemple :
NOM
STATUT AGE COURS
GAVA MCF
26
Parallélisme
HAINS Pr
40
Sécurité
HAINS Pr
40
Sémantique
GAVA MCF
26
HAINS Pr
40
NOM
COURS
GAVA Parallélisme
HAINS Sécurité
HAINS Sémantique
18/16
Décomposer une relation (2)
On dira qu’une décomposition est « bonne » si on
peut retrouver les informations de la relation initiale
à partir des sous-relations
Pour retrouver les informations d’une relation à
partir des relations « filles », on utilisera l’opérateur
de jointure naturelle
19/16
La jointure
L’opérateur ⊗ que nous allons utilisés est appelé
jointure.
+ est un opérateur sur les entiers
Il prend 2 entiers par exemple 2 et 3 en fait la somme
En résumé 2+3 5
⊗ sera un opérateur sur les tables (relations)
le résultat sera une nouvelle table
celle-ci contiendra une « fusion » des données des 2
tables utilisées pour la jointure
20/16
Jointure naturelle
L’opération de jointure naturelle permet de composer des
sous-relations pour en obtenir une plus grosse relation :
R1(X,Y)⊗R2(Y,Z)=R(X,Y,Z)
Dans la relation R1 et R2, X et Z correspondent aux
attributs non utilisés (voir exemple)
C’est donc un lien entre plusieurs tables disposant de
colonnes commune sémantiquement
Chaque ligne de R est fabriquée avec une ligne de R1 et
une ligne de R2 de telle sorte que les valeurs sur les attributs
de Y soient identiques dans les ligne de R1 et de celle de R2
Elle permet donc de recomposer une relation qui avait été
préalablement décomposée ; une décomposition est dite
« sans perte d’informations » si les jointures naturelles des
21/16
sous-relations redonne la relation initiale
Jointure et produit cartésien
Produit cartésien :
concaténation de toutes les lignes de la première table avec toutes
les lignes de la seconde table.
Table 1 Table 2
Produit
a
x
a,x
Exemple
b
y
c
a,y
b,x
b,y
c,x
Jointure :
c,y
lien entre 2 tables disposant d’au moins une colonne commune
(sémantiquement). On associe a chaque ligne de la première table
toutes les lignes de la seconde table
Exemple
Table 1 Table 2 Jointure
a1,b1
b1,c1
a1,b1,c1
a2,b1
b2,c2
a2,b1,c1
a3,b2
b3,c3
a3,b2,c2
22/16
Exemple Jointure (1)
Nom
Prénom
Numéro avocat
R1 = Collard
Bebert
1
Vergès
Jacquy
2
Numéro avocat
Procès
Résultat
HLM
Perdu
2
Serial Killer
Gagné
1
Outreau
Perdu
2
Du siècle
Gagné
R2 = 1
Calculons la jointure R1(Nom;Prénom,Num)⊗R2(Num,Procès;Résultat)
R1⊗R2 =
Nom
Prénom
Numéro avocat
Procès
Résultat
Collard
Bebert
1
HLM
Perdu
Vergès
Jacquy
2
Serial Killer
Gagné
Collard
Bebert
1
Outreau
Perdu
Vergès
Jacquy
2
Du siècle
Gagné
23/16
Exemple Jointure (2)
R1 =
R2 =
A
a1
a2
a3
a4
C
c1
c2
c2
c3
B
b1
b1
b2
b2
D
d1
d1
d2
d3
C
c1
c2
c2
c3
Calculons la jointure R1(A;B,C)⊗R2(C,D)
A
a1
a2
a2
a3
a3
a4
B
b1
b1
b1
b2
b2
b2
C
c1
c2
c2
c2
c2
c3
D
d1
d1
d2
d1
d2
d3
24/16
Jointure en générale
Dans les jointures naturelles, nous comparions
l’égalités des données de 2 tables différentes sur un
attribut (une colonne)
En fait, on peut généraliser cette notion, c’est-à-dire
ne plus se limiter et :
utiliser plusieurs tables, parfois plusieurs fois les mêmes
utiliser autre chose que le test d’égalité, en fait n’importe
quel opérateur tant qu’il répond « vrai » ou « faux »
inférieur, supérieur pour les entiers, chaîne de caractère, dates,
etc.
etc.
Prenons un dernier exemple…
25/16
Différentes jointures
Définition : une équi-jointure est une jointure dont
la condition est une comparaison d’égalité de 2
colonnes appartenant aux 2 tables
Définition : une theta-jointure est est une jointure
dont la condition est une comparaison autres que
l’égalité de 2 colonnes appartenant aux 2 tables
Définition : une jointure multiple met en relation
plus de 2 tables.
Définition : une auto-jointure est une jointure d’une
table avec elle-même
26/16
Bibliographie
C. Date « An introduction to database systems », Addison Wesley,
1986
C. Delobel et M. Adiba « Bases de données et systèmes
relationnels », Dunod Informatique, 1982
J. Ullman « Principles of database systems », Computer Science
Press, 1982
G. Gardarin « Bases de Données », Eyrrolles, 1998
Tout pleins d’autres livres plus récent…
Site internet :
http://www.commentcamarche.net
http://fr.wikipedia.org/wiki/Base_de_données
http://www.culture.gouv.fr/culture/bdd/
http://ceria.dauphine.fr/cours98/BD-wl-98.html
http://www.i3s.unice.fr/~mcollard/BD_L2/
27/16