Cours Algèbre et Calcul Relationnel


Télécharger Cours Algèbre et Calcul Relationnel

★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

Télécharger aussi :


Le modèle relationnel       AlgebreRelationnelleGraphique

Algèbre

Et

Calcul Relationnel

L’ALGÈBRE RELATIONNELLE:

OPERATIONS DE BASE

L’algèbre relationnelle a été inventée par E. Codd comme une collection d’opérations formelles qui agissent sur des relations et produisent des relations en résultats [Codd7O]. On peut considérer que l’algèbre relationnelle est aux relations ce qu’est l’arithmétique aux entiers. Cette algèbre, qui constitue un ensemble d’opérations élé­mentaires associées au modèle relationnel, est sans doute une des forces essentielles du modèle. Codd a initialement introduit huit opérations, dont certaines peuvent être composées à partir d’autres. Dans cette section, nous allons introduire six opérations qui permettent de déduire les autres et qui sont appelées ici opérations de base. Nous introduirons ensuite quelques opérations additionnelles qui sont parfois utilisées. Des auteurs ont proposé d’autres opérations qui peuvent toujours se déduire des opérations de base [Delobel83. Maier83].

Les opérations de base peuvent être classées en deux types: les opérations ensemblistes traditionnelles (une relation étant un ensemble de tuples, elle peut être traitée comme tel) et les opérations spécifiques.

Les opérations ensemblistes sont des opérations binaires, c’est-à-dire qu’à partir de deux relations elles en construisent une troisième. Ce sont l’union, la différence et le produit cartésien.

 Les opérations spécifiques sont les opérations unaires de projection et restriction qui, à partir d’une relation, en construisent une autre, et l’opération binaire de jointure. Nous allons définir toutes ces opérations plus précisément

1. LES OPÉRATIONS ENSEMBLISTES

1.1.UNION

L’unionest l’opération classique de la théorie des ensembles adaptée aux relations de même schéma.

Notion : Union (Union)

Opération portant sur deux relations de même schéma RELATION1 et RELAT10N2 consistant à construire une relation de même schéma RELAT10N3 ayant pour tuples ceux appartenant à RELATION1 ou RELATION2 ou aux deux relations.

Plusieurs notations ont été introduitespour cette opération selon les auteurs :

 RELATION1 U RELATION2

 UNION (RELATION1, RELATION2)

 APPEND (RELATION1, RELATION2)

La notation graphique représentée figure 1 est aussi utilisée. A titre d’exemple, l’union des relations VINS 1 et VINS 2 est représentée figure 2. (relation VINS)

Figure 1: représentation graphique de l'union

Vins 1CruMillRégionCouleur

 CHENAS  1983  BEAUJOLAIS ROUGE

 TOKAY 1980 ALSACE BLANC

 TAVEL 1986  RHONE ROSE

Vins 2CruMillRégionCouleur

 TOKAY 1980  ALSACE BLANC

 CHABLIS 1985  BOURGOGNE ROUGE

VinsCruMillRégionCouleur

 CHENAS  1983  BEAUJOLAIS ROUGE

 TOKAY 1980 ALSACE BLANC

 TAVEL 1986  RHONE ROSE

 CHABLIS 1985  BOURGOGNE ROUGE

Figure 2 – Exemple d’union

1.2.DIFFERENCE

La différenceest également l’opération classique de la théorie des ensembles adaptée aux relations de même schéma.

Notion : Différence (Difference)

Opération portant sur deux relations de même schéma RELATION1 et REL.AT10N2 consistant à construire une relation de même schéma RELAT10N3 ayant pour tuples ceux appartenant à RELATION1 et n’appartement pas à la RELATION2

La différence est un opérateur non commutatif : l’ordre des relations opérandes est donc important. Plusieurs notations ont été introduites pour cette opération selon les auteurs

  • RELATION1 - RELATION2
  • DIFFERENCE (RELATION1, RELATION2)
  • MINUS (RELATION1, RELATION2)

La notation graphique représentée figure 3 est aussi utilisée. À titre d’exemple, la différence des relations VINS 1 - VINS 2 est représentée figure 4 (VINS)

Figure 3: Représentation graphique de la différence

Vins 1CruMillRégionCouleur

 CHENAS  1983  BEAUJOLAIS ROUGE

 TOKAY 1980 ALSACE BLANC

 TAVEL 1986  RHONE ROSE

