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 | |
---|---|---|
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 :
- 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).
- 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, .
|
|
|
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, .
|
|
|
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 :
|
|
|
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, .
|
|
|
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
|
|
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
|
|
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
|
|
|
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
- (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
- (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
- « Apprendre les bases de données et SQL », sur Developpez.com (consulté le )
- (ro) « Aide mémoire sur les bases de données et SQL2 », sur scritube.com (consulté le ).
Voir aussi
- SystÚme de gestion de base de données
- AlgĂšbre
- Théorie des ensembles
- Base de données
- Base de données relationnelle
Liens externes
- RAT, Software Rational Algebra Translator to SQL
- (fr) Laurent Audibert, « Bases de données relationnelles », sur developpez.com