AccueilđŸ‡«đŸ‡·Chercher

AlgĂšbre relationnelle

L'algĂšbre relationnelle est un langage de requĂȘtes dans des bases de donnĂ©es relationnelles. L'algĂšbre relationnelle a Ă©tĂ© inventĂ©e en 1970 par Edgar Frank Codd, le directeur de recherche du centre IBM de San JosĂ©.

Il s'agit de la thĂ©orie sous-jacente aux langages de requĂȘte des SGBD, comme SQL. Le thĂ©orĂšme de Codd dit que l'algĂšbre relationnelle est Ă©quivalente au calcul relationnel (logique du premier ordre sans symbole de fonction). Elle est aussi Ă©quivalente Ă  DatalogÂŹ (Datalog avec la nĂ©gation) non rĂ©cursif[1]. Datalog est un langage de requĂȘte et de rĂšgles pour les bases de donnĂ©es dĂ©ductives.

Selon Abiteboul et al.[2], l'algĂšbre relationnelle est conceptuellement un langage "procĂ©dural" : en effet, les requĂȘtes sont des suites d'opĂ©rations qui construisent la rĂ©ponse. Cela s'oppose aux langages conceptuellement "dĂ©claratifs" comme le calcul relationnel et Datalog.

ModĂšle relationnel

Dans le modÚle relationnel, les données sont stockées dans des tables, aussi appelées relations. Voici un exemple de relation :

Clé Nom Email
1 Edgar edgar@wikipedia.fr
2 Frank frank@wikipedia.fr
3 Bob bob@wikimedia.fr

Plus précisément[3], une relation (au sens du modÚle de Codd) est constituée :

  1. d'un schéma, c'est-à-dire l'ensemble des noms des champs (ici Clé, Nom, Email), et des types correspondants (dans l'exemple respectivement, un nombre entier, puis deux chaßnes de caractÚres).
  2. d'une extension, c'est-Ă -dire le contenu de la table, qui est un ensemble de n-uplets dont l'ordre n'a pas d'importance.

DĂ©finition

Le langage procédural contient les opérations ensemblistes de la théorie des ensembles[4] sur les relations ainsi que des opérations pour fusionner/projeter des relations.

Opérateurs ensemblistes

Les opérateurs ensemblistes sont l'union, l'intersection, la différence et le produit cartésien.

Union

L'union de deux relations sur le mĂȘme schĂ©ma est la relation sur ce schĂ©ma contenant exactement l'union des enregistrements de ces deux relations. Formellement, .

Employés de Renault
NomIDDĂ©partement
Harry3415Finance
Sally2241Vente
George3401Finance
Employés de Citroën
NomIDDĂ©partement
Bertrand0808Vente
Donald0007Vente
Employés de Renault U Employés de Citroën
NomIDDĂ©partement
Harry3415Finance
Sally2241Vente
George3401Finance
Bertrand0808Vente
Donald0007Vente

Intersection

L'intersection de deux relations sur le mĂȘme schĂ©ma est la relation sur ce schĂ©ma contenant exactement les enregistrements qui apparaissent dans les deux relations. Formellement, .

Personnes inscrits en football
NomID
Harry3415
Sally2241
George3401
Personnes inscrits en cours de piano
NomID
Harry3415
Bertrand2
George3401
Yoda1000
Personnes inscrits en football ∩ Personnes inscrits en cours de piano
NomID
Harry3415
George3401

Différence

La diffĂ©rence de deux relations sur le mĂȘme schĂ©ma est la relation sur ce schĂ©ma contenant exactement les enregistrements qui apparaissent dans la premiĂšre relation mais pas dans la deuxiĂšme. Formellement, . Par exemple, on peut calculer les personnes inscrits en football mais qui ne sont pas inscrits en cours de piano :

Personnes inscrits en football
NomID
Harry3415
Sally2241
George3401
Personnes inscrits en cours de piano
NomID
Harry3415
Bertrand2
George3401
Yoda1000
Personnes inscrits en football - Personnes inscrits en cours de piano
NomID
Sally2241

Produit cartésien

Avec le produit cartésien de deux relations, on recopie chaque tuple de la premiÚre relation pour chacun des tuples de la deuxiÚme. Formellement, .

Personnes
NomID
Harry3415
Sally2241
Cadeaux
TypePrix
livre10
gĂąteau20
ordinateur300
Personnes - Cadeaux
NomIDTypePrix
Harry3415livre10
Harry3415gĂąteau20
Harry3415ordinateur300
Sally2241livre10
Sally2241gĂąteau20
Sally2241ordinateur300

SĂ©lection

La sélection (ou restriction) consiste à ne retenir que les enregistrements vérifiant une condition donnée. Dans l'exemple plus bas, on ne garde que les touristes dont la ville est Paris.

  • DonnĂ©es : Une relation et une formule formĂ©e d'une combinaison de comparaisons et de connecteurs logiques.
  • RĂ©sultat : satisfait la condition donnĂ©e par , dans l'exemple Touristes
  • Équivalent SQL : WHERE
