Algèbre relationnelle Maria Berger - Maîtrise d'AES 2001-2002
La partie structurelle : le modèle relationnel Produit cartésien de 2 ensembles : Relation : Sous-ensemble du produit cartésien d’une liste de domaines Une relation est caractérisée par un nom Représentation commode : table à 2 dimensions Exemple : la relation Coureur est un sous-ensemble du produit cartésien : numéro X nom X CodeEquipe X CodePays Maria Berger - Maîtrise d'AES 2001-2002
La partie opérationnelle : l'algèbre relationnelle Une algèbre est un ensemble avec des opérations fermées sur cet ensemble. Une algèbre relationnelle est un ensemble d’opérations agissant sur des relations et produisant des relations 4 opérations ensemblistes (union, intersection, différence, produit cartésien) 3 opérations spécifiques des BD relationnelles (sélection, projection, jointure) L'alg₩bre relationnelle est aux relations ce que l'arithm₫tique est aux nombres. But : sp₫cifier des interrogations sur un BD pour en tirer des informations. Les op. Rel. Sont sp₫cifiques aux BD relationnelles. Les expressions alg₫briques transforment des tables en une table (propri₫t₫ de fermeture) Maria Berger - Maîtrise d'AES 2001-2002
Opérations ensemblistes Union Les relations doivent avoir le même schéma Professeur Maître de conférence Maria Berger - Maîtrise d'AES 2001-2002
Opérations ensemblistes Intersection Les relations doivent avoir le même schéma Exemple : l’intersection de Professeur et Maître de conférence est une relation nulle (!) Différence Exemple : la différence Professeur - Maître de conférence est la relation Professeur elle-même (!) Maria Berger - Maîtrise d'AES 2001-2002
Opérations ensemblistes Produit cartésien Code pays Nom Pays ALL Allemagne FRA France SUI Suisse G-B Grande -Bretagne Numéro coureur Nom Coureur Code équipe pays 8 ULLRICH Jan TEL ALL 31 JALABERT Laurent ONC FRA 61 ROMINGER Tony COF SUI 91 BOARDMAN Chris GAN G-B Numéro coureur Nom Coureur Code équipe pays Nom Pays 8 ULLRICH Jan TEL ALL Allemagne FRA France SUI Suisse G-B Grande -Bretagne 31 JALABERT Laurent ONC FRA ALL Allemagne… Maria Berger - Maîtrise d'AES 2001-2002
Opérations spécifiques Sélection (ou restriction) : relation composée de n-uplets vérifiant une condition Numéro coureur Nom Coureur Code équipe pays 8 ULLRICH Jan TEL ALL 31 JALABERT Laurent ONC FRA 61 ROMINGER Tony COF SUI 91 BOARDMAN Chris GAN G-B 114 CIPOLLINI Mario SAE ITA Quels sont les coureurs suisses ? Relation résultat R = SELECTION(COUREUR, CodePays = ‘‘SUI’’) NOTATION : CodePays = ‘‘SUI’’(COUREUR) Maria Berger - Maîtrise d'AES 2001-2002
Opérations spécifiques Projection : relation restreinte aux attributs spécifiés dans la projection Exemple : Nom et nationalité des coureurs ? R = PROJECTION(COUREUR, NomCoureur, Nationalité) NOTATION : {NomCoureur,Nationalité}(COUREURS) Nom Coureur Code pays ULLRICH Jan ALL JALABERT Laurent FRA ROMINGER Tony SUI BOARDMAN Chris G-B CIPOLLINI Mario ITA Relation résultat Maria Berger - Maîtrise d'AES 2001-2002
Opérations spécifiques Jointure : Code pays Nom Pays ALL Allemagne FRA France SUI Suisse G-B Grande -Bretagne Numéro coureur Nom Coureur Code équipe pays 8 ULLRICH Jan TEL ALL 31 JALABERT Laurent ONC FRA 61 ROMINGER Tony COF SUI 91 BOARDMAN Chris GAN G-B Numéro coureur Nom Coureur Code équipe pays Nom Pays 8 ULLRICH Jan TEL ALL Allemagne 31 JALABERT Laurent ONC FRA France 61 ROMINGER Tony COF SUI Suisse 91 BOARDMAN Chris GAN G-B Grande -Bretagne Relation résultat Maria Berger - Maîtrise d'AES 2001-2002
Opérations spécifiques Jointure (suite) Notation : Coureur Pays -jointure : jointure sous condition autre que l’égalité Maria Berger - Maîtrise d'AES 2001-2002
Opérations spécifiques Division : relation composée des n-uplets tels que le produit cartésien avec le diviseur soit un sous-ensemble de la relation dividende (…?) Participer Epreuve Relation résultat de Particier Epreuve Quels sont les athlètes qui ont participé à toutes les épreuves ? Maria Berger - Maîtrise d'AES 2001-2002
Maria Berger - Maîtrise d'AES 2001-2002 Union Intersection Différence a b c x y x y a b c x y x y Sélection Projection Produit cartésien Maria Berger - Maîtrise d'AES 2001-2002
Remarques sur l'algèbre relationnelle L'algèbre relationnelle permet l‘étude des opérateurs entre eux (commutativité, associativité, groupe d'opérateurs minimaux,...) équivalence de certaines expressions programmes d'optimisation qui transforment toute requête en sa forme équivalente la plus efficace L'opération de jointure est très coûteuse : proportionnelle au nombre de n-uplets (m*n pour deux relations jointes) toujours préférable de faire les restrictions le plus tôt possible afin de manipuler des tables les plus réduites possibles. Maria Berger - Maîtrise d'AES 2001-2002
Maria Berger - Maîtrise d'AES 2001-2002 Pourquoi une requête est-elle meilleure qu'une autre ? Une requête n'est pas l'unique solution d'un problème. efficacités différentes Exemple : Fournisseur (N°fno, Nom, Adresse, Ville) Produit (N°prod, Designation, Prix, Poids, Couleur) Commande (N°comm, N°fno, N°prod, , Quantité) Produit = 8 lignes * 5 colonnes * 10 char = 400 char Commande = 10 lignes * 4 colonnes * 10 char = 400 char Références, prix et quantités des produits commandés en plus de 10 exemplaires par commande ? Maria Berger - Maîtrise d'AES 2001-2002
Maria Berger - Maîtrise d'AES 2001-2002 R1= JOINTURE(Commande, Produit, Produit.N°prod = Commande.N°prod) R2 = SELECTION(R1, Quantité > 10) R3 = PROJECTION(R2, N°prod, Prix, Quantité) R1 = jointure sur la table Commande et la table Produit = 400*400 = 160 000 char Maria Berger - Maîtrise d'AES 2001-2002
Maria Berger - Maîtrise d'AES 2001-2002 R1 = PROJECTION(SELECTION(Commande, Quantité>10), N°prod, Quantité) R2 = JOINTURE(R1, PROJECTION(Produit, N°prod, Prix), R1.N°prod = PROJ.N°prod) R3 = PROJECTION(R2, N°prod, Prix, Quantité) R2 = jointure sur le couple (N°prod, Prix) de la table Produit = 8*2*10 = 160 char et sur le couple (N°prod, Quantité) de la table Commande = 2*2*10 = 40 char Total = 40*160 = 6400 char Gain de 75% (facteur 25) en taille mémoire Maria Berger - Maîtrise d'AES 2001-2002
Maria Berger - Maîtrise d'AES 2001-2002 Clés d’une relation Clé primaire Colonne(s) dont les valeurs permettent de repérer une seule ligne. Exemple : dans la table COUREUR, c’est la colonne Numéro_Coureur qui est la clé. Clé étrangère Colonne constituée de la clé primaire d’une autre table Traduit l’existence d’un lien entre 2 tables Maria Berger - Maîtrise d'AES 2001-2002
Maria Berger - Maîtrise d'AES 2001-2002 Exercices CRU(NomCru,Commune,Région,Couleur) VINS(Région,Couleur,Millésime,Qualité) CEPAGE-REGION(Cépage,Couleur) Req1 : Tous les crus ? Réponse : CRU (!) Maria Berger - Maîtrise d'AES 2001-2002
Req2 : Tous les crus rouges La liste des noms de crus rouges” PROJECTION(SELECTION(CRU, couleur=rouge), NomCru) Maria Berger - Maîtrise d'AES 2001-2002
Contraintes d'intégrité Un des outils les plus importants d'un SGBD Contraintes de clé : Vérification de l'unicité des clés Contraintes de types de données : Vérification des types de données saisies (entiers, réels, dates, chaînes de caractères, booléens...) Vérification des domaines de validité (entier compris entre 0 et 20 pour une note d‘étudiant,...) Contraintes d'intégrité référentielles : Vérification à partir des clés étrangères (la clé primaire associée n'existe pas, note d'un étudiant qui n'existe pas, conséquences d'une suppression d'une fiche,...) La cl₫ d'une relation est un ensemble d'attributs minimum dont la connaissance permet d'identifier un tuple unique de la relation consid₫r₫e La contraine de cl₫ impose que chaque relation poss₩de une cl₫. Equivalent à l'identifiant dans le md₩le E-A.. Maria Berger - Maîtrise d'AES 2001-2002