Le modèle Relationnel et l Algèbre relationnelle Introduction Le modèle relationnel est un modèle logique proposé par Codd à IBM-St-José en 1970, et associé aux SGBD relationnels (ex: Oracle, Access, Paradox, dbase, SQLServer). Une BD relationnelle est une BD dont le schéma est un ensemble de schémas de relations et dont les occurrences sont des tuples ou n-uplets de ces relations. Autrement dit, les entités et les associations du modèle E-A sont représentées exclusivement par des relations (des tables). Ce modèle propose une démarche pour la description (LDD), et l'interrogation (LMD) des données par laquelle les objets sont manipulés par des opérateurs algébriques relationnels (UNION, INTERSECTION, PRODUIT CARTESIEN, SELECTION, PROJECTION, JOINTURE,...). 1. Notions de base: - Un schéma relationnel est un ensemble de schémas de relations dont les occurrences sont des n- uplets de ces relations (ou tuples). - Une Relation est un ensemble d'attributs {A1,A2,,An}. Par exemple: la relation PRODUIT est l'ensemble des attributs {NumProd, Dési, PrixUni} - Chaque attribut Ai prend ses valeurs dans un domaine D(Ai).Par exemple: D(PrixUni) = ]0, 10000] - Un n-uplet est un ensemble de valeurs t=<v1,v2,,vn> où Vi dom(ai) ou bien Vi est la valeur nulle (NULL). Par exemple : < Dupont, Paris, 2140> est un tuple de la table ou la relation R. < Feren, null, 3296> peut être aussi un tuple de la relation. - Le schéma de la relation R est la liste des attributs de R avec, pour chacun, son domaine, parfois sous-entendu. Par exemple : Le schéma de r est R = (NOM : D1, ADR : D2, NUM : D3) peut être écris écrit en abrégé R = (NOM, ADR, NUM). - Représentation d une relation : Chaque tuple (n-uplet) d une relation est écrit dans une ligne d un tableau dont les noms des colonnes sont les attributs de la relation. Chaque tuple est unique. Les duplications ne sont pas autorisées et l ordre des tuples est indifférent. Figure. II.1. Représentation graphique d une relation. - Une Clé primaire et un ensemble d'attributs dont les valeurs permettent de distinguer les nuplets les uns des autres (identifiant) tandis qu une Clé étrangère est un attribut qui est une clé primaire 1
d'une autre relation. Notons ici que clés primaires sont généralement soulignées et les clés étrangères en italiques. Par exemple : NumProd est une clé primaire de la relation PRODUIT et l'attribut NumFour est une clé étrangère à la relation PRODUIT (NumProd,Dési,PrixUni,NumFour). 2. Passage modèle Entité-Association / modèle Relationnel: La modélisation E-A des données étant effectuée, il faut implanter la structure obtenue en machine, par exemple sous forme d'un SGBD relationnel. Nous allons donc transformer cette structure sous une forme relationnelle. On dit aussi que l'on transforme le diagramme E-A en schéma relationnel. Figure. II.2. exemple d un modèle Entité-Association. Etape 1 : Toute classe d entités du diagramme Entité/Association est représentée par une relation dans le schéma relationnel équivalent. La clé primaire de cette relation est l identifiant de la classe d entités correspondante. Dans la figure II.2. nous pouvons avoir 4 relations équivalentes aux 4 classes d entités : Acteur (NumActeur, Nom, Prénom) Film (NumFilm, Titre, Metteur_En_Scène) Cinema (NumCinéma, Nom, Adresse) Réalisateur (NumRealisateur, Nomréa, Prénomréa) Etape 2 Toute association est transformée en relation. La clé de cette relation est composée de tous les identifiants des entités participantes. 2
Dans la figure II.2. nous pouvons avoir 3 autres relations équivalentes aux 3 associations : Joue (NumACteur, NumFilm, Rôle) Affiche (NumFilm, NumCinema,Date) Réalise (NumFilm,NumRéalisateur) Etape 3 (Optimisation) Toute association reliée à une classe d entités avec une cardinalité de type 0,1 ou 1,1 peut être fusionnée avec la classe d entités. Dans ce cas on déplace les attributs de l association vers ceux de la relation traduisant la classe d entités. Pour l exemple de la figure II.2. et après l optimisation des 7 relations trouvées précédemment, on retrouve le schéma relationnel optimal suivant : Acteur (NumActeur, Nom, Prénom) Film (NumFilm, Titre, MetteurEnScène,NumReal) Cinema (NumCinéma, Nom, Adresse) Réalisateur(NumRealisateur,Nom, Prénom) Joue (NumACteur, NumFilm, Rôle) Affiche (NumFilm, NumCinema,Date) 3. Algèbre relationnelle : La notion de relation a engendré le développement de langages d interrogation assertionnels qui permettent de définir les données que l on souhaite visualiser sans dire comment y accéder. Un langage de manipulation des données (LMD) se compose d un ensemble de commandes permettant l interrogation de la base et d un ensemble de commandes permettant de modifier celle-ci (insertion, mise à jour, suppression). Les langages algébriques, où l expression d un besoin d utilisateur se fait à l aide d opérations dont les opérandes sont des relations. Ces langages consistent en une séquence d'opérateurs sur les relations qu on en peut aussi donner une représentation graphique sous forme d'arbre. Par exemple, l interrogation des données utilisée ans le langage SQL (Structured English QUEry Language) est basé sur l algèbre relationnelle (développée par CODD). L algèbre relationnelle est un ensemble d opérations (unaires et binaires) ayant pour opérandes (entrées) des relations et pour résultat une autre relation. On trouve 5 opérateurs de base et 3 opérateurs supplémentaires. 3
3.1. Opérateurs de base 3.1.1. Union L'union de deux relations R1 et R2 de même schéma est une relation R3 de schéma identique qui a pour n-uplets les n-uplets de R1 et/ou R2. Et on notera (R1 U R2) ou bien Union (R1, R2). Exemple : R et S sont les relations Matière de deux départements qui fusionnent et veulent unifier leur formation. Le résultat est une relation T. Matière (Intitulé, année, semestre, coef, credit) Figure. II.3. L union de deux relations. 3.1.2. Intersection L intersection entre deux relations R1 et R2 de même schéma est une relation R3 de schéma identique ayant pour n-uplets les n-uplets communs à R1 et R2. On notera (R1 R2) ou Intersect (R1, R2). Exemple : l intersection des deux relations Matière : R et S est une relation T contenant les matières communes des deux départements. 4
Figure. II.4. L intersection de deux relations. 3.1.3. Différence La différence entre deux relations R1 et R2 de même schéma est une relation R3 de schéma identique ayant pour n-uplets les n-uplets de R1 n'appartenant pas à R2. On notera (R1 R2). Remarque : Contrairement aux deux opérations précédentes, cette opération n est pas commutative. Exemple : la différence entre R et S est une relation T contenant les matières enseignées seulement dans le premier département. Figure. II.5. La différence de deux relations. 5
3.1.4. Projection (opérateur unaire) La projection d'une relation R est la relation T obtenue en supprimant les attributs de R1 non mentionnés puis en éliminant éventuellement les nuplets identiques. En d autre terme, elle correspond à un découpage vertical (élimination de colonnes) et on notera : T =,,..., la projection d'une relation R sur les attributs Ai, Aj,, Am. Exemple : La relation T répond à la question : donnez les triplets (matière, coefficient, crédit) des matières enseignées dans le premier département. Figure. II.6. La projection de d une relation. 3.1.5. Restriction (opérateur unaire) La restriction d'une relation R est une relation T de même schéma n'ayant que les n-uplets de R1 répondant à la condition énoncée. En d autre terme, elle correspond à un découpage horizontal (élimination de tuples) et on notera : T = R suivant le critère Q, où Q peut être : (Condition) la restriction d'une relation R - une comparaison simple entre 2 attributs ou entre un attribut et une valeur en utilisant les opérateurs relationnels : =,, <, >,,. - Une combinaison logique de plusieurs conditions simples, en utilisant les opérateurs logique : Et, ou, Non, etc. Exemple : Les relations T et T répondent respectivement aux questions suivantes : 1. donnez toutes les matières enseignées ayant un coefficient strictement supérieur à 1. 2. donnez toutes les matières enseignées en deuxième semestre et qui ont un coefficient strictement supérieur à 1. 6
Figure. II.7. deux restrictions d une relation. 3.2. Opérateurs supplémentaires ou additionnels 3.2.1. Jointure La jointure de deux relations R1 et R2 est une relation T dont les n-uplets sont obtenus en concaténant les n-uplets de R1 avec ceux de R2 et en ne gardant que ceux qui vérifient la condition de liaison (permet de composer 2 relations à l'aide d'un critère de liaison). On notera : T = R1 R2. (condition) Le schéma de la relation T résultat de la jointure est la concaténation des schémas des opérandes (s'il y a des attributs de même nom, il faut les renommer). Les n-uplets de T sont tous les couples (u1,u2) d'un n-uplet de R1 avec un n-uplet de R2 qui satisfont "condition". Exemple : considérons deux relations : Matière (Intitulé, année, semestre, coef, credit) Résultat (Num_Etudiant, Nom_Etudiant, Année_Etude, Nom_Matière, note) La relation T résultat de la jointure de Matière et Résultat sur la condition (Nom_Matière = Intitulé) et (Année_Etude = Année), donne un relevé de note annuel des étudiants. 7
Figure. II.8. La jointure de deux relations. Cas particuliers : L Equi-Jointure de r et s sur les attributs Ai et Bj : c est la jointure selon la condition (Ai=Bj). Par exemple, la jointure de la figure ci-dessus est une equi-jointure. L Auto-Jointure de r et selon l attribut Ai : c est la jointure de r avec elle-même selon la condition (Ai = Ai). Étant donné que la relation r représente les deux opérandes de l opération, alors on doit les renommer. Par exemple, la relation T = Matière As M1 Matière As M2 est le résultat d une auto- jointure de la relation matière. Elle donne les couples des matières ayant le même coefficient dans le même semestre. La Jointure Naturelle de r et s de schéma R et S est l équi-jointure de r et s sur tous les attributs de même nom dans R et S, suivie de la projection qui élimine les doublures de colonnes. Elle est notée (r s). 3.2.2. Division Soit deux relations R1 (A1, A2,, An, B1, B2,, Bm) et R2 (B1, B2,, Bm). Si le schéma de R2 est un sous-schéma de R1, la division de R1 par R2 est une relation T dont : - le schéma est le sous-schéma complémentaire de R2 par rapport à R1. - un n-uplet (a1, a2,, an) appartient à T si (a1, a2,, an, b1, b2,, bm) appartient à R1 pour tous (b1, b2,, bm) R2. On notera : T = R1 R2. (M1.Coef=M2.Coef) et (M1.Semestre=M2). 8
Exemple : considérons la relation T résultat de la jointure de la Figure II.8. Et la relation Etudiant (Num_Etudiant, Nom_Etudiant). La relation T résultat de la division de T par Etudiant donne les matières examinées par tous les étudiants. Figure. II.9. La division de deux relations. 3.3. Composition d opérateurs Avec les opérateurs, il est possible de composer la plupart des requêtes que l on peut faire sur une base de données relationnelle. Les requêtes s expriment à l aide d une combinaison d opérations : Union, Différence, Jointure, Restriction et Projection, etc. la représentation graphique d une requête est nommée : Arbre algébrique dont les feuilles représentent les opérandes. Pae exemple, pour connaitre les noms des étudiants qui ont examiné dans une matière dont le crédit dépasse 1, on doit succéder deux opérations algébriques : la jointure et la projection. Et ça donnera : T = _!"#$ Matière Résultat (Nom_Matière=Intitulé) et (Coef>1) Figure. II.10. l arbre algébrique d une requête. 9
Exemple : considérons le schéma relationnel suivant PRODUIT (IdPro, Nom, Marque, Prix) CLIENT (IdCli, Nom, Ville) VENTE (IdCli, IdPro, Date, Qte) Quels sont les références et les prix des produits? Quelles sont les marques des produits? Quelles sont les produits de marque IBM? Donnez pour chaque vente la référence du produit, sa désignation, son prix, le numéro de client, la date et la quantité vendue. Quels sont les noms des clients qui habitent la même ville que John? Donner les numéros des produits de marque Apple et de prix <5000 F. Donner les numéros des clients ayant acheté un produit de marque Apple. Donner les numéros des clients n'ayant acheté que des produits de marque Apple. Donner les numéros des clients ayant acheté tous les produits de marque Apple. Quels sont les clients de Nice ayant acheté un produit de marque 'Apple'? 10