Algèbre relationnelle

Slides:



Advertisements
Présentations similaires
Introduction à la notion de fonction 1. Organisation et gestion de données, fonctions 1.1. Notion de fonction ● Déterminer l'image d'un nombre par une.
Advertisements

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.
Enseigner l’arithmétique en série L Réflexions sur les contenus et les exigences.
Algèbre relationnelle - 1 / Djamel Berrabah Algèbre relationnelle Modèle relationnel : rappel Algèbre relationnelle.
SQL : 4 fonctions d'exploitation de SGBD SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage informatique ayant pour.
SQL query - 1 / D. Berrabah SQL : interrogation de BD Requêtes d'interrogation simples Requêtes complexes Agrégats et groupement.
Calcul et SQL - 1 / Djamel Berrabah Calcul relationnel et SQL Calcul relationnel à variables « n-uplet » Calcul relationnel à variables « domaine » Query.
Introduction aux bases de données
Calcul de probabilités
Nouveautés Version 4.1 et mai 2017.
Recherche d’informations
E-Prelude.com Importation de nomenclatures issues de divers logiciels de CAO… … via un fichier « neutre » de type EXCEL.
Un Algorithme , c'est Quoi ?
LES TABLEAUX EN JAVA.
Structured Query Language SQL DDL
Session 1 6 mars 2017 Plateforme ICONICS Justine Guégan
Algorithme et programmation
Métrologie Document de reference : “Incertitude en Science de la Nature” Cours : 360-ESZ-03 “Logiciels appliqués en sciences” La métrologie est la « science.
Les Bases de données Définition Architecture d’un SGBD
Lois fondamentales de l'algèbre de Boole
Algorithmique demander jeu du pendu.
Initiation aux bases de données et à la programmation événementielle
Les opérations sur les nombres
L’Instruction de Test Alternatif
Généralité sur les bases de données
Plan du cours Introduction : création de circuits
Principes de programmation (suite)
Activités algorithmiques
2°9 lycée Beauregard à Montbrison
Fonctions logiques et algèbre booléenne
Collecte de données CAPI
Maria Berger - Maîtrise d'AES Algèbre relationnelle.
Notion De Gestion De Bases De Données
Création Et Modification De La Structure De La Base De Données
Structure D’une Base De Données Relationnelle
Calcul Relationnel Chapitre 4, Section 4.3.
PROGRAMMATION ET ENSEIGNEMENT
Langage d’interrogation des Données LID
SQL Structured Query Language
Langage d’interrogation des Données Les fonctions de groupes
Algèbre relationnelle
L1 Technique informatique
Reconstitution de paléoclimats grâce à la palynologie:
L'algèbre relationnelle
Programme financé par l’Union européenne
SIO SI3 : Exploitation des données
NUMERATION et REPRESENTATION DES NOMBRES
5 Introduction au modèle relationnel 5.1 Concepts de base
Semaine #2 INF130 par Frédérick Henri.
Semaine 3 Retour sur la semaine 2 Plan de séance
De Scratch à Python : une transition douce… COMMUNICATION
03- Evaluation Access 2003 Cette évaluation comporte des QCM (1 seule réponse) et des Zones à déterminer dans des copies d’écran.
Affichage et tri des résultats
La recherche avancée.
Algèbre Relationnelle
Numérique et Sciences Informatiques
Outil de description d’une fonction logique:
9 Méthodes multidimentionnelles et représentation d'associations
Opérateurs et fonctions arithmétiques Opérateurs de relation Opérateurs logiques Cours 02.
Introduction à L’Informatique
Arbre binaire.
SQL Structured Query Language
La dématérialisation des marchés publics
Présentation des nouveaux programmes de mathématiques de première des séries technologiques Jessica Parsis.
Exploitation de vos données
Numérique et Sciences Informatiques
Bases de Données Relationnelles(1)
Python Nicolas THIBAULT
Les données structurées et leur traitement
Transcription de la présentation:

Algèbre relationnelle Semestre 4 Mehdi Benzine http://bddinfo.e-monsite.com

Introduction L’algèbre relationnelle est un langage formel d’interrogation des bases de données relationnelles L'algèbre relationnelle est un ensemble d'opérateurs ayant pour opérandes des relations. Chaque opération produit une nouvelle relation ‘temporaire’. Il existe des opérateurs unaires et des opérateurs binaires Opération unaire R2 = op R1 Opération binaire R3 = R1 op R2 Même principe que les opérateurs arithmétiques ou logiques: A = B * (C – D) + F (A, B, C, D, E et F variables numériques) Z = (not W) and (X or Y) (W, X et Y variables booléennes)