Vins 2CruMillRégionCouleur

 TOKAY 1980  ALSACE BLANC

 CHABLIS 1985  BOURGOGNE ROUGE

VinsCruMillRégionCouleur

 CHENAS  1983  BEAUJOLAIS ROUGE

 TAVEL 1986  RHONE ROSE

Figure 4 – Exemple de différence

1.3. PRODUIT CARTÉSIEN

Le produit cartésienest l’opération ensembliste que nous avons rappelée ci-dessus pour définir le concept de relation. Elle est adaptée aux relations. Cette fois, les deux relations n’ont pas nécessité d’avoir le même schéma.

Notion : Produit cartésien (Cartesian product)

Opération portant sur deux relations RELATION1 et RELATION2 consistant à construire une relation RELATION3 ayant pour schéma la concaténation de ceux des relations opérandes et pour tuples toutes les combinaisons des tuples des relations opérandes.

Des notations possibles pour cette opération sont:

  • RELATION1 X RELATION2
  • PRODUCT (RELATION1, RELATION2)
  • TIMES (RELATION2, RELATION2)

La notation graphique représentée figure 5 est aussi utilisée. À titre d’exemple, la relation VINS représentée figure 6 est le produit cartésien des deux relations CRUS et ANNEES de la même figure.

Figure 5 : Exemple de produit cartésien

Vins 1CruRégionCouleur

 CHENAS  BEAUJOLAIS ROUGE

 TOKAY ALSACE BLANC

 TAVEL RHONE ROSE

X

AnnéeMill

 1980

 1985

VinsCruRégionCouleurMill

 CHENAS  BEAUJOLAIS ROUGE 1980

 TOKAY ALSACE BLANC 1980

 TAVEL RHONE ROSE 1980

 CHENAS  BEAUJOLAIS ROUGE 1985

 TOKAY ALSACE BLANC 1985

 TAVEL RHONE ROSE 1985

Figure 6 – Exemple du produit cartesien

2. LES OPÉRATIONS SPÉCIFIQUES

2.1. PROJECTION

La projectionest une opération spécifique aux relations qui permet de supprimer des attributs d’une relation. Son nom provient du fait qu’elle permet de passer d’une relation n-aire à une relation p-aire avec p<n donc d’un espace à n dimensions à un espace à moins de dimensions.

Notion – Projection (Projection)

Opération sur une relation RELATION 1 consistant à composer une relation RELATION2 en enlevant à la relation initiale tous les attributs non mentionnés en opérandes (aussi bien au niveau du schéma que des tuples) et en éliminant les tuples en double qui sont conservés une seule fois.

Les notations suivantes sont utilisées pour cette opération, en désignant par Attributi, Attributj, Attributm les attributs de projection:

  • Attributi, Attributj, Attributm (RELATION1)
  • RELATION 1 [Attributi, Attributj, Attributm ]
  • PROJECT (RELATION 1, Attributi, Attributj, Attributm)

La notation graphique représentée figure 7 est aussi utilisée. Le trapèze horizontal signifie que l’on réduit le nombre de colonnes de la relation : partant du nombre représenté par la base, on passe au nombre représenté par l’anti-base. La figure 8 donne un exemple de projection d’une relation VINS comportant aussi l’attribut QUALITE sur les attributs CRU et REGION.

Figure 7 : Représentation graphique de la projection

Vins 1CruMillRégionQualité

 VOLNAY  1983 BOURGOGNE A

 VOLNAY  1979 BOURGOGNE B

 CHENAS  1983 BEAUJOLAIS A

 JULIENAS 1986 BEAUJOLAIS C

Project (RELATION 1, Cru, Région)

Proj(Vins)CruRégion

 VOLNAY  BOURGOGNE

 CHENAS  BEAUJOLAIS

 JULIENAS BEAUJOLAIS

Figure 8 : Exemple de projection

2.2. RESTRICTION

La restriction est aussi une opération spécifique unaire qui produit une nouvelle relation en enlevant des tuples à la relation opérande selon un critère.

Notion : Restriction (Restriction)

Opération sur une relation RELATION i produisant une relation RELATION2 de même schéma mais comportant les seuls tuples qui vérifient la condition précisée en argument.



Les conditions possibles sont du type:

 <Attribut> <Opérateur> <Valeur>

