Langages relationnels

Des langages de définition et de manipulation sont associés
au modèle relationnel. De façon formelle on trouve deux classes
de langages. Les langages algébriques et
les langages prédicatifs. Ces langages sont
strictement équivalents sur le plan de la puissance d'expression
(n'importe quelle requête qui peut s'exprimer dans un de ces langages
peut s'exprimer dans l'autre). Sur un plan industriel, les langages algébriques
ont dérivé SQL (Structured Query Language,
défini par IBM et qui s'impose comme la norme supportée par
tout SGBD du commerce) et les langages prédicatifs QBE (Query By
Example).

L'algèbre relationnelle

L'algèbre relationnelle se compose d'un ensemble d'opérateurs
opérant sur des relations et produisant de nouvelles relations.
Il est donc possible de construire de nouvelles informations à partir
des relations de départ et d'une composition séquentielle
d'opérateurs.

De nombreux opérateurs relationnels ont été
proposés, on peut cependant présenter ici les plus courants.
On peut classifier les opérateurs relationnels en trois catégories
:

  • les opérateurs unaires : affectation, sélection
    et projection
  • les opérateurs binaires travaillant sur des relations
    de même schéma : union, intersection, différence
  • les opérateurs binaires travaillant sur des relations
    de schémas différents : jointure, produit cartésien,
    théta-jointure, division

La présentation des opérateurs est illustrée
par un exemple de gestion d'une base d'invitations.
Cette base de données décrit les personnes
invitées et les plats qui ont été servis.
Elle est
composée de trois relations :

  • REPAS(date,invité) donne la liste des invités qui ont été reçus et à quelle date
  • MENU(date,plat) donne le menu servi à chaque date
  • PREFERENCE(personne,plat) donne pour chaque personne ses
    plats préférés

N.B : les attributs "personne" et "invité"
ont même domaine et les clés sont en soulignéees.

a) Opérateurs unaires

 

  • affectation : R(A1, ..., An) <-- expression de sélection

L'affectation permet de sauvegarder le résultat d'une expression
de recherche, ou bien de renommer une relation et ses attributs.

Exemple : Q1

  • sélection : SELECTION condition-de-sélection
    (R)

La sélection prend en entrée une relation R définie
sur un schéma SR et produit en sortie une
nouvelle relation de même schéma SR ayant comme nuplets
ceux de R satisfaisant à l'expression de sélection. Une expresion
de sélection est une condition booléenne construite à
partir des connecteurs logiques et, ou, non et de conditions simples (attribut
de R - opérateur de comparaison - constante ou attribut de R - opérateur
de comparaison - attribut de R)

Exemples : Q1, Q2

  • projection : PROJECTION A1, ..., An (R)

La projection prend en entrée une relation R définie
sur un schéma SR et produit en sortie une
nouvelle relation de schéma A1, ..., An (schéma inclus dans
SR) ayant comme nuplets ceux de R restreints au sous-schéma A1,
..., An. Il faut noter que la cardinalité de la nouvelle relation
est inférieure ou égale à celle de R, puisque des
doublons ont pu être produits par la projection et sont donc supprimés
(une relation est toujours un ensemble).

Exemples : Q1, Q2,
Q3, Q5, Q6

b) Opérateurs binaires de même schéma

 

Les trois opérateurs ensemblistes opèrent sur des
relations R et S de même schéma SRS.

  • union : R UNION S

produit une nouvelle relation de schéma SRS ayant les nuplets de R et ceux de S (les doublons sont supprimés).

  • intersection : R INTERSECTION S

produit une nouvelle relation de schéma SRS ayant les nuplets
présents dans R et dans S.

  • différence : R - S

produit une nouvelle relation de schéma SRS ayant les nuplets
de R qui ne sont pas dans S. Attention, la différence n'est pas
commutative.

Exemple : Q5

c) Opérateurs binaires de schémas différents

 

Soient R et S deux relations définies sur les schémas
SR et SS.

  • jointure : R * S