Schéma Exemple Projet (Num_Projet, Description, Date_Début, Date_Fin, Budget) Employé (Num_Employé, Nom, Prénom, Date_Naissance, Fonction, Est_Cadre) Affectation (Num_Employé, Num_Projet, Debut_Affect, Fin_Affect, Supérieur)

Schéma Exemple Num_Projet Description Date_Début Date_Fin Budget Num_Employé Num_Projet Début_Affect Fin_Affect Supérieur Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre

Relation Projet Num_Projet Description Date_Début Date_Fin Budget 103 Mise en place d'un réseau intranet 12/09/2010 05/12/2010 39000.00 122 Développement d'une application de gestion 07/01/2011 13/05/2011 86000.00 133 Réalisation d'un CD-ROM interactif de formation 04/11/2011 02/07/2012 15000.00 208 Développement d'un site internet 15/06/2011 06/03/2012 50000.00

Relation Employé Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 1001 Belaid Toufik 12/05/1965 Concepteur true 1009 Touati Rachid 13/09/1941 Chef de projet 1023 Kadri Amine 23/11/1970 Développeur 1053 Djabi Fatiha 04/06/1980 Analyste false 1026 Bouras Kamel 19/04/1968 Administrateur 1005 22/08/1976

Relation Affectation Num_Employé Num_Projet Début_Affect Fin_Affect Supérieur 1009 122 07/03/2011 13/11/2011 NULL 1001 08/03/2011 28/06/2011 1023 15/06/2011 04/10/2011 103 12/09/2010 01/11/2010 208 12/10/2011 06/03/2012 01/09/2011 17/12/2011 133 06/11/2011 19/02/2012 1053 1026 19/08/2011

Projection Les tuples en double sont supprimés. Nom Prénom Belaid Toufik Touati Rachid Kadri Amine Djabi Fatiha Bouras Kamel Nom Prénom Belaid Toufik Touati Rachid Kadri Amine Djabi Fatiha Bouras Kamel Projection L'opérateur Projection permet de conserver certains attributs (colonnes) uniquement. Symbole: π Nombre de relations opérandes : 1 (opérateur unaire) Les attributs spécifiés dans la liste des attributs à projeter sont conservés dans la relation résultat. Exemple: π Nom, Prénom (Employé) Relation Résultat Attribut 1, Attribut 2, .., Attribut n Les tuples en double sont supprimés.

Renommage ρ Nom->N, Prénom->P (Employé) L'opérateur Renommage permet de projeter certains attributs tout en les renommant dans la nouvelle relation. Symbole: ρ Nombre de relations opérandes : 1 (opérateur unaire) Les attributs spécifiés dans la liste des attributs à projeter sont conservés dans la relation résultat et renommés. Exemple: ρ Nom->N, Prénom->P (Employé) Relation Résultat Attribut 1 -> Attribut 1', .., Attribut n -> Attribut n'

Exemple de renommage ρ Nom->N, Prénom->P (Employé) Num_Employé N Date_Naissance Fonction Est_Cadre 1001 Belaid Toufik 12/05/1965 Concepteur true 1009 Touati Rachid 13/09/1941 Chef de projet 1023 Kadri Amine 23/11/1970 Développeur 1053 Djabi Fatiha 04/06/1980 Analyste false 1026 Bouras Kamel 19/04/1968 Administrateur 1005 22/08/1976 ρ Nom->N, Prénom->P (Employé)

Sélection (ou restriction) Relation Résultat condition L'opérateur Sélection permet de ne conserver que les tuples vérifiant un prédicat logique. Symbole: σ Nombre de relations opérandes : 1 (opérateur unaire) Les tuples contenus dans la relation résultat doivent vérifier un prédicat logique. Ce prédicat est exprimé à grâce aux comparateurs ( >, ≥, <, ≤, =, ≠) et grâce aux connecteurs logiques (et, ou, non)