où l’opérateur est un opérateur de comparaison choisi parmi {=, <, <, >,>, ?}. L’attribut doit appartenir à la relation sur laquelle s’applique le critère. Par exemple, pour la relation VINS, CRU = “Chablis” est une condition de restriction possible. DEGRE> 12 est une autre condition possible. Il est aussi possible d’utiliser des compositions logiques de critères simples, c’est-à-dire des “et” et “ou” de conditions élémentaires. On pourra par exemple utilisé le critère CRU = “Chablis” et DEGRE> 12, ou encore le critère CRU = “Chablis” ou DEGRE = 12. Toute composition de critères valides par conjonction et disjonction (des parenthèses peuvent être utilisées pour préciser les priorités) est valide. Notons que les compositions logiques peuvent aussi être obtenues par union et intersection (voir ci-dessous) de relations restreintes.

Les notations suivantes sont utilisées pour la restriction:

  • condition (RELATION1)
  • RELATION 1 [Condition]
  • RESTRICT (RELATION1, Condition)

ainsi que la notation graphique représentée figure 9. Le trapèze vertical signifie que l’on réduit le nombre de tuples de la relation : partant du nombre représenté par le côté gauche on passe au nombre représenté par le côté droit. La figure 10 représente la restriction d’une relation VINS enrichie d’un attribut QUALITE par la condition mill>1983

Figure9: Représentation graphique de la restriction

VinsCruMillRégionQualité

 VOLNAY  1983 BOURGOGNE A

 VOLNAY  1979 BOURGOGNE B

 CHENAS  1983 BEAUJOLAIS A

 JULIENAS 1986 BEAUJOLAIS C

RESTRICT (RELATION1, cru > 1983)

VinsCruMillRégionQualité

 JULIENAS 1986 BEAUJOLAIS C

Figure 10: Exemple de restriction

2.3. JOINTURE

La jointureest une des opérations essentielles de l’algèbre relationnelle, sans doute la plus difficile à réaliser dans les systèmes. La jointure permet de composer deux relations à l’aide d’un critère de jointure. Elle peut être vue comme une extension du produit cartésien avec une condition permettant de comparer des attributs. Nous la définirons comme suit:

Notion : Jointure (Join)

Opération consistant à rapprocher selon une condition, les tuples de deux relations RELATION1 et RELATION2 afin de former une troisième relation RELATION3 qui contient l’ensemble de tous les tuples obtenus en concaténant un tuple de RELATION1 et un tuple de RELATION2 vérifiant la condition de rapprochement.

La jointure de deux relations produit donc une troisième relation qui contient toutes les combinaisons de tuples des deux relations initiales qui satisfont la condition spécifiée. La condition doit bien sûr permettre le rapprochement des deux relations, et donc être du type:

 <Attribut 1> <opérateur> <Attribut2>

où Attribut1 appartient à RELATION1 et Attribut2 à RELATION2.

Selon le type d’opérateur, on distingue:

— l’équi-jointure dans le cas où l’opérateur est =, qui est une véritable composition de relations au sens mathématique du terme

— l’inéqui-jointure dans les autres cas, c’est-à-dire avec un des opérateurs <, <, >, > ?

Dans le cas d’équi-jointure, les deux attributs égaux apparaissent chacun dans le résultat: il y a donc duplication d’une même valeur dans chaque tuple. Afin d’élimi­ner cette redondance, on définit la jointure naturelle comme suit:

Notion : Jointure naturelle (Natural Join)

Opération consistant à rapprocher selon une condition les tuples de deux relations RELATION1 et RELATION2 afin de former une troisième relation RELATION3 dont les attributs sont l’union des attributs RELATION1 et de RELATION2 dont les tuples sont obtenus en composant un tuple de RELATION1 et un TUPLE de RELATION2 ayant même valeurs pour les attributs de même nom.

L’opération de jointure est représentée par l’une des notations suivantes, la condition étant simplement omise dans le cas de jointure naturelle (c’est alors l’égalité des attri­buts de même nom):

  • RELATION 1  RELATION2

Condition

  • JOIN (RELATION1, RELATION2, Condition)

La figure 11 donne la représentation graphique de l’opération de jointure alors que la figure 12 illustre cette opération en effectuant la jointure naturelle des deux relations VINS et LOCALISATION. L’inéqui-jointure de ces deux relations selon la condition QUALITE > QUALITE MOYENNE est représentée figure 13. On suppose là que les qualités sont codées par ordre décroissant A, B, C, D, E.

