Algèbre relationnelle

Slides:



Advertisements
Présentations similaires
Bases de Données Avancées: Bases de Données Relationnelles
Advertisements

Optimisation des requêtes
Calcul de tuple, de domaine et QBE
Langage de manipulation de données Ensemble de commandes permettant : – modifier la base : ajout, modification et suppression – interroger la base ex :
Benoît Piranda Équipe SISAR Université de Marne La Vallée Bases de données Algèbre relationnelle, opérations Requêtes SQL.
Rappels. Les Systèmes de Gestion de Bases de Données (SGBD) L'algèbre relationnelle.
SQL - Subtilités.
Algèbre relationnelle
Optimisation algébrique de requêtes relationnelles
Techniques dindexation Implémentation du modèle relationnel ~ LIF10: Fondements des bases de données relationnelles.
LANGAGES LIES AU MODELE RELATIONNEL
Calcul Relationnel Chapitre 4, Section 4.3.
Les requêtes Les requêtes permettent dinterroger une base de données suivant 3 opérateurs : La projection Affiche le contenu dun champ complet En langage.
Algèbre relationnelle et SQL
Algèbre relationnelle
Cours N°2 Base de Données & Langage SQL
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections 15.5.
Algèbre Relationnelle
1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 Algèbre Relationnelle Chapitre 4, Sections 4.1 – 4.2.
Cours de Base de Données & Langage SQL
Cours N°2 Base de Données & Langage SQL
1 SQL Avancé 2010 Witold Litwin 2 Quoi & Pourquoi ? n Possibilités Etendues de Manipulation de BDs relationnelles n Fondamentales pour lexploration approfondie.
1 SQL Manipulations Avancées (08-09) Witold Litwin.
1 SQL Manipulations Avancées (08-09) Witold Litwin.
1 SQL Manipulations Avancées Witold Litwin 2 Exemple canon S P SPSP.
Manipulation des données Requêtes simples
Database Management Systems 3ed, R. Ramakrishnan and J. Gehrke1 SQL: Requêtes, Programmation et Triggers Chapitre 5, Sections
Michel Tollenaere SQL et relationnel ENSGI Cours MSI 2A Relationnel et SQL version 1.4 du 25 septembre 2007 (ajout jointures) 1 Modèle relationnel Historique.
Introduction Le SQL (Structured  Query Language) est un langage universel de gestion des bases de données. Il a une triple fonction : LDD Langage de Définition.
Traduction des opérations sous MySQL
Optimisation de requêtes
Mini-SGBD Implémentation des opérateurs algébriques Yohann HUBERT Christophe PANNEAU Licence informatique Année Maître de stage : M. KHAYATA.
Sélection de colonnes (la projection)
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
 L’information est conservée sous forme de tables  Contient: ◦ Un nom ◦ Une clé primaire ◦ Une liste de colonnes ◦ Les informations/données (sous forme.
INTRODUCTION AUX BASES DE DONNEES Algèbre relationnelle
Op é rateurs ensemblistes Module 4. 2 La clause GROUP BY La clause GROUP BY est nécessaire dès que l'on utilise des fonctions de calculs statistiques.
Bases de données – Cours 3
1- Régles de normalisation 2ème partie : normalisation Modèle Conceptuel des Données 2- Les Formes Normales 3- Dépendances Fonctionnelles 4- Recap - Méthodologie.
1- Introduction 1ère partie Le langage SQL 2- Connexion 3- Structure & Contenu 4- Requêtes.
Algèbre relationnelle - 1 / Djamel Berrabah Algèbre relationnelle Modèle relationnel : rappel Algèbre relationnelle.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
SQL query - 1 UPMC - UFR 919 Ingéniérie - Cours Bases de données (BD-L3) SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes.
Intégration du P7 dans l’épreuve E41
Initiation aux bases de données et à la programmation événementielle
Langage de manipulation de données (LMD)
Algèbre relationnelle
Les bases de données et le modèle relationnel
Langage de Manipulation des Données LMD
Langage d’interrogation des Données LID
SQL LID – INTERROGATIN DES DONNEES
Maria Berger - Maîtrise d'AES Algèbre relationnelle.
Fonctions Logiques & Algèbre de BOOLE
SQL LMD FICHE 4.6.
Manipulation D’Une Base De Données
Calcul Relationnel Chapitre 4, Section 4.3.
Langage d’interrogation des Données LID
SQL Structured Query Language
Calcul Scientifique Initiation à SCILB
Préface Introduction Objectifs du chapitre I-2 Objectifs du cours I-3 Oracle10g I-4 Oracle Database 10g I-6 Oracle Application Server 10g I-7 Oracle Enterprise.
Langage d’interrogation des Données Les fonctions de groupes
SQL InfoBanque 16/11/2018 Halim M'SILTI.
5 Introduction au modèle relationnel 5.1 Concepts de base
Présenté par: Mr: KARKOUB Rida Mme: ERRAIH Izza
CSI 3505 / Automne 2005: Conception et Analyse des Algorithmes I.
Bases de Données Relationnelles(1)
Algèbre Relationnelle
Opérateurs Ensemblistes
Transcription de la présentation:

Algèbre relationnelle Witold LITWIN

Algèbre relationnelle Proposée par E. Codd, 1969 Utilisée en général à l'intérieur de tout SGBD relationnel Un LMD algébrique est possible, mais en général peu commode pour l'homme On préfère les requêtes SQL, QUEL, QBE... celles-ci sont traduites en expressions algébriques + procedurales donc + faciles à optimiser par des transformations syntaxiques

Opérateurs traditionnels Opérateurs ensemblistes: UNION, INTERSECT, DIFFERENCE, TIMES Ces opérateurs sont reformulés spécifiquement pour le modèle relationnel Opérateurs relationnels spécifiques RESTRICT, PROJECT, JOIN, DIVIDE Les expressions algébriques transforment des tables en une table (propriété de fermeture)

Opérateurs ensemblistes UNION INTERSECT DIFFERENCE PRODUCT a x a y b x b y c x c y a b c x y

Opérateurs relationnels a1 b1 c1 a1 b1 c2 a2 b1 c1 a2 b1 c2 a3 b2 c3 Jointure (naturelle) Division a1 b1 a2 b1 a3 b2 c1 b1 c2 b1 c3 b2 a x a y a z b x c y x y a

Opérateurs relationnels Restriction Projection

Définition syntactique A TIMES B Pour les 3 autres, A et B doivent être union-compatibles: Mêmes attributs et dans le même ordre Le résultat a les mêmes attributs A UNION B A INTERSECT B A MINUS B S# SNAME STATUS CITY S1 Smith 20 London S4 Jones 10 Paris S# SNAME STATUS CITY S1 Smith 20 London S# SNAME STATUS CITY S1 Smith 20 London S4 Clark 20 London

Propriétés UNION, INTERSECT, TIMES sont associatifs et commutatifs (A UNION B) UNION C = A UNION (B UNION C) (A UNION B) = (B UNION A) démontre ! Et MINUS ?

Restriction A WHERE X theta Y theta est un opérateur de comparaison WHERE X theta Y est la condition de restriction un tuple t de A est sélectionné ssi WHERE X theta Y (t) = 'vrai' Y = 'littéral' est aussi possible A WHERE booléen - idem formellement on procède en fait par les opérateurs ensemblistes, ex. A WHERE c1AND c2 = (A WHERE c1) INTERSECT (A WHERE c2) S WHERE CITY = 'Paris' AND STATUS > '10'

Projection A [X, Y,...Z] est une projection de A sur les attributs énumérés, tous distincts A sans liste est une projection d'identité A [ ] est une projection nulle Exemples S S [S#, CITY] (S WHERE STATUS = 10 ) [S#, CITY] (S WHERE STATUS = 10 ) [S#, CITY] WHERE CITY = 'Paris'

Jointure naturelle La jointure A JOIN B de deux tables A (X, Y) et B (Z, Y) est la table C avec les attributs : C (X, Y, Z) et les tuples (X:x, Y:y, Z:z ) tels que (x, y) est dans A et (y, z) est dans B X, Y, Z peuvent être composés La jointure naturelle est associative et commutative ?

-jointures table C égale à : C = ( A TIMES B ) WHERE X Y est la jointure de tables A(X,...) et B (Y,...) (S TIMES SP ) WHERE S.S# = SP.S# (((S RENAME CITY AS SCITY) TIMES S ) WHERE SCITY > CITY RENAME SNAME AS SNAME1) RESTRICT WHERE SNAME1 > SNAME) Est-ce que la jointure est associative et commutative ?

Division Table C ( X ) notée: A DIVIDEBY B est une division de tables A (X, Y) et B (Y) ssi C contient tous les tuples ( x ) tels que ( y ) B , ( x, y ) A S# P# S1 P1 S1 P2 S2 P1 S2 P3 P# P1 P2 S# S1 Les fournisseurs de toutes les pièces DIVIDEBY est-t-il associatif ou commutatif ?

Requêtes algébriques (comment seraient-elles en SQL ?) (( S JOIN SP ) WHERE P# = 'P2' ) [ SNAME] (((P WHERE COLOR = 'Red' ) [P#] JOIN SP ) [S#] JOIN S [SNAME] (((P WHERE COLOR = 'Red' ) [P#, PNAME] JOIN SP ) [S#, PNAME] JOIN S [SNAME] (( SP [S#, P#] DIVIDEBY P [P#] ) JOIN S ) [SNAME] SP [S#, P#] DIVIDEBY ( SP WHERE S# = 'S2') [P#] Est-ce vrai qu'une requête alg. est toujours +compliquée à formuler que celle correspondant en SQL ?

Utilité de l'algèbre Puissance expressive: 8 opérateurs de Codd permettent d'exprimer toute expression logique de prédicat de 1-er ordre note: seulement 5 sont primitives (lesquels ?) La puissance expressive de l'algèbre dite complétude relationnelle constitue la mesure de la puissance minimale de tout LMD assertionnel digne de ce nom

Utilité de l'algèbre Technique de choix pour l'implémentation Il n'y a que 8 opérateurs Ces opérateurs sont faciles à implementer Leur propriétés permettent de transformer les expressions en +efficaces à évaluer, en général (( S JOIN SP ) WHERE P# = 'P2' ) [SNAME] = ( S JOIN ( SP WHERE P# = 'P2' )) [SNAME] pourquoi la 2-ème expression semble plus efficace ?

Complétude relationnelle de SQL  expression algébrique,  une expression équivalente de SQL Schéma de preuve:  opérateur algébrique,  une expression équivalente de SQL  composition d'opérateurs algébriques,  une composition équivalente de SQL

 A UNION B A (X) MINUS B (X) A TIMES B A WHERE p A [x, y.., z] SELECT * FROM A UNION SELECT * FROM B ; A (X) MINUS B (X) SELECT * FROM A WHERE NOT EXIST (SELECT * FROM B WHERE A.x1 = B.x1 AND A.x2 = B.x2...); A TIMES B SELECT * FROM A B ; A WHERE p SELECT * FROM A WHERE p; A [x, y.., z] SELECT DISTINCT x,y..z FROM A ;

 Par induction:  tables A et B, sides expressions SQL pour A et B, alors des expressions SQL permettant à appliquer tout opérateur relationnel à A ou B Prouve cette assertion !

Quelques règles de transformation (améliorations relationnelles) Sélections d'abord A JOIN B WHERE restriction-sur-B = A JOIN ( B WHERE restriction-sur-B ) A JOIN B WHERE restriction-sur-A AND restriction-sur-B = (A WHERE restriction-sur-A ) JOIN ( B WHERE restriction-sur-B) Forme conjonctive normale WHERE p OR ( q AND r) = WHERE (p OR q) AND ( p OR r) Il suffit qu'une condition soit .FAUX pour rejeter le tuple

Quelques règles d'amélioration Réduction de restrictions (( A WHERE r1 ) WHERE r2 ) WHERE r3... = ( A WHERE r1 AND r2 AND r3 ...) Réduction de projections à la dernière ( ((( A [project 1] ) [ project 2]) [project 3] )...[project n] = A [project n] Etc.

Opérateurs additionnels ( EXTEND P ADD 'Weight in Gr' , (WEIGHT * 454 ) AS WEIGHT1 ) WHERE WEIGHT1 > 1000 ; SUMMARIZE SP GROUPBY ( P# ) ADD SUM ( QTY) AS TOTQTY ( SUMMARIZE ( P WHERE COLOR = 'Red') GROUPBY ( CITY ) ADD COUNT AS N ) WHERE N > 5 ) [CITY]

Opérateurs additionnels Division généralisée La division de A (X, Y) par B (X, Z) est C ( X, Z) où tout sous-tuple C (X:x) est le tuple de la division relationnelle et vice versa Jointure externe Assignation (pour mises à jour) S := S UNION (( S# : 'S6', SNAME : 'Baker') S := S MINUS ( S WHERE CITY = 'Paris')

Conclusion E. Codd à son travail

Conclusion A E. Codd pour les 25 ans du Modèle Relationnel

FIN