Sélection (ou restriction) Exemple: σ fonction = 'Développeur' (Employé) σ Nom = ‘Belaid' ou Fonction ≠ 'Concepteur‘ (Employé) Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 1023 Kadri Amine 23/11/1970 Développeur true 1005 Djabi Fatiha 22/08/1976 false Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 1001 Belaid Toufik 12/05/1965 Concepteur true 1009 Touati Rachid 13/09/1961 Chef de projet 1023 Kadri Amine 23/11/1970 Développeur 1053 Djabi Fatiha 04/06/1980 Analyste false 1026 Bouras Kamel 19/04/1968 Administrateur 1005 22/08/1976

Combinaison d’opérateurs π Nom, Prénom (σ Fonction = 'Développeur' (Employé)) Nom Prénom Kadri Amine Djabi Fatiha Nom, prénom Employé Fonction = ‘Développeur ‘

Combinaison d ‘opérateurs σ Nom = 'Djabi' et Date_Naissance < '01/01/1978' (π Nom, Prénom, Fonction, Date_Naissance(Employé)) Utilisation de R1 comme résultat intermédiaire R1 = π Nom, Prénom, Fonction, Date_Naissance(Employé) σ Nom = 'Djabi' et Date_Naissance < '01/01/1978‘(R1) Nom, prénom, Fonction, Date_Naissance Nom Prénom Fonction Date_Naissance Djabi Fatiha Développeur 22/08/1976 Employé Nom = ‘Djabi‘ et Date_Naissance < ‘01/1/1978’

Ordre des opérateurs σ(Fonction = 'Développeur') (π Nom, Prénom (Employé)) N'est pas calculable !!!! Si nous commençons par projeter le Nom et le Prénom, nous perdons l'attribut Fonction nécessaire pour le calcul de la sélection. σ Fonction = 'Développeur' ( ) = ! π(Nom, Prénom) (Employé) Nom Prénom Belaid Toufik Touati Rachid Kadri Amine Djabi Fatiha Bouras Kamel Nom Prénom Belaid Toufik Touati Rachid Kadri Amine Djabi Fatiha Bouras Kamel