Figure 11 – représentation graphique de la Jointure

VinsCruMillQualité

 VOLNAY  1983 A

 VOLNAY  1979 B

 CHABLIS  1983 A

 JULIENAS 1986 C

Jointure

Localisation  Cru Région QualMoy

  VOLNAY  BOURGOGNE A

  CHABLIS  BOURGOGNE A

  CHABLIS  CALIFORNIE B

VinRegCruMillRégionQualité Moyenne

 VOLNAY  1983 BOURGOGNE A VOLNAY               1979              BOURGOGNE              B              CHABLIS               1983              BOURGOGNE              A              CHABLIS               1983              CALIFORNIE                          A

Figure 12: Jointure naturelle des relation VINS et LOCALISATION

VinsCruMillQualité

 VOLNAY  1983 A

 VOLNAY  1979 B

 CHENAS  1983 A

 JULIENAS 1986 C

Joint (Qualité ? QualMoy)

Localisation  Cru Région QualMoy

  VOLNAY  BOURGOGNE A

  CHABLIS  BOURGOGNE A

  CHABLIS  CALIFORNIE B

VinRegCruMillQualitéCruRégionQualMoy

 VOLNAY 1983   A CHABLIS CALIFORNIE   B

 VOLNAY 1979   B VOLNAY BOURGOGNE  A

 VOLNAY 1979   B CHABLIS BOURGOGNE  A

 CHABLIS 1979   A CHABLIS CALIFORNIE   B

 JULIENAS 1986  C VOLNAY BOURGOGNE  A

 JULIENAS 1986  C CHABLIS BOURGOGNE  A

 JULIENAS 1986  C CHABLIS CALIFORNIE   B

Figure 13: Inéqui-jointure des relation VINS et LOCALISATION

La jointure n’est pas toujours considérée comme une opération de base de l’algèbre relationnelle. En effet, si l’on étend la définition de la restriction de manière à considérer des conditions multiattributs du type <Attribut 1> <Opérateur> <Attribut2>, alors la jointure peut être obtenue par un produit cartésien suivi d’une restriction du résultat comme suit:

JOIN (RELATION1, RELATION2, Condition) =

RESTRICT ((RELATION1 X RELATION2), Condition)

Compte tenu de l’importance de la jointure, nous avons préféré ici définir la jointure comme une opération de base.

L’ALGÈBRE RELATIONNELLE:

OPÉRATIONS DÉRIVÉES

Les opérations présentées ci-dessous sont parfois utilisées pour manipuler des relations. Elles peuvent en général être obtenues par combinaison des opérations précé­dentes. Dans certains cas (Complément, Jointure externe), leur expression à partir des opérations de base nécessite la manipulation de relations constantes à tuples pré-définis, telles que la relation obtenue par le produit cartésien des domaines, ou encore celle composée d’un seul tuple à valeurs toutes nulles.

5.1. INTERSECTION

L’intersection est l’opération classique de la théorie des ensembles adaptée aux rela­tions de même schéma.

Notion : Intersection (Intersection)

Opération sur deux relations de même schéma RELATIONet RELATION2 consistant à construire une relation de même schéma RELATION3 ayant pour tuples ceux appartenant à la fois à RELATION1 et RELATION2

Plusieurs notations ont été introduites pour cette opération selon les auteurs

? RELATION1  ? RELATION2

? INTERSECT (RELATION1, RELATION2)

? AND (RELATION1, RELATION2)

La notation graphique représentée figure 14 est aussi utilisée.

RÉSULTAT

Figure 14 : Représentation graphique de l’intersection

RELATION1

RELATION2

L’intersection est une opération redondante avec les opérations de base en ce sens qu’il est possible de l’obtenir à partir de la différence à l’aide d’une des formules suivantes:

? RELATION1 ?RELATION2 = RELATION1 - (RELATION1 - RELATION2)

? RELATION1  ?RELATION2 = RELATION2 - (RELATION2 - RELATION1)




5.2 DIVISION

La division permet de rechercher dans une relation les sous-tuples qui sont complétés par tous ceux d’une autre relation. Elle permet ainsi d’élaborer la réponse à des ques­tions de la forme “quel que soit x, trouver y” de manière simple.

Notion: Division (Division)

