Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Algèbre relationnelle
Semestre 4 Mehdi Benzine
2
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)
3
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)
4
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
5
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 122 Développement d'une application de gestion 07/01/2011 13/05/2011 133 Réalisation d'un CD-ROM interactif de formation 04/11/2011 02/07/2012 208 Développement d'un site internet 15/06/2011 06/03/2012
6
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
7
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
8
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.
9
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'
10
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é)
11
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)
12
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
13
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 ‘
14
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’
15
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
16
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)
17
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
18
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
19
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.
20
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
21
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é
22
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
23
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é
24
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é
25
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
26
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
27
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 =
28
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
29
Exemple Affectation ⋈ Projet π Description, Num_Employé (Affectation ⋈ Projet) π Description, Num_Employé (σ Supérieur est NULL(Affectation ⋈ Projet))
30
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 122 Développement d'une application de gestion 07/01/2011 13/05/2011 133 Réalisation d'un CD-ROM interactif de formation 04/11/2011 02/07/2012 208 Développement d'un site internet 15/06/2011 06/03/2012
31
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
32
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 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 208 12/10/2011 Développement d'un site internet 06/03/2012 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 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
33
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
34
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
35
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.
36
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é))) )
37
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
38
ρ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
39
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
40
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.
41
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
42
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
43
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
44
Jointure naturelle (interne)
Employé ⋈ Affectation
45
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
46
Jointure externe gauche
Employé ⟕ Affectation
47
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
48
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
49
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 ÷ =
50
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
51
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
52
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
53
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
54
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 à 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 ?
55
Fonction = ‘Développeur ‘
Solution Quels sont les noms et prénoms des développeurs ? Nom, prénom Fonction = ‘Développeur ‘ Employé
56
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é
57
Solution Quels sont les Numéros des projets sur lesquels travaille l'employé 'Belaid' ? Num_Projet ⋈ Nom = ‘Belaid’ Affectation Employé
58
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
59
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é
60
Solution Quels sont les noms et prénoms des employés ayant travaillé sur des projets dont le budget est supérieur à DA ? Nom, Prénom ⋈ ⋈ Employé Budget > 70000 Affectation Projet
61
Solution Quels sont les numéros des employés n’étant affectés à aucun projet ? - Num_Employé Num_Employé Employé Affectation
62
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
63
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
64
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
65
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é))
66
Conclusion Opérateurs ensemblistes: Opérateurs relationnels: Union
Intersection Différence Produit cartésien Opérateurs relationnels: Sélection Projection Renommage Jointures Division
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.