Il faut que les schémas SR et SS
aient une intersection SRS non vide. La relation produite a un schéma
qui est l'union des schémas SR et SS et dont les nuplets sont la
concaténation des nuplets de R avec ceux de S s'ils ont même
valeur pour tous les attributs communs (c'est à dire ceux de SRS).
On parle également de jointure naturelle ou équi-jointure.

Exemple : Q2

  • produit cartésien : R X S

Il faut que les deux schémas SR
et SS soient disjoints. La relation produite a un schéma qui est
l'union des schémas SR et SS et dont les nuplets sont la concaténation
des nuplets de R avec ceux de S. Attention le nombre d'éléments
du produit cartésien est le produit des cardinalités des
relations R et S!

Exemple : Q4

  • théta-jointure : R * (condition) S

Cette opération non canonique est équivalente à
un produit cartésien suivi d'une opération de sélection.

R * (condition) S = SELECTION condition (R X S)

Exemple : Q3

  • division : R / S

R est définie sur un SR
composé des ensembles d'attributs X,Y (SR = X UNION Y) et S est
définie sur un schéma SS composé de l'ensemble d'attributs
Y (SS = Y). La relation produite est définie sur le schéma
Sres (Sres = SR - SS = Y) et comprend tous les nuplets dont la concaténation
avec tous les nuplets de S appartient à R (résultat X S inclus-ou-egal
R).

La division peut se définir à l'aide du produit
cartésien, de la différence et de la projection :

R(A1, .., Ap, Ap+1, ..., An)

S(Ap+1, ..., An)

R / S = R1 - R2 avec

R1 = PROJECTION A1, ..., Ap (R)

R2 = PROJECTION A1, ..., Ap ((R1 X S) - R)

Exemple : Q6

Un des grands intérets de l'algebre relationnelle est l'ensemble
de propriétés des opérateurs
ce qui permet l'optimisation des requetes.

d) Règles de passage de l'algèbre relationnelle vers
SQL

 

Soient R(X) et S(Y) deux relations de schémas
distincts, T(V,W), U(W,Z) deux relations ayant un ensemble d'attributs
communs, Q1(X), Q2(X) deux relations de même schéma et P(W).

sélection SELECTION condition (R) select *from R

where condition
projection PROJECTION A1, ..., An (R) select distinct A1, ..., An
from R
opérateurs ensemblistes

Q1 UNION Q2, Q1
Q1 INTERSECTION Q2
Q1 - Q2

select * from Q1
union, intersect, minus

select * from Q2

jointure T * U select V, W, Z
from T, U where T.W=U.W (en réalité égalité sur tous les attributs communs)
produit cartésien R X S

select R.*, S.*
from R, S

théta-jointure R* (condition) S select X, Y
from R, S
where condition
division

T / P

avec P partie de T

select V

from T

group by V

having count(distinct W) >=
(select count(distinct W) from P)

Exemple complet de la base des invitations

Les langages prédicatifs (nuplet
et domaine)

Deux approches sont possibles pour établir un lien entre la logique
du premier ordre et les bases de données :

(1) Approche "intelligence artificielle" : BD déductives

Les faits élémentaires (données) et les propriétés
générales (schéma ainsi que les règles d'intégrité
et d'inférences) sont représentés par des axiomes
d'une théorie du premier ordre. Répondre à une question
revient donc à démontrer un théorême dans cette
théorie.

Avantages : une question est résolue en dehors de
toute interprétation et on peut utiliser des règles d'intégrité
ou d'inférences (qui permettent de déduire des informations
non stockées).

Inconvénients : problème de performances
(il faut intégrer un démonstrateur de théorêmes)
et représentation de l'information négative. La plupart du
temps on utilise l'hypothèse du monde fermé ("Closed
World Assumption") avec une méta-règle de négation
par l'échec ("negation as failure"). Toute information
manquante est considérée comme fausse et une information
qu'on ne peut dériver est également considérée
comme fausse.

