Modèle relationnel, Algèbre relationnel
Transcription
Modèle relationnel, Algèbre relationnel
Relation Une relation est un sous-ensemble du produit cartésien d'une liste de domaines. Chaque relation est identifiée par un nom. Représentation sous la forme d'une table à 2 dimensions : des colonnes, attributs. des lignes, enregistrements ou n-uplets. 43 OlivierCuré [[email protected]] Attribut Un attribut prend ses valeurs dans domaine de valeurs. Un attribut est identifié par un nom. Exemple : titre Alien 44 année nomDir prénomDir annéeNaissDir 1979 Scott Ridley 1943 Reservoir Dogs 1992 Tarantino Quentin 1963 The thing 1982 Carpenter John 1948 Volte-face 1997 Woo John 1946 Pulp Fiction 1995 Tarantino Quentin 1963 OlivierCuré [[email protected]] Clés Clé : un ensemble d'attributs dont le regroupement des valeurs identifie sans ambiguité un n-uplet (tuple). Clé candidate (candidate key): une clé pour laquelle aucun sous-ensemble n'est une clé. Une clé minimale. Clé primaire (primary key): une clé candidate sélectionnée pour être la clé principale d'une relation. Une clé primaire par relation. 45 OlivierCuré [[email protected]] Clé externe Une clé externe (foreign key) est un ensemble d'attributs dans une relation qui correspondent exactement à la clé primaire d'une autre relation. Le nom des attributs ne doivent pas nécessairement correspondre mais les domaines doivent être identiques. 46 OlivierCuré [[email protected]] Un exemple Une relation sur les films titre année Alien 1979 Reservoir Dogs 1992 The thing 1982 Volte-face 1997 Pulp Fiction 1995 Terminator 1984 Ghosts of Mars2001 Mad Max 1979 Mad Max 2 1981 nomDir prénomDir Scott Ridley Tarantino Quentin Carpenter John Woo John Tarantino Quentin Cameron James Carpenter John Miller George Miller George annéeNaissDir 1943 1963 1948 1946 1963 1954 1948 1945 1945 Quelques problèmes : Supprimer un film, ajouter un réalisateur, modifier la date de naissance d'un réalisateur, Cohérence des données. 47 OlivierCuré [[email protected]] Un exemple (2) Une relation sur les films titre Alien Reservoir Dogs The thing Volte-face Pulp Fiction Terminator Ghosts of Mars Mad Max Mad Max 2 48 Une autre relation sur les réalisateurs idDir nomDir prénomDir annéeNaissDir Scott Ridley 1943 année idDir1 2 Tarantino Quentin 1963 1979 1 3 Carpenter John 1948 1992 2 4 Woo John 1946 1982 3 5 Cameron James 1954 1997 4 6 Miller George 1945 1995 2 1984 5 2001 3 Problèmes précédents : Supprimer un film, ajouter un 1979 6 réalisateur, modifier la date de naissance d'un réalisateur, Cohérence des données. 1981 6 OlivierCuré [[email protected]] Schéma d'une relation Le schéma d'une relation correspond à l'ensemble : nom de la relation, liste des attributs (avec domaines) et indication de la clé primaire (souligné). R : A1, A2, ..., An Schéma d'une base de données est l'ensemble des schémas des relations de la base. 49 OlivierCuré [[email protected]] Schémas, exemple Schéma des relations : film (titre, année, idDir) realisateur (idDir, nomDir, prenomDir, anneéNaisDir) Schéma de la base de données : film, realisateur 50 OlivierCuré [[email protected]] Mapping EA - relationnel Une type d'entité devient une relation. Une propriété devient un attribut. Une propriété identifiante devient une clé primaire. Une association devient une relation et sa représentation est fonction des cardinalités. 51 OlivierCuré [[email protected]] Transformation des associations en relations Les cardinalités maximales de l'association sont de 1 : L'identifiant d'une entité est utilisé comme clé étrangère de l'autre relation, ou inversement. Entity1(a1, Entity2(a2, ou Entity1(a1, Entity2(a2, 52 ...) ..., #a1) ...,#a2) ...) OlivierCuré [[email protected]] Transformation des associations en relations (2) La cardinalité maximale d'une association est à n et l'autre à 1 : L'identifiant de l'entité (*:n) devient une clé étrangère de l'entité (*:1). Entity1(a1, ..., #a2) Entity2(a2, ...) 53 OlivierCuré [[email protected]] Transformation des associations en relations (3) Les cardinalités maximales sont à n : L'association devient une relation et sa clé primaire se compose des identifiants des entités. Entity1(a1, ...) Entity2(a2, ...) Asso1(#a1,#a2, a3) 54 OlivierCuré [[email protected]] Exemple mapping relations n,m (1) Schéma relationnel Produit (numPro, nomPro) Client (numCli, nomCli) Achat (#numCli,#numPro) (2) 55 OlivierCuré [[email protected]] Transformation des associations en relations (4) Dans le cas d'une association « is-a », il est possible de voir la solution avec un point de vue orienté objet (duplication des attributs de la superclasse dans la sous-classe) ou bien entité-association (duplication de l'indentifiant de la super-classe dans la sous-classe). Personne(id_pers,nom) Vision OO : joueur(id_pers, club) arbitre(id_pers, niveau) Vision EA : joueur(id_pers, nom, club) arbitre(id_pers, nom, niveau) 56 OlivierCuré [[email protected]] Transformation des associations en relations (5) Dans le cas d'une association récursive, l'attribut clé primaire de la relation est dupliquée sous la forme d'une clé étrangère. Employe (id_emp, nom_emp, #id_emp_manager) 57 OlivierCuré [[email protected]] Exemple Bibliothèque 58 OlivierCuré [[email protected]] Schémas de la bibliothèque Schéma relationnel Mot_cle (numMC , valeurMC) Ouvrage (numOuv, titreOuv, nomAuteurOuv, editeurOuv) Exemplaire (numEx, dateAchat, #numEmp, #numOuv) Emprunteur (numEmp, nomEmp, adrEmp) MotCle_Ouvrage (#numMC, #numOuv) Schéma de la base de données Mot_cle, Ouvrage, Exemplaire, Emprunteur, MotCle_Ouvrage 59 OlivierCuré [[email protected]] Autre exemple On gère des patients et des docteurs qui sont des personnes. Pour chaque personne, on stocke le NSS, le nom, le prénom, l'adresse. Pour un docteur nous avons en plus un numéro d'ordre. Un docteur soigne un patient et peut lui prescrire un test (portant un nom et identifié par un numéro). On désire stocker la date et le résultat d'un test donné pour un patient et prescrit par un docteur. 60 OlivierCuré [[email protected]] Correction exemple 61 OlivierCuré [[email protected]] Son schéma relationnel Personne(NSS, nom, prenom, adrNumRue, adrRue, adrVille) Patient (NSS) Docteur(NSS, numOrdre) Test(numTest, nomTest) Soigne (#NSSPatient,#NSSDocteur) EffectuerTest (#NSSDocteur, #NSSPatient, #NumTest, date, resultat) 62 OlivierCuré [[email protected]] 4. Algèbre relationnel 63 OlivierCuré [[email protected]] Objectif Effectuer des opérations sur le modèle relationnel. Algèbre relationnel : Théorique Fondement du traitement des requêtes. Notation formelle (plus 'propre' et plus compact que le SQL). Récupération et manipulation (mise-à-jour, suppression, insertion) des données de la BD. Base de l'optimisation des requêtes SQL. Ce n'est pas un langage de programmation (déclaratif, pas procédural). 64 OlivierCuré [[email protected]] Les langages des SGBD LDD ou Langage pour la Définition des Données (Data Definition Language - DDL) définition de l'ensemble du schéma de la base de données. LMD ou Langage pour la Manipulation des Données ( Data Manipulation Language - DML) consultation, modification, suppression et ajout des données. LCD ou Langage pour le Contrôle des Données (Data Control Language - DCL) définition des permissions d'accès, administration. OlivierCuré [[email protected]] Algèbre et calcul relationnels pour le LMD Deux représentations sont à la base de l'implémentation des langages de requêtes : Algèbre relationnel (relational algebra) Très pratique pour représenter un plan d'exécution, plus opérationnel que le calcul relationnel. Concerne le 'comment faire'. Calcul relationnel (relational calculus) Permet aux utilisateurs de décrire ce qu'ils veulent plutôt que de décrire comment l'obtenir. Plus déclaratif que l'algèbre relationnel. Concerne le 'quoi faire'. OlivierCuré [[email protected]] Exemple titre année idDir Alien 1979 1 Reservoir Dogs 1992 2 The thing 1982 3 Volte-face 1997 4 Pulp Fiction 1995 2 Terminator 1984 5 Ghosts of Mars 2001 3 Mad Max 1979 6 Mad Max 2 1981 6 idDir nomDir prénomDir 1 Scott Ridley 2 Tarantino Quentin 3 Carpenter John 4 Woo John 5 Cameron James 6 Miller George SQL SELECT nomDir, titre FROM realisateur r, film f WHERE r.idDir=f.idDir; Algèbre relationnel annéeNaissDir 1943 1963 1948 1946 1954 1945 ∏ (nomDir, film) (Film ><idDir Realisateur) Calcul relationnel {R.nomDir, F.titre | R ∈ Realisateur ∧ ∃ F(F ∈ Film ∧ R.idDir = F.idDir) } OlivierCuré [[email protected]] Opérations sur l'algèbre relationnel Théorie des opérations est formellement définie et équivalente à la logique du premier ordre. Les opérateurs relationnels transforment une, ou une paire, de relations en un résultat qui est lui aussi une relation. Ce résultat peut-être exploité dans d'autres requêtes. Les opérations éliminent les duplicats. OlivierCuré [[email protected]] Algèbre relationnel Un ensemble d'opérations formelles permettant de décrire des requêtes sous une forme algébrique. Opérations sur les ensembles : Union : ∪ R Intersection : ∩ Différence : Opérations algébriques : S unaire (sélection, projection) Binaire (jointures et division) 69 OlivierCuré [[email protected]] Projection Opération algébrique sélectionnant un sous-ensemble des attributs d'une relation Symbole : ∏ Syntaxe : Résultat = ∏ (attributs) Relation Exemple : R1 = ∏ (prenomDir)realisateur Quentin John James George 70 OlivierCuré [[email protected]] Projection (2) Le nombre de n-uplets d'une relation résultat d'une opération de projection R, est inférieur ou égal au nombre de nuplets de la relation R. L'opération de projection n'est pas commutative. Si liste2 contient les attributs de liste1, liste1 ⊆ liste2 on peut écrire : ∏ 71 (liste1) (∏ (liste2) (R))= ∏ (liste1) (R) OlivierCuré [[email protected]] Sélection Opération permettant la sélection d'un sousensemble des n-uplets d'une relation satisfaisant une condition. Symbole : σ Syntaxe : Résultat = σ (condition) Relation Opérateurs sur la condition : =,<>,<,<=,>,>=. Exemple : R1 = σ 3 72 Carpenter John (annéeNaisDir=1948) realisateur 1948 OlivierCuré [[email protected]] Sélection (2) Le degré (nombre d'attributs) d'une relation résultat d'une opération de sélection sur R est identique au degré de la relation R. La sélection est une opération commutative : σ (cond1) (σ (cond2) (R)) = σ (cond2) (σ (R)) (cond1) Cascade d'opérations : σ 73 (cond1) (σ (cond2) (R)) = σ (cond1 et cond2) (R) OlivierCuré [[email protected]] Projection et sélection On peut effectuer des opérations avec des projections et sélections. Exemple : Nom du réalisateur dont l'année de naissance est 1948. ∏ (nomDir) (σ (anNaisDir=1948) realisateur) 74 OlivierCuré [[email protected]] Produit cartésien Le produit cartésien de 2 relations R1 (A1,A2, ..,An) de i n-uplets et de R2 (B1,B2, ..,Bm) de j n-uplets est une relation de degré n+m et de i*j n-uplets R3 (A1,A2,..,An,B1,B2,..,Bm). Le résultat de R1xR2 est une relation incluant toutes les combinaisons de n-uplets de R1 et R2. On exploite le produit cartésien en conjunction avec les autres opérateurs. 75 OlivierCuré [[email protected]] Exemple de produit cartésien R1 Att1 Att2 a1 b1 a1 b2 a2 b1 a2 b2 a3 b2 a4 b2 76 R2 Att3 c1 c2 R3 = R1xR2 Att1 Att2 Att3 a1 b1 c1 a1 b1 c2 a1 b2 c1 a1 b2 c2 a2 b1 c1 a2 b1 c2 a2 b2 c1 a2 b2 c2 a3 b2 c1 a3 b2 c2 a4 b2 c1 a4 b2 c2 3 attributs et 12 n-uplets OlivierCuré [[email protected]] Union, Intersection et différence Ces opérations sont binaires et comportent 2 relations qui doivent être compatibles. Soit la relation R1(A1,A2,..,An) La fonction dom(Ai) retourne le domaine de Ai. Exemple : Personne (nss, nom) dom(nss) = des numéros de SS. dom(nom) = des noms. 2 relations sont compatibles pour les opérations sur les ensembles ssi pour R1(A1,A2,..,An) et R2(B1,B2,..,Bm), n=m et dom(Ai) = dom(Bi), 1<=i<=n. 77 OlivierCuré [[email protected]] Union [∪ ] L'union de 2 relations R1(A1,A2,..,An) et R2(B1,B2,..,Bn) est une relation R3(C1,C2,..,Cn) de manière à avoir dom(Ci) = Dom(Ai) = Dom(Bi) pour 1<= i <= n. Le résultat de R1 ∪ R2 est une relation incluant tous les n-uplets qui sont dans R1 ou R2 ou bien dans R1 et R2, en éliminant les duplicats. Union est commutative : R ∪ S = S ∪ R 78 OlivierCuré [[email protected]] Exemple union R1 Num 12345 13344 26688 25434 R2 79 R R=R1 ∪ R2 Num 12345 13344 Num 26688 13344 25434 28866 28866 OlivierCuré [[email protected]] Intersection [∩ ] L'intersection de 2 relations R1(A1,A2,..,An) et R2(B1,B2,..,Bn) est une relation R3(C1,C2,..,Cn) de manière à avoir dom(Ci) = Dom(Ai) ∩ Dom(Bi) pour 1<= i <= n. Le résultat de R1 ∩ R2 est une relation incluant seulement les n-uplets qui sont dans R1 qui apparaissent aussi dans R2. Intersection est commutative : R ∩ S = S ∩ R . 80 OlivierCuré [[email protected]] Exemple intersection R1 Num 12345 13344 26688 25434 R R=R1 ∩ R2 Num 13344 R2 Num 13344 28866 81 OlivierCuré [[email protected]] Différence [- ] La différence de 2 relations R1(A1,A2,..,An) et R2(B1,B2,..,Bn) est une relation R3(C1,C2,..,Cn) de manière à avoir dom(Ci) = Dom(Ai) − Dom(Bi) pour 1<= i <= n. Le résultat de R1 − R2 est une relation incluant tous les n-uplets qui se trouvent dans R1 et pas dans R2. Différence n'est pas commutative. 82 OlivierCuré [[email protected]] Exemple union R1R2 R1 Num Num 12345 12345 13344 26688 26688 25434 25434 R2 R1 Num R2 Num 28866 13344 28866 83 OlivierCuré [[email protected]] Jointure Composition de deux relations sur un domain commun. La jointure de 2 relations R1(A1,A2,..,An) et R2(B1,B2, .., Bm) est une relation R3 de degré k = n+m et dont les attributs sont (A1, A2, .., An, B1, B2, ..,Bm). Symbole : >< Syntaxe : Résultat = R1 >< Equivalence avec 84 σ condition (condition) R2 (R1 x R2) OlivierCuré [[email protected]] Jointures Un jointure avec une condition d'égalité est une équi-jointure. On parle de jointure naturelle lorsque la condition compare des attributs dont le nom est identique. Le symbole utilisé est alors '*' et il n'est pas nécessaire d'indiquer la condition. Exemple : R1(A1,A2,A3,A4) et S(A1,B1,B2,B3) Q = R * S est équivalent à Q' = R ><R.A1=S.A1 S On parle de théta-jointure lorsque les noms des attributs sont différents. 85 OlivierCuré [[email protected]] Renommer des attributs et relations Pour effectuer des jointures naturelles plus facilement, on peut utiliser l'opérateur ρ qui permet de renommer des attributs et/ou des relations. Exemple : R1(A1,A2,A3) ρ (R) renomme R en S et les S(B1,B2,B3) attributs An en Bn. 86 ρ S ρ B1,B2,B3 (R) renomme R en S. (R) renomme An en Bn. OlivierCuré [[email protected]]