Opération consistant à construire le quotient de la relation D (A 1, A2 Ap, Ap+ 1,An) par la relation d(Ap+ 1,An) comme la relation Q(A 1, A2 Ap) dont les tuples sont ceux qui concaténés à tout tuple de d donnent un tuple de D.

De manière formelle, désignons par ai une valeur quelconque de l'attribut Ai.

Un tuple est alors une suite de valeurs <a1,a2,a3,…..>.Utilisant ces notations, le quotient de D par d est défini par :

 Q = {<a1, a2, …ap> tel que quelque soit <ap+1, …an> de d, <a1, a2,…ap, ap+1,…, an> appartient à D}

Les notations possibles pour la division sont :

 D ? d

 DIVISION (D,d)

ainsi que la représentation graphique donnée figure15.

Un exemple de la division est donné figure 16.

Figure 15 : Représentation graphique de la division

VOLNAY              1983 A
VOLNAY              1979 B
CHABLIS              1983 A
CHABLIS              1979 A
JULIENAS              1986 A

Figure 16 : Exemple de division

5.3.COMPLEMENT

Le complément permet de trouver les tuples qui n’appartiennent pas à une relation. Il suppose à priori que les domaines sont finis (sinon on obtient des relations infinies).

Notion : Complément

Ensemble des tuples du produit cartésien des domaines des attributs d’une relation n’apparte­nant pas à cette relation.

Le complément d’une relation RELATION i est noté au choix:

? NOT (RELATIONi)

? COMP (RELATIONi)

La figure 17 illustre cette opération dans un cas simple. C’est une opération peu utilisée du fait qu’elle permet de générer des tuples qui ne sont pas dans la base, en général très nombreux. Si l’on note par X Di le produit cartésien des domaines, le complément d’une relation RELATION i est obtenu à partir de la différence comme suit:

? NOT (RELATIONi) = X Di - RELATIONi

Domaines :  CRU = {CHABLIS,VOLNAY, MEDOC}

   COULEUR = {ROUGE, BLANC, ROSE}

      COMPLEMENT

Figure 17:Exemple de complément

5.4.ÉCLATEMENT

L’éclatement [Fagin8O] est une opération qui n’appartient pas vraiment à l’algèbre relationnelle puisqu’elle donne deux relations en résultats, à partir d’une. Elle est cependant utile pour partitionner une relation horizontalement en deux sous-relations. À ce titre, elle est considérée comme une extension de l’algèbre.

Notion :Eclatement

Opération consistant à créer deux relations à partir d'une relation RELATION1 et d'une condition, la première contenant les tuples de RELATION1 vérifiant lacondition et la deuxième ceux ne la vérifiant pas 

Cet opérateur appliqué à la relation RELATIONi génère donc deux relations R1 et R2 qui seraient obtenues par restriction comme suit:

? R1 = RESTRICT (RELATIONi, Condition)

? R2 = RESTRICT (RELATIONi, Non Condition)

5.5.JOINTURE EXTERNE

Les jointures définies ci-dessus perdent des tuples d’au moins une relation quand les relations jointes n’ont pas de projections identiques sur l’attribut de jointure. Pour préserver toutes les informations dans tous les cas, il est nécessaires de définir des jointures qui conservent les tuples sans correspondant avec des valeurs nulles associées quand nécessaire. C’est dans ce but que Codd [Codd79] a introduit les jointures externes.

Notion: Jointure externe (External Join)

Opération générant une relation RELATION3 à partir de deux relations RELATION I etRELATION2 par jointure de ces deux relations et ajout des tuples de RELATION i etRELATION2 ne participant pas la jointure avec des valeurs nulles pour les attributs de l’autre relation.

Cette opération est très utile, en particulier pour composer des vues sans perte d’informations. Elle se note en général comme suit:

  • RELATION1       RELATION2

.

  •      EXT-JOIN (RELATION1, RELATION2)

La jointure externe permet par exemple de joindre des tables CLIENTS et COMMANDES sur un numéro de client commun, en gardant les clients sans commande et les commandes sans client associé. Elle est donc en pratique très utile. On peut aussi distinguer la jointure externe droite qui garde seulement les tuples sans correspondant de la relation de droite. On notera celle-ci X. ou REXT-JOIN. De même, on peut distinguer la jointure externe gauche .X ou LEXT-JOIN). Un exemple de jointure externe complète est donné figure 18.

