Académique Documents
Professionnel Documents
Culture Documents
Sources du cours
Cours de Witold Litwin (Universit Paris 9 Dauphine) Cours de Maria berger (AES Paris 6) Cours de Fabrice Jouanot (EPFL et UJF Grenoble)
Oprandes: relations du modle relationnel Fermeture: le rsultat de toute opration est une nouvelle relation Compltude: permet toute opration sauf les fermetures transitives Oprations unaires (une seule oprande): slection (not ), projection (), renommage (a) Oprations binaires: produit cartsien (x), jointures (|X|), union (), intersection (), diffrence (), division (/)
Ces oprateurs sont reformuls spcifiquement pour le modle relationnel Oprateurs relationnels spcifiques
RESTRICT, PROJECT, JOIN, DIVIDE
Oprateurs ensemblistes
Soient R et S deux relations de mme schma
Union: T = R S Intersection: T = RS Diffrence: T=R-S
R T R S R T S R T S R1 T S
Union
opration binaire syntaxe : R S
smantique : runit dans une mme relation les tuples de R et ceux de S exemple :
A B a b b b y z R2 A B u v y z R1 R2 A B a b b b y z u v
Union: exemple
NEns 12 18 16 17 Nom Duciel Nenfant Duciel Nenfant Prnom Betty Ludivine Sandra Hlne NEns 12 13 Matire Economie Droit Droit Politique Nom Duciel Duciel Duciel Duciel Duciel Nenfant Nenfant Moncostume NEns 13 14 15 19 Prnom Betty Babar Nol Candide Sandra Hlne Ludivine Jimmy Nom Duciel Duciel Duciel Moncostume Matire Economie Economie Droit Droit Droit Politique Droit Politique Prnom Babar Nol Candide Jimmy Matire Economie Droit Droit Politique
Intersection
syntaxe : R S
Filles Garons
14 15 16 17 18 19
Diffrence syntaxe : R S smantique : slectionne les tuples de R qui ne sont pas dans S exemple :
R1 A B a b y z b b R2 A B u v y z R1 R2 A B a b b b
Produit cartsien
but: construire toutes les combinaisons de tuples de deux relations syntaxe : R S Smantique : tuple de R est combin avec chaque tuple de S Exemple :
RS
R A B a b b c c b n tuples
S C c b a
D d a a
E e b c
m tuples
A B C D a b c d a b b a a b a a b c c d b c b a b c a a c b c d c b b a c b a a
E e b c e b c e b c
n x m tuples
Oprateurs spcifiques
Projection: [A,B,C](R) Restriction: [C](R) Jointure naturelle: R]A,B[S = [A=B](RxS) Division: R/S
Oprateurs relationnels
T
Oprateurs unaires
Restriction
A,B,C
R A R
T B S
Projection
Oprateurs relationnels
Oprateurs binaires
Jointure (naturelle)
a1 b1 a2 b1 a3 b2 c1 b1 c2 b1 c3 b2 a1 b1 c1 a1 b1 c2 a2 b1 c1 a2 b1 c2 a3 b2 c3 a
Restriction
Syntaxe: [test](relation) Smantique: relation compose de n-uplets vrifiant une condition
Quels sont les coureur coureurs suisses ?
8 31 61 91 114 Numro Nom Coureur Code quipe TEL ONC COF GAN SAE ULLRICH Jan JALABERT Laurent ROMINGER Tony BOARDMAN Chris CIPOLLINI Mario Code pays ALL FRA SUI G-B ITA
Division
ax ay az bx cy
x y
Relation rsultat
Restriction: syntaxe
< prdicat-lmentaire oprateur-logique prdicatlmentaire >
oprateur-logique { et, ou } prdicat-lmentaire :
attribut est un attribut de la relation R oprateur-de-comparaison {=, <,>, , }
Restriction: exemple
On ne veut que les pays dont la valeur de surface est infrieure 100: Petit-pays = s [surface < 100] (Pays)
Pays Petit-pays
nom
capitale
population
surface
schma (rsultat) = schma (oprande) population (rsultat) population (oprande) Calcule par des oprations ensemblistes
Autriche UK Suisse
Vienne Berne
8 7
83 244 41
Londres 56
Projection
syntaxe: [attributs] ( R )
attributs: liste lensemble dattributs de R conserver dans le rsultat
Projection: proprits
schma (rsultat) schma (oprande) nb tuples (rsultat) = nb tuples (oprande) Elimination des doubles: cest une option ( distinct en SQL)
Relation rsultat
ULLRICH Jan JALABERT Laurent ROMINGER Tony BOARDMAN Chris CIPOLLINI Mario
[distinct,B,C] (R)
R ( B , C, D) b c d a a b a a c trois tuples b c a a deux tuples
R=
PROJECTION[NomCoureur, Nationalit](COUREUR
Projection: exemple
On ne veut que les attributs nom et capitale: Capitales = [nom, capitale] Pays
Restriction-projection
On veut les capitales des petits pays:
Petit-pays = s [surface < 100] (Pays) Capitale-petit-pays =
[nom, capitale](Petit-pays)
Pays
nom
capitale
population
surface
Autriche UK Suisse
8 56 7
83 244 41
nom
capitale
population
surface
8 56 7
83 244 41
Capitales
Jointure
Jointure dite naturelle :
Numro coureur 8 31 61 91 Nom Coureur ULLRICH Jan JALABERT Laurent ROMINGER Tony BOARDMAN Chris Numro coureur Code quipe TEL ONC COF GAN Code pays ALL FRA SUI G-B Code quipe TEL ONC COF GAN Code pays ALL FRA SUI G-B Code pays ALL FRA SUI G-B Nom Pays Allemagne France Suisse Grande Bretagne Nom Pays
Jointure naturelle
but: crer toutes les combinaisons significatives entre tuples de deux relations
significatives = portent la mme valeur pour les attributs de mme domaine !
prcondition: les deux relations ont au moins un attribut de mme domaine exemple :
R A B a b b c c b S B b a d C c a a D d b c R|X|S A B C D a b c d c b c d
Nom Coureur
Relation rsultat
8 31 61 91
Jointure naturelle
La jointure A |X| B (ou A][B) des deux relations A (W, Y) et B (Z, Y) est la relation C avec les attributs : C (W, Y, Z) et les tuples (W:w, Y:y, Z:z ) tels que (w, y) est dans A et (y, z) est dans B W, Y, Z peuvent tre composs La jointure naturelle est associative et commutative
Jointures
Syntaxe: C = A]Y=Z[B,
les attributs sont omis si ?
Theta-jointure
Opration binaire syntaxe : R]test[S
test: prdicat/condition de jointure < prdicat-lmentaire et/ou prdicat-lmentaire >
Theta-jointure
but: crer toutes les combinaisons significatives entre tuples de deux relations
significatives = critre de combinaison explicitement dfini en paramtre de lopration
smantique : combine les tuples qui satisfont le prdicat schma (R]test[S) = schma (R) schma (S) Associative? Commutative?
exemple :
R]B C[S R A B a b b c c b S C b b c D c a a E d b c A a b b c B b c c b C c b b c D a c a a E c d b c
Jointures externes
but: crer toutes les combinaisons significatives entre tuples de deux relations
Mettre en vidence les tuples qui napparaissent que dans une table (gauche ou droite) Valeur NULL pour les attributs de lautre table
Division
relation compose des n-uplets tels que le produit cartsien avec le diviseur soit un sous-ensemble de la relation dividende Participer
Athlte Dupont Durand Dupont Martin Dupont Martin Epreuve 200 m 400 m 400 m 110 m H 110 m H 200 m
Epreuve
Athlte Dupont
Quels sont les athltes qui ont particip toutes les preuves ?
La division: exemples
R x S / S = R, schma(R/S)=schma(R)-schma(S) Associativit?
R
A 1 1 1 1 2 2 3 3 3 B 1 2 2 3 1 3 1 2 2 C 1 0 1 0 1 3 1 0 1
B C 1 1 2 0
R/V A
1 3
V B C R/V A
/
3 5
V B C
1 1
R/V A
1 2 3
Exemple de division
R
STUDENT COURSE PASSED Francois Francois Jacques Jacques Pierre Pierre RDB Prog RDB Math Prog RDB yes yes yes yes yes no
Renommage
but: rsoudre des problmes de compatibilit entre noms dattributs de deux relations oprandes dune opration binaire opration unaire syntaxe : [nom_attribut : nouveau_nom] R smantique : les tuples de R avec un nouveau nom de l'attribut schma : schma ( [n, m] R) de mme schma que (R) avec n renomm en m
V
COURSE PASSED Prog RDB R/V STUDENT Francois yes yes
Renommage
prcondition : le nouveau nom nexiste pas dj dans R exemple : R2 = [B: C] R1
Equivalences
R S = S R, R S = S R , etc. [p1] ( [p2] (R) )= [p2] ( [p1] (R) ) = [p2 et p1] (R) = [p1] (R) [p2] (R)
si attributs(p) a
Ensemble minimal
8 oprateurs relationnels 5 oprateurs de base: union, diffrence, restriction, produit cartsien 3 oprateurs drivs: intersection, jointure, division Exercice: le montrer
SQL: Exemple 1
T
Nom, ville
N>100
fournisseurs
SQL: Exemple 2
Select * from produits, livraisons ; produits x livraisons
rsult at
SQL: Exemple 3
Select * from produits, livraisons where n = n pice; Produits]N,npice[livraisons
T N npice livraiso ns
SQL: Exemple 4
Select n, type, n four, prix from produits, livraisons where n = n pice; [type,nfour,prix](
produits]N,npice[livraisons )
T
Type,nfour,prix
nfour
npice nfour=147
npice npice
produits
livraiso ns
livraisons f livraisons g
Proprits
Associativit de la jointure
R]A,B[S = [A=B](RxS) Associativit de x
Exemple
Fournisseur (Nfno, Nom, Adresse, Ville) Produit (Nprod, Designation, Prix, Poids, Couleur) Commande (Ncomm, Nfno, Nprod, , Quantit) Produit = 8 lignes * 5 colonnes Commande = 10 lignes * 4 colonnes Rfrence (N prod), prix et quantit des produits commands en plus de 10 exemplaires par commande ?
Solution 1
R1= Commande ]Nprod, Nprod[ Produit R2 = s [Quantit > 10] (R1) R3 = P [Nprod, Prix, Quantit] (R2) R1 = jointure sur la table Commande et la table Produit = 10*8 = 80 tuples au pire
Solution 2
R1 = P [Nprod, Quantit] (s[Quantit>10] (Commande) ) R2 = R1 ]Nprod, Nprod[ P [Nprod, Prix] (Produit) R3 = P [Nprod, Prix, Quantit] (R2) R2 = jointure sur le couple (Nprod, Prix) de la table Produit: 8 tuples (sur 2 attributs) et sur le couple (Nprod, Quantit) de la table Commande : 2 tuples (sur 2 attributs) Total = 2x8 = 16 lments (sur 4 attributs)
Proprits utilises
Associativit de |X| Commutativit |X| et Commutativit |X| et Commutativit et