INTRODUCTION AUX BASES DE DONNEES Algèbre relationnelle COURS 3 Université Panthéon-Assas Paris 2 L2 Economie-Gestion
Une relation Formellement Pratiquement Une relation est un sous-ensemble du produit cartésien de N champs d’applications (ou rubriques) D1xD2x…xDN Pratiquement Une relation est représentée par un tableau N° étudiant Nom Age Prof père 430 Dupont 20 Maçon 651 Durant 23 Dentiste 941 Martin Occurrences de la relation (nuplets) rubrique Schéma de relation : R(Attribut1, …Attributn) R(N°étudiant, Nom, Age, Prof père)
Types de relation Relation unaire : une seule rubrique Taux de TVA 0,00 5,50 7,00 19,60 33,33 R(Taux de TVA) Relation binaire : 2 rubriques R(N° salarié, Nom Salarié) Relation n-aire : n rubriques n>2 N° étudiant Nom Age Prof père 430 Dupont 20 Maçon 651 Durant 23 Dentiste 941 Martin R(N°étudiant, Nom, Age, Prof père)
L ’Algèbre relationnelle Sur ces relations, existent des opérateurs Ces opérateurs définissent l ’ Algèbre relationnelle Ces opérateurs opèrent sur des relations et produisent de nouvelles relations : construction de nouvelles informations à partir des relations de départ et d ’une composition séquentielle d ’opérateurs 3 catégories d ’opérateurs relationnels Opérateurs unaires : affectation, sélection, projection Opérateurs binaires travaillant sur 2 relations de même schéma : union, intersection, différence Opérateurs binaires travaillant sur 2 relations de schémas différents : jointure, produit cartésien, division
Opérateurs unaires-affectation Sauvegarder le résultat d ’une expression de recherche Renommer une relation et ses attributs R(A1, …, An) expression de sélection R(A1, …, An) = expression de sélection
Opérateurs unaires-Sélection Suppression des occurrences de la relation qui ne satisfont pas une condition donnée SELECTION(R, condition-de-sélection) σ cond(R) En entrée : une relation R définie sur un schéma SR En sortie : une nouvelle relation de même schéma SR, les nuplets satisfont la condition de sélection La condition de sélection est une condition booléenne construite à partir Des connecteurs logiques et, ou, non De conditions simples : attribut de R - opérateur de comparaison - constante attribut de R - opérateur de comparaison - attribut de R
Sélection-Exemple Considérons la relation Etudiant définie par le schéma Etudiant(N° étudiant, Nom-étudiant, Année-étude) N° Etudiant Nom-étudiant Année-étude 843 Carole 1 521 Peter 3 864 Paulo SELECTION(Etudiant, Année-étude=1) produit la relation N° Etudiant Nom-étudiant Année-étude 843 Carole 1 864 Paulo
Opérateurs unaires-Projection Supprimer des attributs d ’une relation PROJECTION(R, A1, …, An) П A1, …, An (R) En entrée : une relation R définie sur un schéma SR En sortie : une nouvelle relation de schéma A1,…An (inclus dans SR) ayant comme nuplets ceux de R restreints au sous-schéma A1, …, An La cardinalité de la nouvelle relation est <= à celle de R
Projection-Exemple Considérons la relation Etudiant définie par le schéma Etudiant(N° étudiant, Nom-étudiant, Année-étude) N° Etudiant Nom-étudiant Année-étude 843 Carole 1 521 Peter 3 864 Paulo PROJECTION(Etudiant, N° étudiant, Nom-étudiant) produit la relation N° Etudiant Nom-étudiant 843 Carole 521 Peter 864 Paulo
Projection-Exercice Une maîtresse de maison s ’est constituée une base de données sur les personnes qu’elle invite et les plats qu’elle leur sert. Cette base est composée de 3 relations Repas(Date, Invité) donne la liste des invités reçus et à quelle date Menu(Date, Plat) donne le menu servi à chaque date Préférence(Personne,Plat) donne pour chaque personne ses plats préférés NB : Les attributs Personne et Invité ont même domaine
Projection-Exercice Repas(Date, Invité), Menu(Date, Plat), Préférence(Personne, Plat) Quels sont les invités du repas du 01/05/97 R1=SELECTION(Repas, date={d ’97- 05- 01 ’}) Rés=PROJECTION(R1, Invité) ou Rés=PROJECTION(SELECTION(Repas,Date={d ’97- 05- 01 ’}), Invité) En SQL PROJECTION SELECT Repas.Invité FROM Repas WHERE Repas.Date={d ’97- 05- 01 ’} SELECTION
Opérateurs binaires sur 2 relations de même schéma - Union Fusionner 2 relations ayant mêmes attributs en une seule relation UNION(R, S) RS En sortie : une nouvelle relation de schéma SRS, ayant les nuplets de R et ceux de S (les doublons sont supprimés)
Union-Exemple Etudiant(N° étudiant,Nom-étudiant, Année-étude) N° Etudiant Nom-étudiant Année-étude 843 Carole 1 521 Peter 3 864 Paulo Etudiant(N° étudiant,Nom-étudiant, Année-étude) N° Etudiant Nom-étudiant Année-étude 324 Catherine 2 521 Peter 3 201 Didier 1 Etudiant1(N° étudiant, Nom-étudiant, Année-étude)
Union-Exemple UNION(Etudiant, Etudiant1) produit la relation Nom-étudiant Année-étude 843 Carole 1 521 Peter 3 864 Paulo 324 Catherine 2 201 Didier
Opérateurs binaires sur 2 relations de même schéma - Intersection Fournir les occurrences présentes dans les 2 relations à la fois INTERSECTION(R, S) RS En sortie : une nouvelle relation de schéma SRS, ayant les nuplets présents dans R et dans S
Intersection-Exemple N° Etudiant Nom-étudiant Année-étude 843 Carole 1 521 Peter 3 864 Paulo Etudiant(N° étudiant,Nom-étudiant, Année-étude) N° Etudiant Nom-étudiant Année-étude 324 Catherine 2 521 Peter 3 201 Didier 1 Etudiant1(N° étudiant, Nom-étudiant, Année-étude) INTERSECTION(Etudiant, Etudiant1) produit la relation N° Etudiant Nom-étudiant Année-étude 521 Peter 3
Opérateurs binaires sur 2 relations de même schéma - DIFFERENCE Obtenir les occurrences d ’une relation qui n ’appartiennent pas à une autre relation DIFFERENCE(R, S) R-S En sortie : une nouvelle relation de schéma SRS, ayant les nuplets de R qui ne sont pas dans S La différence n ’est pas commutative Équivalent à un opérateur complément
Etudiant(N° étudiant, Nom-étudiant, Année-étude) Différence-Exemple Etudiant(N° étudiant, Nom-étudiant, Année-étude) N° Etudiant Nom-étudiant Année-étude 843 Carole 1 521 Peter 3 864 Paulo Etudiant-SELECTION(Etudiant, Année-étude=1) produit la relation N° Etudiant Nom-étudiant Année-étude 521 Peter 3
Différence-Exercice Repas(Date, Invité), Menu(Date, Plat), Préférence(Personne, Plat) Quels sont les personnes qui n ’ont jamais été invitées ? R1=PROJECTION(Préférence, Personne) R2=PROJECTION(Repas, Invité) Rés=R1-R2 ou Rés=PROJECTION(Préférence,Personne)-PROJECTION(Repas,Invité) En SQL (SELECT Préférence.Personne FROM Préférence) MINUS (SELECT Repas.Invité FROM Repas)
Opérateurs binaires sur 2 relations de schémas différents - Produit cartésien Soient R et S, 2 relations définies sur les schémas SR et SS (SR et SS disjoints) PRODUIT(R, S) RxS En sortie : une nouvelle relation de schéma SRS (union des schémas SR et SS) dont les nuplets sont la concaténation des nuplets de R avec ceux de S Le nombre d ’éléments du produit cartésien est le produit des cardinalités des relations R et S
Produit cartésien-Exemple Etudiant(N° étudiant, Nom-étudiant, Année-étude) N° Etudiant Nom-étudiant Année-étude 843 Carole 1 521 Peter 3 864 Paulo Père(Code, Age, Prof) Code Age Prof 843 40 Maçon 521 50 Dentiste 864 42
Produit cartésien-Exemple PRODUIT(Etudiant,Père) produit la relation N° Etudiant Nom-étudiant Année-étude Code Age Prof 843 Carole 1 40 Maçon 521 50 Dentiste 864 42 Peter 3 Paulo
Opérateurs binaires sur 2 relations de schémas différents - Jointure Soient R et S, 2 relations définies sur les schémas SR et SS (SR et SS ayant des attributs de même domaine) JOINTURE(R, S, condition) R S condition En sortie : une nouvelle relation de schéma SRS (union des schémas SR et SS) dont les nuplets sont la concaténation des nuplets de R avec ceux de S s ’ils ont la même valeur pour les attributs communs (de même domaine) On parle aussi de jointure naturelle ou équi-jointure
Jointure-Exemple Etudiant(N° étudiant, Nom-étudiant, Année-étude) N° Etudiant Nom-étudiant Année-étude 843 Carole 1 521 Peter 3 864 Paulo Code Age Prof 843 40 Maçon 521 50 Dentiste 864 42 Etudiant(N° étudiant, Nom-étudiant, Année-étude) Père(Code, Age, Prof) JOINTURE(Etudiant, Père, N° étudiant=Code) N° Etudiant Nom-étudiant Année-étude Code Age Prof 843 Carole 1 40 Maçon 521 Peter 3 50 Dentiste 864 Paulo 42
Jointure-Exercice Repas(Date, Invité), Menu(Date, Plat), Préférence(Personne, Plat) Quels sont les plats qui ont été servis à Alice ? R1=SELECTION(Repas, Repas.Invité=′ Alice ′) R2=JOINTURE(Menu, R1, Menu.Date=R1.Date) Rés=PROJECTION(R2, R2.Plat) En SQL PROJECTION SELECT DISTINCT Menu.Plat FROM Menu, Repas WHERE Repas.date=Menu.Date AND Repas.Invité=′ Alice ′ JOINTURE SELECTION
Opérateurs binaires sur 2 relations de schémas différents - Division R est définie sur un schéma SR composé des ensembles d ’attributs X et Y (SR = XY) S est définie sur un schéma SS composé de l ’ensemble d ’attributs Y (SS=Y) DIVISION(R,S) R/S En sortie : une nouvelle relation de schéma Sres (Sres=SR-SS) qui comprend tous les nuplets dont la concaténation avec tous les nuplets de S appartient à R
Division-Exercice Repas(Date, Invité), Menu(Date, Plat), Préférence(Personne, Plat) Quels sont les invités qui sont venus à tous les repas ? Rés=Repas/PROJECTION(Repas, Date)
Division-Exercice Appartient à la relation Repas x Repas(Date, Invité), Menu(Date, Plat), Préférence(Personne, Plat) Division-Exercice Repas(Date, Invité) PROJECTION(Repas, Date) Date Invité 14/5 Didier Dominique 15/5 Jean-Luc 16/5 Date 14/5 15/5 16/5 Repas/PROJECTION(Repas, Date) 14/5 15/5 16/5 Invité1 … Appartient à la relation Repas x Doit appartenir à la relation Repas 14/5, Invité1 15/5, Invité1 16/5, Invité1
Opérateurs binaires sur 2 relations de schémas différents - Autres Thêta-jointure Jointure externe Semi-jointure