Le Modèle Relationnel

LE MODÈLE
RELATIONNEL
Sommaire
✔ Structure de Données
Relation Attribut Domaine
✔ Opérateurs de Manipulation
Project
Restrict
Join
Union
Diff
→
SQL
✔ Contraintes
Clés Primaires / Etrangères
Integrités d'Entité / Référentielle
✔ Règles de mise à Jour
Nullifier, Propager, Refuser
E.F. CODD 1970
CODD & C.J. DATE 1979 1981
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
1
LE MODÈLE RELATIONNEL
Structure de Données
✔ Concept de Relation
Relation R = sous ensemble du produit cartésien entre n domaines D1, D2,…, Dn
R
⊆
D1 X D2 X … X Dn
( Domaine étant un ensemble de valeurs données)
Exemple:
D1 = { Ali, Amine, Amina…}
D2 = { 24, 34, 45, 21…}
D3 = { Rabat, Casa, …}
R = {<Ali, 34, Casa>,
<Amina, 24, Rabat>,
<Amine, 21, Rabat>, …}
t = <n, a, v> ∈ R ⇔ " n est âgé de a et habite v ".
Prédicat de la relation ou
Schéma de relation
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
2
LE MODÈLE RELATIONNEL
Structure de Données
ê
Forme de représentation plus commode (simplifiée)
NOM
AGE
VILLE
Ali
Amine
Amina
34
24
21
Casa
Rabat
Rabat
D1
D2
D3
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
3
LE MODÈLE RELATIONNEL
Structure de Données
✔ Définitions/Vocabulaire
✗ Relation/Domaine
✗ Attribut
Nom donné à un domaine dans une relation. (e.g. son Rôle) Doit être distinct!
Considérer la relation NOTES (NOM, noteCours, noteTP). définie sur Noms X Notes X Notes
✗ Tuple
Un élément de la relation
<n, a, v> n-uplet
✗ Composant
Un élément dans un tuple
'Ali', '24', …
Notation:
✗ Clé
t.nom,
t.age, …
Attribut (ou collection d'attributs) dont la valeur est différente
d'un tuple à un autre.
✔ Informel, Commode
Table / Lignes / Colonnes
(cf. aussi Fichier / Enregistrement / Champs)
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
4
LE MODÈLE RELATIONNEL
Structure de Données
✗ Schéma de Relation
{ Nom de la relation, La liste des Attributs/Domaines, la Clé
et le prédicat}
PERSONNE (NOM: noms, AGE: entiers, VILLE: villes)
Clé NOM, " n est âgé de a et habite v "
Formes simplifiées
PERSONNE (NOM, AGE, VILLE)
PERSONNE
NOM
AGE
VILLE
Ou
bien
PERSONNE
NOM
AGE
VILLE
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
5
LE MODÈLE RELATIONNEL
Structure de Données
✔ Propriétés
✗ Pas d'ordre dans les tuples
✗ Pas d'ordre dans les attributs
✗ Tous les tuples sont différents
✗ Il existe toujours une clé
✗ Relation Normalisée (Valeurs atomiques, indécomposables)
Exercice: Pourquoi 1 2 3 4?
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
6
LE MODÈLE RELATIONNEL
Structure de Données (Exemple)
Soient le réel perçu:
S1
Ali
Casa
S2
Amine Rabat
S3
…
Aziz
Rabat
P1
Boulon
10
P2
Écrou
20
P3
…
Vis
30
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
7
LE MODÈLE RELATIONNEL
Structure de Données (Exemple)
:
F
Numf
Nomf
Ville
S1
S2
S3
S4
S5
Ali
Amine
Casa
Rabat
Rabat
Fez
Tanger
Aziz
Amina
Karim
P
FP
Numf
Nump
Qte
S1
S1
S1
S2
S3
S3
S4
P1
P2
P3
P3
P3
P4
P5
300
400
300
100
200
300
400
Nump
Nomp
Prix
P1
P2
P3
P4
P5
Boulon
Écrou
Vis
Écrou
Pince
10
20
30
30
15
Exercices : Quels sont les clés ?
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
8
LE MODÈLE RELATIONNEL
Opérations
✔ Opérateurs Algébriques de Manipulation
Le modèle relationnel se distingue en cela des autres modèles.
Il définit les opérations possibles sur les relations. (Opérateurs Algébriques)
Opérateur :
Relation
Relation
(unaire)
Relation X Relation ➝ Relation
(binaire)
➝
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
9
LE MODÈLE RELATIONNEL
Opérations
✔ Opération de Projection: Opérateur PROJECT
PROJECT (Relation, Liste-Attributs )
PROJECT (F, Numf, Nomf)
Numf
Nomf
S1
S2
S3
S4
S5
Ali
Amine
Aziz
Amina
Karim
Rep graphique
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
10
LE MODÈLE RELATIONNEL
Opérations
✔ Opération de Restriction: Opérateur RESTRICT
RESTRICT (Relation, Attribut = valeur )
RESTRICT (P, Prix = 30)
Nump
Nomp
Prix
P3
P4
Vis
Écrou
30
30
Rep graphique:
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
11
LE MODÈLE RELATIONNEL
Opérations
✔ Combinaison des opérateurs:
Expression Relationnelle
PROJECT ( RESTRICT (P, Prix = 30), Nump, Nomp)
Nump
Nomp
P3
P4
Vis
Écrou
Rep graphique:
Correspondant à la requête : « Les numéros et noms des pièces de prix égale à 30 ».
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
12
LE MODÈLE RELATIONNEL
Opérations
✔ Autre exemple d’expression relationnelle :
"Le nom des fournisseurs qui fournissent la pièce 'P3' "
PROJECT ( RESTRICT (FP, Nump = 'P3'),Numf)
Numf
S1
S2
S3
Exercice : Représentation graphique ?
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
13
LE MODÈLE RELATIONNEL
Opérations
✔ Opération de Jointure: Opérateur binaire JOIN
JOIN (Relation1, Relation2, Attribut1 = Attribut2 )
JOIN (F, FP, F.Numf = FP.Numf)
Numf
S1
S1
S1
S2
S3
S3
S4
Nomf
Ville
Nump
Qte
Ali
Ali
Ali
Amine
Aziz
Aziz
Amina
Casa
Casa
Casa
Rabat
Rabat
Rabat
Fez
P1
P2
P3
P3
P3
P4
P5
300
400
300
100
200
300
400
Rep graphique
Opération caractéristique:
Permet d'interroger plusieurs tables et associer les informations entre elles.
(Suivant la clé étrangère ou d’autres liens sémantiques).
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
14
LE MODÈLE RELATIONNEL
Opérations
✔ Exemple d'Expression Relationnelle
"Le nom des fournisseurs qui fournissent la pièce 'P3' "
PROJECT ( RESTRICT ( JOIN (F, FP ,F.Numf = FP.Numf), FP, Nump = 'P3'), Nomf)
Nomf
Ali
Amine
Aziz
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
15
✔ Expression relationnelle équivalente (même résultat)
PROJECT (JOIN (F, RESTRICT (FP, Nump = 'P3'),F.Numf = FP.Numf), Nomf)
RESTRICT placé avant JOIN
✔ L’arbre Correspondant :
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
16
LE MODÈLE RELATIONNEL
Opérations
On peut introduire des relations temporaires
☞
T1 = RESTRICT (FP, Nump = 'P3')
T2 = JOIN ( F, T1, F.Numf = T1.Numf)
Res = PROJECT (T2, Nomf)
✗
Ces relations temporaires n’existent que le temps d’une session,
✗
Peuvent être interrogées comme si c’était des relations de base.
✗
Cf. SQL CREATE TABLE … AS SELECT ...
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
17
LE MODÈLE RELATIONNEL
Opérations
✔ Permutation des opérateurs JOIN et RESTRICT
L’expression :
JOIN (F, RESTRICT (FP, Nump = 'P3'), F.Numf = FP.Numf)
est équivalente à :
RESTRICT (JOIN (F, FP, F.Numf = FP.Numf), Nump = 'P3')
Définissent (ou permettent d’obtenir) une même table.
Mais du point de vue « exécution » la première est plus optimum que la seconde.
L’utilisateur n’a pas à s’en préoccuper, c’est le rôle du SGBD.
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
18
LE MODÈLE RELATIONNEL
Opérations
✔ Permutations avec l’opérateur PROJECT
L’expression :PROJECT (RESTRICT (P, Prix = 30), Nump, Nomp)
n’est pas équivalente à : RESTRICT (PROJECT (P, Nump, Nomp), Prix = 30)
(Exercice : pourquoi ?)
L’expression : PROJECT (RESTRICT (P, Prix = 30), Nump, Nomp, Prix)
Permet la permutation.
✔ Même raisonnement pour le JOIN.
JOIN (PROJECT ...) n’est pas toujours correcte. (Exercice : trouver un exemple)
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
19
Exercice:
Tracer tous les arbres équivalents (même résultat) à l’arbre précédent (p16).
Discuter.
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
20
LE MODÈLE RELATIONNEL
Caractéristiques
• Modèle Simple
• Opérateurs de Manipulation
• Langage Déclaratif et de Haut niveau (le quoi)
• Traitement Ensembliste
• Base de Langages de 4e Génération
• Systèmes SQL
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
21
MODÈLE RELATIONNEL
✔ Langage SQL
(Structured Query Language)
Origine: System_R (IBM 1975)
Langage SEQUEL (Equivalant Algébrique SQUARE)
✒
SELECT
Colonnes
Projections
FROM
Tables
Jointures
WHERE
Critères recherches
Restrictions
Le numéro et noms des fournisseurs de 'P3'
SELECT Numf, Nomf
FROM F, FP
WHERE F.Numf = FP.Numf AND
FP.Nump = 'P3'
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
22
MODÈLE RELATIONNEL
✔ Opérateurs simples
Opérateur relationnel
Equivalent SQL
PROJECT (F, Numf, Nomf)
SELECT Numf, Nomf
FROM F
RESTRICT (P, Prix = 30)
SELECT *
FROM P
WHERE Prix = 30
JOIN (F, FP, F.Numf = FP.Numf)
SELECT *
FROM F , FP
WHERE F.Numf = FP.Numf
En « plus algébrique »
SELECT *
FROM F JOIN FP ON F.Numf = FP.Numf
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
23
La requête précédente (les numéros et noms des fournisseurs de ‘P3’) s’écrit donc aussi:
SELECT Numf, Nomf
FROM
F JOIN FP ON F.Numf = FP.Numf
WHERE FP.Nump = 'P3'
Correspondant à :
PROJECT (JOIN (F, RESTRICT (FP, Nump = 'P3'), F.Numf = FP.Numf), Nomf)
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
24
MODÈLE RELATIONNEL
L'Algèbre Relationnelle
✔ Exercices: Ecrire les expressions relationnelles correspondant aux requêtes
1. Quels sont les numéros des fournisseurs qui fournissent le produit 'P3'.
2. Quels sont les numéros et les noms de ces mêmes fournisseurs.
3. Quels sont les noms des produits fournis par 'S1'.
4. Quels sont les numéros des produits des prix < 30 et fournis par 'S1'.
5. Quels sont les noms des fournisseurs qui fournissent un produit, et le nom de ce produit.
6. Donner pour chaque fournisseur le nom et les noms des produits qu'il fournit.
7. Quels sont les produits fournis par tous les fournisseurs.
NB. Les requêtes 6 et 7 seront détaillées ci-après.
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
25
MODÈLE RELATIONNEL
L'Algèbre Relationnelle
✔ Autres Opérateurs
• θ-JOIN
R
Jointure en général.
A
a
b
e
d
B
e
d
g
c
θ ∈ { =, <, >, ≤, ≥, ≠ }
C
e
f
f
g
S
C
f
g
e
b
D
d
e
c
c
JOIN (R, S, R.A ≥ S.C)
A
b
e
e
d
B
d
g
g
c
C
f
f
f
g
C
b
e
b
b
D
c
c
c
c
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
26
MODÈLE RELATIONNEL
L'Algèbre Relationnelle
• Εqui-Join
Jointure avec =
JOIN (R, S, R.B = S.D)
A
a
b
d
d
• Natural-Join
Exercice:
C
e
f
g
c
C
g
f
e
b
D
e
d
c
c
Jointure avec = sur colonne(s) commune(s)
JOIN (R, S, R.C = S.C)
JOIN(R,S)
B
e
d
c
c
R*S
notée R*S
A
a
b
e
d
B
e
d
g
c
C
e
f
f
g
D
c
d
d
e
Comparer PROJECT (R*S, A,B,C) avec R et PROJECT (R*S , C,D) avec S.
Sous quelles conditions a-t-on égalité?
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
27
MODÈLE RELATIONNEL
L'Algèbre Relationnelle
• Opérateurs Ensemblistes Classiques
Union (UNION), Intersection (INTER), Différence (DIFF)
R
A
a
d
B
b
e
C
c
f
S
A'
a
e
B'
b
f
C'
c
g
Relations union-compatibles (même degré, mêmes domaines)
A
a
d
e
B
b
e
f
C
c
f
g
A
B
C
A
B
C
a
b
c
d
e
f
∩∪
−
R
UNION (R, S)
INTER (R, S)
S
DIFF (R, S)
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
28
MODÈLE RELATIONNEL
L'Algèbre Relationnelle
• Opérateur de Division DIV
R
X
x1
x1
x2
Y
y1
y2
y1
schéma (R)
S
Y
y1
y2
⊃ schéma (S)
DIV (R, S)
X
x1
Les éléments xi en relation dans R avec
tous les éléments de S
∩∪
−
R
Schéma résultat = schéma (R)
S
− schéma (S)
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
29
• Application:
Exemple
"Les fournisseurs qui fournissent toutes les pièces"
T1 = PROJECT (P, Nump);
T2 = PROJECT (FP, Numf, Nump);
/* On se ramène aux hypothèses */
Res = DIV (T2, T1);
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
30
MODÈLE RELATIONNEL
L'Algèbre Relationnelle
✔ Exercices: Ecrire les expressions relationnelles correspondant aux requêtes
8. Quels sont les numéros des fournisseurs qui fournissent le produit 'P3'.
9. Quels sont les numéros et les noms de ces mêmes fournisseurs.
10.
Quels sont les noms des produits fournis par 'S1'.
11.
Quels sont les numéros des produits des prix < 30 et fournis par 'S1'.
12.
Quels sont les noms des fournisseurs qui fournissent un produit, et le nom de ce produit.
13.
Donner pour chaque fournisseur le nom et les noms des produits qu'il fournit.
14.
Quels sont les produits fournis par tous les fournisseurs.
Tracer l'arbre correspondant à chaque expression et matérialiser les résultats
______________________________________________________________________________________________________________________________________
© Najib TOUNSI
31