Union Faire l'union des tuples de deux relations "union-compatibles". Deux relations sont union-compatibles si: Elles sont de même dimension (même nombre d'attributs) Les attributs correspondant un à un sont de même type (même s'ils ne prennent pas leurs valeurs dans le même domaine)

Union Ensemble des employés actuels et passé de l'entreprise Symbole:  Nombre d'opérandes: 2 (opérateur binaire) Exemple: Employé  Retraité Ensemble des employés actuels et passé de l'entreprise  Relation 2 Relation 1 Résultat

Relation retraité Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 712 Belaid Hakim 02/03/1948 Concepteur true 1009 Touati Rachid 13/09/1941 Chef de projet 547 Djabi Rafik

 Retraité Employé Résultat de l'union Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 1001 Belaid Toufik 12/05/1965 Concepteur true 1009 Touati Rachid 13/09/1941 Chef de projet 1023 Kadri Amine 23/11/1970 Développeur 1053 Djabi Fatiha 04/06/1980 Analyste false 1026 Bouras Kamel 19/04/1968 Administrateur 1005 22/08/1976 712 Hakim 02/03/1948 547 Rafik Les tuples communs aux deux relations ne figurent qu'un seule fois dans le résultat.

Intersection Faire l'intersection de deux relations "union-compatibles" Symbole:  Nombre d'opérandes: 2 (opérateur binaire) Exemple: Employé  Retraité Ensemble des employés qui sont retraités et continuent de travailler pour l’entreprise.  Relation 2 Relation 1 Résultat

Résultat de l'intersection Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 1009 Touati Rachid 13/09/1941 Chef de projet true  Retraité Employé

Différence Le résultat de la différence est l'ensemble des tuples de la première relation qui ne sont pas présents dans la seconde relation. Symbole: - Nombre d'opérandes : 2 (opérateur binaire) Exemple: Employé – Retraité Ensemble des employés qui n'ont pas encore pris leur retraite. - Relation 2 Relation 1 Résultat

Résultat de la différence Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 1001 Belaid Toufik 12/05/1965 Concepteur true 1023 Kadri Amine 23/11/1970 Développeur 1053 Djabi Fatiha 04/06/1980 Analyste false 1026 Bouras Kamel 19/04/1968 Administrateur 1005 22/08/1976 Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 1001 Belaid Toufik 12/05/1965 Concepteur true 1009 Touati Rachid 13/09/1941 Chef de projet 1023 Kadri Amine 23/11/1970 Développeur 1053 Djabi Fatiha 04/06/1980 Analyste false 1026 Bouras Kamel 19/04/1968 Administrateur 1005 22/08/1976 - Retraité Employé

Résultat de la différence Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 1001 Belaid Toufik 12/05/1965 Concepteur true 1023 Kadri Amine 23/11/1970 Développeur 1053 Djabi Fatiha 04/06/1980 Analyste false 1026 Bouras Kamel 19/04/1968 Administrateur 1005 22/08/1976 La différence n'est pas une opération commutative. Employé – Retraité ≠ Retraité - Employé

Différence Employé - Retraité Retraité - Employé Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 1001 Belaid Toufik 12/05/1965 Concepteur true 1023 Kadri Amine 23/11/1970 Développeur 1053 Djabi Fatiha 04/06/1980 Analyste false 1026 Bouras Kamel 19/04/1968 Administrateur 1005 22/08/1976 Retraité - Employé Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 712 Belaid Hakim 02/03/1948 Concepteur true 547 Djabi Rafik 13/09/1941 Chef de projet

Produit cartésien Le produit cartésien réalise la combinaison de tous les tuples d'un relation avec les tuples d'une autre relation. Les tuples des deux relations sont mis bout à bout. Symbole: x Nombre d'opérandes: 2 (opérateur binaire) Exemple: π Fonction(Employé) x π Est_cadre(Employé) Les opérandes ne doivent pas avoir d’attributs portant le même nom! X Relation 2 Relation 1 Résultat

Résultat du produit cartésien Fonction Est_Cadre Concepteur True False Chef de projet Développeur Analyste Administrateur Fonction Concepteur Chef de projet Développeur Analyste Administrateur Est_Cadre True False X =

Jointure naturelle La jointure naturelle est la composition de deux relations ayant des attributs communs (ayant le même nom). Elle rassemble les tuples de deux relations ayant des valeurs égales pour les attributs communs. Les attributs communs ne sont pas dupliqués dans la relation résultat. Symbole: ⋈ ⋈ Nombre d'opérandes: 2 (opérateur binaire) Relation 2 Relation 1 Résultat

Exemple Affectation ⋈ Projet π Description, Num_Employé (Affectation ⋈ Projet) π Description, Num_Employé (σ Supérieur est NULL(Affectation ⋈ Projet))

Relation Projet Num_Projet Description Date_Début Date_Fin Budget 103 Mise en place d'un réseau intranet 12/09/2010 05/12/2010 39000.00 122 Développement d'une application de gestion 07/01/2011 13/05/2011 86000.00 133 Réalisation d'un CD-ROM interactif de formation 04/11/2011 02/07/2012 15000.00 208 Développement d'un site internet 15/06/2011 06/03/2012 50000.00

Relation Affectation Num_Employé Num_Projet Début_Affect Fin_Affect Supérieur 1009 122 07/03/2011 13/11/2011 NULL 1001 08/03/2011 28/06/2011 1023 15/06/2011 04/10/2011 103 12/09/2010 01/11/2010 208 12/10/2011 06/03/2012 01/09/2011 17/12/2011 133 06/11/2011 19/02/2012 1053 1026 19/08/2011

122 103 208 133 Affectation Projet Num_Projet Num_Employé Num_Projet Début_Affect Fin_Affect Supérieur Description Date_Début Date_Fin Budget 1009 122 07/03/2011 13/11/2011 NULL Développement d'une application de gestion 07/01/2011 13/05/2011 86000.00 1001 08/03/2011 28/06/2011 1023 15/06/2011 04/10/2011 103 12/09/2010 01/11/2010 Mise en place d'un réseau intranet 05/12/2010 39000.00 208 12/10/2011 Développement d'un site internet 06/03/2012 50000.00 01/09/2011 17/12/2011 133 06/11/2011 19/02/2012 Réalisation d'un CD-ROM interactif de formation 04/11/2011 02/07/2012 15000.00 1053 1026 19/08/2011 Num_Employé Num_Projet Début_Affect Fin_Affect Supérieur Description Date_Début Date_Fin Budget 1009 122 07/03/2011 13/11/2011 NULL 1001 08/03/2011 28/06/2011 1023 15/06/2011 04/10/2011 103 12/09/2010 01/11/2010 208 12/10/2011 06/03/2012 01/09/2011 17/12/2011 133 06/11/2011 19/02/2012 1053 1026 19/08/2011 Affectation Projet

Num_Employé Description 1009 Développement d'une application de gestion 1001 1023 Mise en place d'un réseau intranet Développement d'un site internet Réalisation d'un CD-ROM interactif de formation 1053 1026

Num_Employé Description 1009 Développement d'une application de gestion Mise en place d'un réseau intranet Développement d'un site internet Réalisation d'un CD-ROM interactif de formation

Thêta-Jointure La thêta-jointure est une sélection de certains tuples du résultat du produit cartésien. Symbole: ⋈θ Nombre d'opérandes: 2 (opérateur binaire) Soient R et S deux relations: R ⋈θ S = σθ (R x S) θ est un prédicat logique.

Exemple Nom et Prénom des employés qui sont responsables d'autres employés. π Nom, Prénom( Affectation ⋈Supérieur = NE (π NE, Nom, Prénom (ρNum_Employé->NE(Empolyé))) )

Relation Employé Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 1001 Belaid Toufik 12/05/1965 Concepteur true 1009 Touati Rachid 13/09/1941 Chef de projet 1023 Kadri Amine 23/11/1970 Développeur 1053 Djabi Fatiha 04/06/1980 Analyste false 1026 Bouras Kamel 19/04/1968 Administrateur 1005 22/08/1976

ρNum_Employé->NE(π Num_Employé, Nom, Prénom (Empolyé)) 1001 Belaid Toufik 1009 Touati Rachid 1023 Kadri Amine 1053 Djabi Fatiha 1026 Bouras Kamel 1005

Affectation ⋈ Supérieur = NE ρNum_Employé->NE(π Num_Employé, Nom, Prénom (Empolyé) Num_Projet Début_Affect Fin_Affect Supérieur NE Nom Prénom 1009 122 07/03/2011 13/11/2011 NULL 1001 08/03/2011 28/06/2011 Touati Rachid 1023 15/06/2011 04/10/2011 103 12/09/2010 01/11/2010 208 12/10/2011 06/03/2012 01/09/2011 17/12/2011 133 06/11/2011 19/02/2012 1053 1026 Bouras Kamel 19/08/2011 Num_Employé Num_Projet Début_Affect Fin_Affect Supérieur NE Nom Prénom 1001 122 08/03/2011 28/06/2011 1009 Touati Rachid 1023 15/06/2011 04/10/2011 208 12/10/2011 01/09/2011 17/12/2011 1053 06/03/2012 1026 Bouras Kamel 19/08/2011 Num_Employé Num_Projet Début_Affect Fin_Affect Supérieur NE Nom Prénom 1009 122 07/03/2011 13/11/2011 NULL 1001 08/03/2011 28/06/2011 1023 15/06/2011 04/10/2011 103 12/09/2010 01/11/2010 208 12/10/2011 06/03/2012 01/09/2011 17/12/2011 133 06/11/2011 19/02/2012 1053 1026 19/08/2011

Semi-Jointure La semi-jointure est une Thêta-jointure dont le résultat est projeté sur les attributs de la première relation. Symbole: ⋉θ Nombre d'opérandes: 2 (opérateur binaire) Soient R et S deux relations: R ⋉θ S = π(R) (R ⋉θ S) θ est un prédicat logique.

Jointure externe La jointure externe est une jointure dont le résultat contient des tuples ne vérifiant pas le prédicat de jointure. Symbole: ⟕ jointure externe gauche (left outer join) ⟖ jointure externe droite (right outer join) ⟗ jointure externe totale (full outer join) Exemple: Afficher les employés et leurs affectations. Employé ⋈ Affectation Une jointure "classique" (interne) n'affiche que les employés ayant des affectations. Une jointure externe gauche affiche tous les employés, même ceux n'ayant aucune affectation. Employé ⟕ Affectation

Relation Employé Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre 1001 Belaid Toufik 12/05/1965 Concepteur true 1009 Touati Rachid 13/09/1941 Chef de projet 1023 Kadri Amine 23/11/1970 Développeur 1053 Djabi Fatiha 04/06/1980 Analyste false 1026 Bouras Kamel 19/04/1968 Administrateur 1005 22/08/1976 L'employée 1005 n'est affectée à aucun projet

Relation Affectation Num_Employé Num_Projet Début_Affect Fin_Affect Supérieur 1009 122 07/03/2011 13/11/2011 NULL 1001 08/03/2011 28/06/2011 1023 15/06/2011 04/10/2011 103 12/09/2010 01/11/2010 208 12/10/2011 06/03/2012 01/09/2011 17/12/2011 133 06/11/2011 19/02/2012 1053 1026 19/08/2011 L'employée 1005 n'est affectée à aucun projet parce que son numéro n'apparait pas dans l'attribut Num_Employé de la relation affectation

Jointure naturelle (interne) Employé ⋈ Affectation

Jointure naturelle (interne) Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre Num_Projet Début_Affect Fin_Affect Supérieur 1009 Touati Rachid 13/09/1941 Chef de projet true 122 07/03/2011 13/11/2011 NULL 1001 Belaid Toufik 12/05/1965 Concepteur 08/03/2011 28/06/2011 1023 Kadri Amine 23/11/1970 Développeur 15/06/2011 04/10/2011 103 12/09/2010 01/11/2010 208 12/10/2011 06/03/2012 01/09/2011 17/12/2011 133 06/11/2011 19/02/2012 1053 Djabi Fatiha 04/06/1980 Analyste false 1026 Bouras Kamel 19/04/1968 Administrateur 19/08/2011 L'employée 1005 n'apparaît pas dans le résultat de la jointure parce qu'elle n'est affectée à aucun projet

Jointure externe gauche Employé ⟕ Affectation

Jointure externe gauche Num_Employé Nom Prénom Date_Naissance Fonction Est_Cadre Num_Projet Début_Affect Fin_Affect Supérieur 1009 Touati Rachid 13/09/1941 Chef de projet true 122 07/03/2011 13/11/2011 NULL 1001 Belaid Toufik 12/05/1965 Concepteur 08/03/2011 28/06/2011 1023 Kadri Amine 23/11/1970 Développeur 15/06/2011 04/10/2011 103 12/09/2010 01/11/2010 208 12/10/2011 06/03/2012 01/09/2011 17/12/2011 133 06/11/2011 19/02/2012 1053 Djabi Fatiha 04/06/1980 Analyste false 1026 Bouras Kamel 19/04/1968 Administrateur 19/08/2011 1005 22/08/1976

Division La division est une opération qui permet de retrouver quels sont les tuples d'une relation qui sont associés à tous les tuples d'une autre relation. Symbole: ÷ Nombre d'opérandes: 2 (opérateur binaire) Soient deux relations R(A1, A2, A3, B1, B2) et S(B1, B2) R ÷ S = T (A1, A2, A3) tel que pour tout tuple (a1, a2, a3) de T, quelque soit le tuple (b1, b2) de S, il existe un tuple (a1, a2, a3, b1, b2) de R.  Relation 2 Relation 1 Résultat

Exemple de division "Quels sont les employés qui ont travaillé sur tous les projets ?" (π Num_Employé, Num_Projet(Affectation)) ÷ (π Num_Projet(Projet)) (Num_Employé, Num_Projet) ÷ (Num_Projet) Num_Employé Num_Projet 1009 122 1001 1023 103 208 133 1053 1026 Num_Projet 103 122 133 208 Num_Employé 1009 ÷ =

Mémo (algèbre relationnelle) Union R  R’ R Projection π A(R) A B a1 b1 a3 b3 A B a1 b1 a2 b2 a3 b3 A B a1 b1 a2 b2 A a1 a2 sélection σ A=a1(R) Intersection R  R’ A B a1 b1 A B a1 b1 Renommage ρ A->D(R) Différence R – R’ Différence R’ – R D B a1 b1 a2 b2 A B a2 b2 A B a3 b3

Mémo (algèbre relationnelle) Produit cartésien R x S Théta Jointure R ⋈A ≠ C U U A B C D a1 b1 c1 d1 a2 b2 c2 d2 C D a1 d1 a2 d2 A B C D a1 b1 a2 d2 b2 d1 S C D c1 d1 c2 d2 Jointure (naturelle) externe gauche R ⟕ V Jointure naturelle R ⋈ T V T A C a1 c1 c2 a3 c3 A B C a1 b1 c1 c2 a2 b2 NULL A E a1 e1 a2 e2 A B E a1 b1 e1 a2 b2 e2

Mémo (algèbre relationnelle) Jointure (naturelle) externe droite V ⟖ R R A B a1 b1 a2 b2 A C B a1 c1 b1 c2 b2 a3 c3 NULL Semi jointure (naturelle) R⋉W W A E a1 e1 a3 e3 A B a1 b1 Jointure (naturelle) externe totale R ⟗ V A B C a1 b1 c1 c2 a2 b2 NULL a3 c3

Mémo (algèbre relationnelle) X X’ A B a1 b1 b2 a2 A B a1 b1 b2 a2 b3 Division X÷ Y Division X’÷ Y’ A a1 A a2 Y B b1 b2 Y’ B b1 b2 b3

Exercice Donnez les arbres algébriques correspondants aux requêtes suivantes: Quels sont les noms et prénoms des développeurs ? Quels sont les noms, prénoms et dates de naissance des employés nés avant 1975 ? Quels sont les Numéros des projets sur lesquels travaille l'employé 'Belaid' ? Quelles sont les dates de début des projets sur lesquels a travaillé l'employé 'Kadri' ? Quels sont les noms des développeurs et concepteurs affectés au projet 122 ? Quels sont les noms et prénoms des employés ayant travaillé sur des projets dont le budget est supérieur à 70000.00 DA ? Quels sont les numéros des employés n’étant affectés à aucun projet ? Quels sont les noms et prénoms des employés n’étant affectés à aucun projet ? Quels sont les noms et prénoms des employés affectés à tous les projets ?

Fonction = ‘Développeur ‘ Solution Quels sont les noms et prénoms des développeurs ? Nom, prénom Fonction = ‘Développeur ‘ Employé

Date_Naissance < ‘01/01/1975’ Solution Quels sont les noms, prénoms et dates de naissance des employés nés avant 1975 ? Nom, prénom, Date_Naissance Date_Naissance < ‘01/01/1975’ Employé

Solution Quels sont les Numéros des projets sur lesquels travaille l'employé 'Belaid' ? Num_Projet ⋈ Nom = ‘Belaid’ Affectation Employé

Fonction =‘Développeur’ ou Fonction =‘Concepteur’ Solution Quels sont les numéros des développeurs et concepteurs affectés au projet 122 ? Num_Employé ⋈ Fonction =‘Développeur’ ou Fonction =‘Concepteur’ Num_Projet =122 Employé Affectation

Solution Quelles sont les dates de début des projets sur lesquels a travaillé l'employé 'Kadri' ? Date_Début ⋈ ⋈ Projet Nom = ‘Kadri’ Affectation Employé

Solution Quels sont les noms et prénoms des employés ayant travaillé sur des projets dont le budget est supérieur à 70000.00 DA ? Nom, Prénom ⋈ ⋈ Employé Budget > 70000 Affectation Projet

Solution Quels sont les numéros des employés n’étant affectés à aucun projet ? - Num_Employé Num_Employé Employé Affectation

Solution Quels sont les noms et prénoms des employés n’étant affectés à aucun projet ? Nom, Prénom ⋈ - Employé Num_Employé Num_Employé Employé Affectation

Num_Employé, Num_Projet Solution Quels sont les noms et prénoms des employés affectés à tous les projets ? Nom, Prénom ⋈ ÷ Employé Num_Employé, Num_Projet Num_Projet Affectation Projet

Quelques équivalences Soient R et S deux relations: R  S = R - (R - S) σ condition1 et condition2(R) = σ condition1(R)  σ condition2(R) σ condition1 ou condition2(R) = σcondition1(R)  σ condition2(R) R ⋈θ S = σθ (R x S) R ÷ S = π(R/S)(R) - π(R/S) (((π(R/S)(R)) x S) - R) R/S: attributs de R n’appartenant pas à S

Notation fonctionnelle En plus de la notation algébrique et graphique (arbres algébriques) présentés précédemment, Il possible d'utiliser une notation fonctionnelle pour exprimer les opérations de l'algèbre relationnelle. Notation fonctionnelle des opérateurs algébriques: PROJECT(liste attributs, relation) RESTRICT(prédicat, relation) Sélection, Restriction UNION(relation1, relation2) INTERSECT(relation1, relation2) EXCEPT(relation1, relation2)  Différence JOIN(condition, relation1, relation2) … Exemple: Quels sont les noms et prénoms des développeurs ? PROJECT(Nom, Prénom, RESTRICT(Fonction='développeur', Employé))

Conclusion Opérateurs ensemblistes: Opérateurs relationnels: Union Intersection Différence Produit cartésien Opérateurs relationnels: Sélection Projection Renommage Jointures Division