.

Figure 18: Exemple de jointure externe

5.6.SEMI-JOINTURE

Dans certains cas, lors de l’exécution d’une jointure, il n’est pas nécessaire de conserver tous les attributs des deux relations en résultat : seuls les attributs d’une des deux relations sont conservés. Une opération spécifique de semi-jointure, très utile pour optimiser l’évaluation des questions a été définie [Berstein8l].

Notion: Semi-jointure (Semi-join)

Opération portant sur deux relations RELATION1i et RELATION2 donnant en résultat les tuples de RELATION1i qui participent à la jointure des deux relations.

La semi-jointure de la relation RELATION1 par  relation RELATION2 est notée:

? RELATION1    RELATION2

? SEMI-JOIN (RELATIONl, RELATION2)

Elle est équivalente à la jointure des relations RELATION1 et RELATION2 suivie par une projection du résultat sur les attributs de la relation RELATION1.

À noter que l’opération n’est pas symétrique puisque seuls des tuples de la première relation sont conservés. Elle peut être vue comme une restriction de la relation RELATION 1 par les valeurs des attributs de jointure figurant dans la relation RELATION2

 La figure 19 illustre cette opération de semi-jointure.

Exemple19 de semi-jointure

?LES EXPRESSIONS DE L’ALGÈBRE RELATIONNELLE

À partir des opérations de l’algèbre relationnelle, il est possible de composer un langage d’interrogation de bases de données. Une question peut alors être représentée par un arbre d’opérateurs relationnels. Le paraphrasage en anglais de telles expressions est à la base du langage SQL que nous étudierons dans le chapitre suivant.

6.1. LANGAGE ALGEBRIQUE

En utilisant des expressions d’opérations de l’algèbre relationnelle, il est possible d’élaborer les réponses à la plupart des questions que l’on peut poser à une base de données relationnelle. Plus précisément, les opérations de base de l’algèbre relationnelle constitue un langage complet, c’est-à-dire ayant la puissance de la logique du premier ordre.

Afin d’illustrer, nous exprimons quelques questions sur la base DEGUSTATION . Ces questions peuvent être exprimées comme des expressions d’opérations, ou comme des opérations successives appliquées sur des relations intermédiaires ou de base, générant des relations intermédiaires. Pour des raisons de clarté, nous avons choisi cette deuxième représentation. L’expression peut être obtenue simplement en supprimant les relations intermédiaires notées Ri.

(Q1) Donner les degrés des vins de crus MORGON et de MILLESIME 1978:

R1 = RESTRICT (VINS, CRUS = “MORGON”)

R2 = RESTRICT (VINS, MILLESIME = 1978)

R3 = INTERSECT (R1, R2)RESULTAT = PROJECT (R3, DEGRE)

(Q2) Donner les noms et prénoms des buveurs de MORGON ou CHENAS:

Ri = RESTRICT (VINS, CRU = “MORGON”)

R2 = (VINS, CRUS = “CHENAS”)

R3 = UNION (R1, R2)

R4 = JOIN (R3, ABUS)

R5 = JOIN (R4, BUVEURS)

RESULTAT = PROJECT (R5, NOM, PRENOM)

(Q3)Donner les noms et adresses des buveurs ayant bu plus de 10 bouteilles de Chablis 1976 avec le degré de ce vin:

R1 = RESTRICT (ABUS, QUANTITE>10)

R2 = RESTRICT (VINS, CRU = “CHABLIS”)

R3 = RESTRICT (VINS, MILLESIME = 1976)

R4 = INTERSECT (R2, R3)

R5 = JOIN (R1, R4)

R6 = PROJECT (R5, NB, DEGRE)

R7 = JOIN (R6, BUVEURS)

RESULTAT = PROJECT (R7, NOM, ADRESSE, DEGRE)

(Q4) Donner les noms des buveurs n’ayant bu que du Morgon:

R1 = JOIN(BUVEURS,ABUS,VINS)

R2 = RESTRICT(R1, CRU = “MORGON”)

R3 = PROJECT(R2, NOM)

R4 = RESTRICT(R1, CRU ?“MORGON”)

R5 = PROJECT(R1, NOM)

RESULTAT = MINUS(R3 - R5)

6.2 ARBRE ALGEBRIQUE