Touristes
idTouristeNomTVilleSport
1MarcParisSki
2JeanToulouseTennis
3FrancMarseilleFootball
4ThomasLyonVoile
5MaxParisGolf
SĂ©lection des touristes oĂč Ville vaut Paris
idTouristeNomTVilleSport
1MarcParisSki
5MaxParisGolf

Projection

La projection permet de ne garder que certains attributs. Dans l'exemple ci-dessous, on ne garde que les attributs NomT et Ville de la relation Touristes.

  • DonnĂ©es : Une relation et un ensemble d'attributs de
  • RĂ©sultat : , qui est la Relation oĂč on ne considĂšre que les attributs de , par exemple Touristes
  • Équivalent SQL : SELECT
Touristes
idTouristeNomTVilleSport
1MarcParisSki
2JeanToulouseTennis
3FrancMarseilleFootball
4ThomasLyonVoile
5MaxParisGolf
Projection de la relation Touristes sur les attributs NomT et Ville
NomTVille
MarcParis
JeanToulouse
FrancMarseille
ThomasLyon
MaxParis

Renommage

Renommage :

  • DonnĂ©es : Une relation et un attribut de
  • RĂ©sultat : , qui est la Relation avec renommĂ©
  • Équivalent SQL : AS

Jointure

Jointure :

  • DonnĂ©es : deux relations et
  • RĂ©sultat :
  • Équivalent SQL : JOIN
Touristes
idTouristeNomTVilleSport
1MarcParisSki
2JeanToulouseTennis
3FrancMarseilleFootball
4ThomasLyonVoile
5MaxParisGolf
Destinations
idTouristeVilleD
1Cannes
2Ibiza
4Tokyo
Touristes ⋈ Destinations
idTouristeNomTVilleSportVilleD
1MarcParisSkiCannes
2JeanToulouseTennisIbiza
4ThomasLyonVoileTokyo

Division

La division prend en entrĂ©e deux relations et . Ainsi, tout n-uplet se dĂ©compose en deux n-uplets , avec de schĂ©ma et de schĂ©ma . et retourne la table de schĂ©ma tel que . La division revient Ă  donner “tous les x tels que pour tout y...”

Expressivité

L'algĂšbre SPC (sĂ©lection, projection et produit cartĂ©sien) correspond au calcul conjonctif (calcul relationnel sans disjonction et sans nĂ©gation) : c'est une des versions du thĂ©orĂšme de Codd. L'algĂšbre SPCU- (l'algĂšbre SPC avec en plus l'union et la diffĂ©rence) correspond au calcul relationnel en entier : c'est une autre version du thĂ©orĂšme de Codd. L'Ă©quijointure peut ĂȘtre exprimĂ©e avec un produit cartĂ©sien, suivi d'une sĂ©lection, puis une projection.

Optimisation

Voici des rÚgles de réécriture pour transformer une expression de l'algÚbre relationnelle en une autre expression équivalente.

Implémentation

Cependant, les bases de données relationnelles ne fonctionnent pas tout à fait selon les rÚgles ensemblistes de l'algÚbre relationnelle. En effet, si l'on ne définit pas de clé primaire, il est possible d'insérer plusieurs lignes identiques dans une table, ce qui d'un point de vue ensembliste n'a pas de sens : un élément fait partie ou ne fait pas partie d'un ensemble. Si l'on veut appliquer strictement les rÚgles des ensembles, il faut vérifier à chaque ajout dans une table que les lignes introduites ne sont pas déjà présentes.

Objets précis du modÚle

Il s'agit ici de déterminer des Domaines (i.e., type atomique) :

  • NumĂ©rique : entier ou rĂ©el (SQL : Int, Float, etc.) ;
  • ChaĂźne de caractĂšres (SQL : Char(20), VarChar(32), etc.) ;
  • Date (SQL : DATE, TIME, YEAR, etc.) ;
  • Type Ă©numĂ©rĂ©.

Notes et références

  1. (en) Foundations of Databases : The Logical Level, Addison-Wesley Longman Publishing Co., Inc., , 685 p. (ISBN 978-0-201-53771-0, lire en ligne), p. 10
  2. (en) Foundations of Databases : The Logical Level, Addison-Wesley Longman Publishing Co., Inc., , 685 p. (ISBN 978-0-201-53771-0, lire en ligne), Part B - Basics: Relational QueryLanguages - p. 35
  3. « Apprendre les bases de données et SQL », sur Developpez.com (consulté le )
  4. (ro) « Aide mémoire sur les bases de données et SQL2 », sur scritube.com (consulté le ).

Voir aussi

Liens externes

Cet article est issu de wikipedia. Text licence: CC BY-SA 4.0, Des conditions supplĂ©mentaires peuvent s’appliquer aux fichiers multimĂ©dias.