(2) Approche "classique" : BD relationnelle

Les propriétés générales (schéma
seulement) sont considérées comme les axiomes d'une théorie
du premier ordre, alors que les faits élémentaires (données)
sont perçus comme une interprétation de cette théorie.
Si cette interprétation vérifie tous les axiomes, elle constitue
un modèle. Répondre à une question revient à
chercher la valeur de vérité d'une formule relativement à
l'interprétation. On distingue alors entre question fermée
(sans variable libre) pour laquelle la réponse est vrai ou faux,
et question ouverte (avec variable libre) pour laquelle la réponse
sont les valeurs de l'interprétation pour lesquelles la question
est vraie.

Avantages : on retrouve la théorie relationnelle
classique

Inconvénients : pas de puissance supplémentaire

Nous présentons dans la suite cette deuxième approche,
les BD déductives étant étudiées dans le cadre
du cours de 3ème année. On rencontre deux classes de langages
prédicatifs, ceux à variable nuplet (le domaine d'interprétation
d'une variable est le nuplet) et ceux à variable domaine (le domaine
d'interprétation d'une variable est le domaine).

Spécification formelle du calcul
relationnel à variable nuplet

Une expression générale du calcul relationnel à
variable nuplet est de la forme :

{t1[A1], t2[A2], ..., tn[An] / COND(t1, t2, ..., tn, tn+1, tn+2,
..., tn+m)}

avec ti (de 1 à n+m) variables nuplets non nécessairement
distinctes deux à deux, Ai sont des attributs de relations associées
aux ti et COND est une formule du calcul relationnel à variable
nuplet. L'expression de la forme ti[Aj] exprime la valeur du nuplet ti
suivant l'attribut de nom Aj (terme de projection).

Une formule est construite à partir de prédicats atomiques
(atomes) qui sont d'une des formes suivantes :

  1. Un atome de la forme R(ti) où R est un nom de relation
    et ti est une A variable nuplet. Cet atome identifie le domaine de la variable
    ti comme celui de la relation de nom R.
  2. Un atome de la forme ti[A] op tj[B] où op est un opérateur
    de comparaison classique, ti et tj des variables nuplets, et A, B des attributs
    des relations associées.
  3. Un atome de la forme ti[A] op c ou c op tj[B], où c
    est une constante.

Une formule est constituée d'atomes connectés par les
opérateurs logiques ET, OU, NON et se définit de la manière
suivante :

  1. Tout atome est une formule,
  2. Si F1 et F2 sont des formules, alors (F1 et F2), (F1 ou F2),
    non(F1) sont des formules,
  3. Si F est une formule, alors (ILEXISTE t) (F) est une formule
    avec t variable nuplet,
  4. Si F est une formule, alors (QQSOIT t) (F) est une formule
    avec t variable nuplet.

NB : une variable est dite libre si elle n'est pas quantifiée
dans sa portée, liée sinon.

Spécification formelle du calcul
relationnel à variable domaine

Une expression générale du calcul relationnel à
variable domaine est de la forme :

{x1, x2, ..., xn / COND(x1, x2, ..., xn, xn+1, xn+2, ..., xn+m)}

avec xi variables domaines (non nécessairement distinctes)
d'attributs et COND est une formule du calcul relationnel à variable
domaine.

Une formule est construite à partir d'atomes. Un atome peut être
d'une des formes suivantes :

  1. Un atome de la forme R(x1, x2, ..., xj) où R est le
    nom d'une relation de degré j et chaque xi est une variable. <x1,
    ..., xj> représente un nuplet de la relation R et xi la ième
    valeur dans le nuplet.
  2. Un atome de la forme xi op xj où op est un opérateur
    de comparaison classique et xi, xj des variables domaines.
  3. Un atome de la forme xi op c ou c op xj, où c est une
    constante.

Une formule est construite à partir des mêmes règles
que celles définies pour le calcul relationnel
à variable nuplet.

Exemple de la base des invitations