Une question exprimée sous forme dun programme d'opérations de l'algèbre relationnelle peut être représentée par un arbre relationnel.Les nœuds correspondent aux représentationsgraphiques des opérations indiquées ci-dessuset les arcs aux flots de données entre opérations.

Afin d’illustrer, la question “Noms et Prénoms des buveurs habitant Paris ayant bu du Chablis depuis le 1er janvier 1992” peut être exprimée à l’aide de l’arbre représenté figure 20. Plusieurs arbres équivalents peuvent être déduits d’un arbre donné àl’aide de règles de transformation simples, telles que permutation des jointures et restrictions, permutation des projections et des jointures, regroupement des intersections sur une même relation, etc. Ces transformations sont à la base des techniques d’optimisation de questions qui dépassent le sujet de ce chapitre. La figure 21 donne un arbre équivalent à celui de la figure 20, obtenu par descente de projections et regroupement d’intersections.



La composition d’opérations de l’algèbre relationnelle ne nécessite pas toujours d’attendre le résultat de l’opération précédente pour exécuter l’opération suivante. Restriction, projection et jointure peuvent ainsi être exécutées par des algorithmes àflots de données. Des opérateurs se succédant sur un arbre peuvent donc être exécutés en parallèle par des algorithmes “pipe-line”. Des opérateurs figurant sur des branches distinctes d’un arbre peuvent aussi être exécutés en parallèle de manière indépendante. La représentation par arbre algébrique met ainsi en évidence les possibilités de parallélisme et les enchaînements nécessaires. Ces propriétés des arbres relationnels sont importantes pour optimiser les questions dans des contextes parallèles.

      RESULTAT

      NOM,PRENOM

     A.DATE >= "92-01-01"

     V.CRU = "CHABLIS"

         A.NV = V.NV

         VINS V

       B.NB = A.NB 

       ABUS A

 B.ADRESSE  LIKE  "PARIS"

    BUVEURS B

Figure 20 :Exemple d'arbre représentant une question.

RESULTAT

B.NOM,B.PRENOM

A.NV =V.NV

B.PRENOM

A.NV

B.NOM

B.NB = A.NBV.NV

NOM,NBV.CRU=CHABLIS"

PRENOM

A.NV

A.NB

VINS V

B.ADRESSELIKE"PARIS"

A.DATE>="92.01.01"

    BUVEURS B    ABUS A

Figure 21 : autreversion équivalente

7 FONCTIONS ET AGREGATS

L'algèbre relationnelle est insuffisante pour traiter de véritables applications des bases de données, telles la suivie de production, la gestion de budget, ….Il est en effet nécessaire d'effectuer des calculs sur la base pour supporter de telles applications. C'est l'objet de l'introduction des fonctions de calcul au sein de l'algèbre et du supportdes agrégats.

7.1 Fonctions de calcul

La possibilité d'effectuer des calculs sur les attributs est simplement introduite en généralisant projection, restriction et jointure par introduction de fonctions.Ainsi, tout attribut apparaissant en argument d'une opération est remplacé par un expression d'attributs.

Notion : Expression d'attributs (Attribute expression)

Expression arithmétique construite à partir d'atributs d'une relation et de constantes, par application de fonctions arithmétiques successives.

Des exemples d’expressions d’attributs sont:

? 10 + 50 - 23

? QUANTITE *50

? QUANTITE * DEGRE /100

? QUANTITE - QUANTITE * DEGRE /100.

De telles expressions peuvent donc être utilisées comme arguments de projections, de restrictions voire de jointures. Le programme d’algèbre relationnelle suivant illustre ces possibilités:

R1 = JOIN (VINS, ABUS, DEGRE*QUANTITE/100> QUANTITE/lO)

R2 = RESTRICT(R1, DEGRE*QUANTITE/100> 10)

RESULTAT = PROJECT(R2, CRU, QUANTITE - QUANTITE*DEGRE/100)

La notion d’expression d’attributs peut être généralisée avec des fonctions autres que les fonctions arithmétiques, par exemple des fonctions écrites dans un langage externe. On aboutit ainsi à une généralisation de l’algèbre relationnelle aux fonctions [Zaniolo85].

7.2. SUPPORT DES AGREGATS

Notion : Agrégat (Aggregat)

Partitionnement horizontal d’une relation en fonction des valeurs d’un groupe d’attributs, suivi d’un regroupement par application d’une fonction de calcul sur ensemble.

