Vous êtes sur la page 1sur 4

Schma relationnel utilis pour ce cours Langages d'interrogation relationnels

Universit de Nice Sophia-Antipolis


Version 3.3.1 27/10/02

Employ(matr, nomE, poste, dateEmb, sup, salaire, commission, dept) Dept(dept, nomD, lieu) Matricule du chef Projet(codeP, nomP) Participation(matr, codeP, fonctionP)
Les cls primaires sont en italiques
R. Grin SGBD 2

Richard Grin

Prdicats
Un prdicat est une phrase qui peut tre vraie ou fausse Il peut comporter des paramtres : P(x, y) = x est un employ du dpartement y

Langages d'interrogation relationnels

R. Grin

SGBD

R. Grin

SGBD

Calcul des prdicats


La logique du 1er ordre, ou calcul des prdicats, est la thorie mathmatique qui tudie les formules logiques formelles (sans signification particulire) que lon peut former avec des prdicats Elle permet de se donner des formules logiques et den dduire de nouvelles formules

Calcul des prdicats


Les formules logiques que lon tudie sont construites avec des prdicats (avec un nombre fixe de paramtres), des connecteurs logiques (et, ou, non, ), des quantificateurs et , des variables, des constantes et des fonctions

R. Grin

SGBD

R. Grin

SGBD

Smantique
Les domaines du discours sont les domaines dans lesquels les constantes et variables prennent leurs valeurs On peut choisir comme domaines du discours des domaines lis une base de donnes relationnelle

Donnes dcrites par une formule


toute formule du calcul des prdicats on peut faire correspondre lensemble des valeurs des variables qui rendent vraie cette formule Ainsi, on peut dcrire un sous-ensemble des donnes dune base de donnes par une formule du calcul des prdicats

R. Grin

SGBD

R. Grin

SGBD

Variantes du calcul relationnel


On utilise essentiellement 2 variantes pour dcrire des sous-ensembles dune base de donnes : calcul relationnel des t-uples calcul relationnel des domaines

Calcul relationnel des t-uples


Il est fond sur le calcul des prdicats, avec les variables qui prennent leur valeur dans Prdicat : lensemble des t-uples P t-uple de Exemple (noms des employs qui PARTICIPATION participent un projet) :
{E.nomE / P PARTICIPATION(P) EMP(E) (P.matr = E.matr)} (les variables sont E et P ; ce sont des t-uples)
R. Grin SGBD

R. Grin

SGBD

10

Calcul relationnel des domaines


Il est fond sur le calcul des prdicats, avec les variables qui prennent leur valeur dans lensemble des domaines Exemple (noms des employs qui participent un projet) :

Algbre relationnelle
Le principe est diffrent pour ce langage d'interrogation qui a inspir le langage SQL Ce langage nest pas descriptif mais opratoire Pour obtenir les donnes que l'on cherche, on donne la suite doprations appliquer aux relations de la base On a 2 types d'oprateurs : relationnels et ensemblistes
R. Grin SGBD 12

{ y / x EMP(matr:x, nomE:y) PARTICIPATION(matr:x) } (les variables sont x et y ; Prdicat : x prend ses valeurs dans le x est une valeur domaine de lattribut matr) du domaine de matr dans R. Grin SGBD 11 PARTICIPATION

Avertissement
Les notations des oprateurs qui vont suivre sont des notations maison Raisons : les notations ne sont pas vraiment normalises et/ou comportent des caractres exotiques non disponibles dans les polices de caractres standard

Oprateurs relationnels de base


Soit une relation R(A1,, An) Projection sur les attributs Aj,, Ak, note
R[Aj,, Ak]

Exemple :
Employ[matricule, nom, salaire]

Slection des t-uples qui vrifient une condition c, note R / c Exemple :


Employ / salaire > 1500
R. Grin SGBD 14

R. Grin

SGBD

13

Autres oprateurs relationnels


2 autres oprateurs sont fondamentaux : Jointure (qui-jointure) de 2 relations R et S sur 2 attributs C et D, note R J{C=D} S Division de 2 relations, note R B S

qui-jointure
Oprateur fondamental de la thorie des bases de donnes relationnelles Il permet de crer une relation qui comprend des donnes venant de 2 relations Soient R(A, B) et S(C, D), B et C 2 attributs de types compatibles, la jointure R J{B=C} S est la relation dont les tuples sont obtenus par concatnation des tuples de R et de S qui ont la mme valeur pour les attributs B et C
R. Grin SGBD 16

R. Grin

SGBD

15

Exemple d'qui-jointure
Employ
matricule nom 1050 832 900 Dupond Durand Duval dept 10 20 10

Exemple de jointure naturelle


Employ Dpartement
dept 10 20 10 matricule nom 1050 832 900 Dupond Durand Duval

Dpartement
dept nom 10 20 Ventes lieu Nice Finances Paris

dept nom 10 20 Ventes

lieu Nice

Finances Paris

Employ J{dept=dept} Dpartement


matricule nom 1050 832 900
R. Grin

Notation simplifie : Employ J{dept} Dpartement


lieu Nice

Employ J{dept=dept} Dpartement


matricule nom dept nom Ventes
SGBD

dept dept nom 10 20 10 Ventes


SGBD

lieu Nice

Dupond 10 Durand 20 Duval 10

Finances Paris Finances Paris

quand le nom des 2 colonnes est le mme


17

1050 832 900


R. Grin

Dupond 10 Durand 20 Duval 10

Finances Paris Finances Paris

La colonne de jointure n'est pas rpte

18

Jointure en gnral
On peut remplacer = par un oprateur de comparaison >, <, , , La jointure est alors note, par exemple, R J{C < D} S Exemple : Employ J{salaire < salaire} Employ
Pour lever les ambiguts : Employ e1 J{e1.salaire < e2.salaire} Employ e2
R. Grin SGBD 19

Division
R
A x y z x B 1 2 1 3

S
C 1 3

R B S

A x

R B S = les A qui sont associs tous les C = {a R[A] / c S, (a, c) R} / = {a R[A] / c S, (a, c) R} / "Division", car c'est le plus grand sous-ensemble D de R[A] tel que D S est inclus dans R
R. Grin SGBD 20

Quand utilise-t-on la division ?


La division fournit la rponse au type de question suivante : quels sont les A qui sont associs tous les C ? Exemple : quels sont les matricules des employs qui participent tous les projets : Participation[matr, codeP] codeP Projet[codeP]

Oprateurs ensemblistes
Pour 2 relations qui ont des attributs de types compatibles : Runion : R1 R2 Intersection : R1 R2 Diffrence : R1 - R2 Pour 2 relations quelconques, Produit cartsien : R1 R2
R. Grin SGBD 22

R. Grin

SGBD

21

quivalence des langages


On peut dmontrer que l'algbre relationnelle, les calculs relationnels des tuples et le calcul relationnel des domaines sont quivalents : ils permettent de dcrire les mmes ensembles de donnes dans une base de donnes

Un ensemble dans les 3 langages


Noms des employs qui participent un projet :
1. E = {E.nomE / P PARTICIPATION(P) EMP(E) (P.matr = E.matr)} 2. E = { y / x EMP(matr:x, nomE:y) PARTICIPATION(matr:x) } 3. R1 = EMP J{matr} PARTICIPATION E = R1[nomE]
23 R. Grin SGBD 24

R. Grin

SGBD

Vous aimerez peut-être aussi