Les expressions d’attributs permettent d’effectuer des opérations de calcul en ligne, sur des attributs de relations. En pratique, il est nécessaire d’effectuer des opérations de calcul en colonnes, sur des tuples de relations, cela par exemple afin de sommer des dépenses, etc. Le concept d’agrégatpermet de telles opérations.

Les fonctions de calcul sur ensemble les plus souvent proposées sont les suivantes:

? SOMME permettant de calculer la somme des éléments d’un ensemble

? MOYENNE permettant de calculer la moyenne des éléments d’un ensemble

? MINIMUM permettant de sélectionner l’élément minimum d’un ensemble

? MAXIMUM permettant de sélectionner l’élément maximum d’un ensemble

? COMPTE permettant de compter les éléments d’un ensemble.

La figure 22 illustre le concept d’agrégat. La table VINS est enrichie d’un attribut QUANTITE. L’agrégat représenté calcule la somme des quantités par CRU. L’opération s’écrit de manière générale

R = AGREGAT(<Relation>.; <Attribut 1>; <Fonction> { <Attribut2> })

<Attribut1> représente un ou plusieurs attributs utilisés pour le partitionnement.

Fonction est la fonction d’ensemble appliquée à l’attribut <Attribut2>.

 Par exemple, on écrit:

RESULTAT = AGREGAT(VINS; CRU; SUM{QUANTITE})

pour l’agrégat illustré figure 22. A noter qu’un agrégat peut s’effectuer sans partitionnement; on peut par exemple calculer simplement la moyenne de tous les degrés comme suit (voir figure 22):

RESULTAT = AGREGAT(VINS; ; MOY{DEGRE}).

AGREGAT (VINS;MOY(DEGRE))

AGREGAT(VINS;CRU;SUM(QUANTITE))

Notion V.29 Vue (View)

Relation non matérialisée d’un schéma externe, calculée à partir des relations de la base par une question.


8. VUES

Les vues permettent de définir des relations virtuelles et d’ assurer une meilleure indé­pendance programmes-données.

8.1. DÉFINITION DE VUE

Une vue est une table d’un schéma externe. Afin d’exprimer la transformation per­mettant de composer une vue à partir des tables d’une base, les systèmes relationnels utilisent le langage d’interrogation. Il est donc possible de définir la notion de vue comme suit.

Une vue est donc virtuelle : c’est une fenêtre dynamique seulement partiellement matérialisée lors des interrogations. Elle n’a pas d’existence physique, au moins lorsqu’elle n’est pas accédée. Il est cependant possible d’associer une table matériali­sée à une vue : on parle alors de vue concrète. La maintenance des vues concrètes est un problème difficile, car il faut répercuter les mises à jour des relations de base sur la vue concrète. Sauf indication contraire, une vue restera donc non matérialisée : elle servira à modifier les questions de l’utilisateur portant sur elle pour les faire porter sur des relations de la base.

À titre d’exemple, nous définirons la vue GROS - BUVEURS sur la base de données DEGUSTATION par une question exprimée en algèbre relationnelle comme suit:

CREATE VIEW GROS BUVEURS(NOM, PRENOM) =

PROJECT (NOM, PRENOM,

RESTRICT (QUANTITE> 100,

JOIN (BUVEURS, ABUS)))

Cette vue contient donc virtuellement le nom et le prénom de tous les buveurs qui ont commis un abus en quantité supérieur à 100. Elle peut être interrogée comme une table normale de la base, à charge du système de transformer les questions sur la vue en questions sur les tables BUVEURS et ABUS.

9. CONCLUSION

Dans ce chapitre, nous avons introduits les concepts essentiels aujourd’hui supportés par le modèle relationnel dans les grands systèmes industriels tels que ORACLE, INGRES, DB2, SYBASE, etc. Ces concepts sont la base du langage SQL, le langage des systèmes relationnels.

Le modèle relationnel fait aujourd’hui autorité dans l’industrie. Il est issu de la théorie des relations et est au départ une remarquable construction de la recherche. Il a su progressivement intégrer des concepts de plus en plus riches, tels que intégrité référentielle, réflexe, etc. Le modèle en est aujourd’hui à intégrer les concepts d’objets complexes. Il a encore un bel avenir devant lui, bien que parfois contesté par les tenants de l’orienté objets.

Figure V. 15: Exemple de projection


1361