Chapitre 4 LANGAGES DE MANIPULATION RELATIONNELS Sommaire 1. Langages de Manipu

Chapitre 4 LANGAGES DE MANIPULATION RELATIONNELS Sommaire 1. Langages de Manipulation de Données(LMD) 2. LMD algébriques et LMD prédicatifs 3. L’algèbre Relationnelle  Les opérateurs algébriques  Comment écrire une requête compliquée ?  Les opérateurs déduits  Complexité des opérateurs  Propriétés des opérateurs 1. Langages de Manipulation de Données (LMD) Les langages de manipulation de données (LMD) sont des langages qui manipulent les relations avec des opérateurs particuliers en vue de répondre aux requêtes des utilisateurs. Ils restent assez conceptuels, c'est-à- dire ne portent que sur les concepts du schéma (relations, attributs, domaines). Ils ignorent tout de l'organisation interne des relations. ils sont efficaces, c'est-à-dire ils ont des temps de réponse courts même si la base de données est très grande 2.LMD algébriques et LMD prédicatifs  Le modèle relationnel a été à l'origine proposé avec deux LMD de base, l'algèbre relationnelle et le calcul des tuples, équivalents en puissance et qui ont fixé l'ensemble des fonctions que tout LMD relationnel doit offrir.  Un LMD basé sur l’algèbre relationnelle s’appelle un langage algébrique.  Une requête exprimée dans un langage algébrique, spécifie un enchaînement d'opérations conduisant au résultat désiré (c'est-à-dire comment construire le résultat à partir des relations de la base de données).  L'intérêt de l'algèbre relationnelle est multiple: l'algèbre a identifié les opérateurs fondamentaux d'utilisation d'une base de données relationnelle; ces opérateurs ont défini les principales fonctions à optimiser dans les SGBD relationnels; l'algèbre a donné naissance à des LMD pour les utilisateurs. C'est le cas de ISBL, qui a été développé par IBM en habillant l'algèbre d'une syntaxe plus agréable. 2.LMD algébriques et LMD prédicatifs  Un LMD basé sur le calcul des tuples (calcul des prédicats de la logique du premier ordre) s’appelle un langage prédicatif.  Une requête exprimée dans un tel langage, spécifie par des prédicats uniquement les caractéristiques du résultat qu'elle veut obtenir (c'est-à- dire la définition du résultat désiré).  Deux adaptations de ce calcul au modèle relationnel ont été proposées : le calcul des tuples, qui a donné naissance au LMD QUEL du SGBD relationnel Ingres, le calcul des domaines qui a donné naissance à des LMD de type graphique dont QBE, proposé par IBM. SQL qui est le LMD relationnel le plus répandu du fait que c'est la seule norme existante pour les LMD relationnels, comporte des caractéristiques de type algébrique et d'autres de type prédicatif. 3. L’algèbre Relationnelle 3.1 Définition : L’algèbre relationnelle est un ensemble d'opérateurs qui, à partir d'une ou deux relations existantes, créent en résultat une nouvelle relation temporaire. Formellement l'algèbre comprend: - cinq opérateurs de base: sélection, projection, union, différence et produit, - un opérateur syntaxique, renommer, qui ne fait que modifier le schéma et pas les tuples. - Des opérateurs déduits à partir de ces 5 opérateurs ; équivalents à la composition de plusieurs opérateurs de base. Les opérateurs de l'algèbre peuvent être regroupés en deux classes: • les opérateurs provenant de la théorie mathématique sur les ensembles (applicables car chaque relation est définie comme un ensemble de tuples): union, intersection, différence, produit; • les opérateurs définis spécialement pour les bases de données relationnelles: sélection, projection, jointure, division et renommage. 3.1 Les opérateurs 3.1.1 Projection : Cet opérateur construit une relation résultat où n'apparaissent que certains attributs de la relation opérande (en termes de tableau, cela revient à extraire certaines colonnes). Définition : soit R (A1, A2, ...., An) une relation, et soit Ai1, Ai2, ....., Aij un sous-ensemble de ses attributs, la projection de R sur Ai1, Ai2, ....., Aij, notée : π [Ai1, Ai2, ....., Aij] R crée une nouvelle relation, temporaire, de schéma (Ai1, Ai2, ....., Aij) et de population égale à l'ensemble des tuples de R "tronqués à Ai1, Ai2, ....., Aij ", i.e. : {t / r (r R t.Ai1 = r.Ai1 t.Ai2 = r.Ai2 .... t.Aij = r.Aij)} ∃ ∈ ∧ ∧ ∧ ∧ 3.1 Les opérateurs 3.1 Les opérateurs 3.1.2 Sélection : Cet opérateur construit une relation résultat où n'apparaissent que certains tuples de la relation opérande (en termes de tableau, cela revient à extraire certaines lignes). Les tuples retenus sont ceux satisfaisant une condition explicite, appelée prédicat de sélection. Définition: soit R (A1, A2, ...., An) une relation, la sélection de R selon un prédicat p, notée: σ [p] R crée une nouvelle relation, temporaire, de schéma identique à celui de R, et de population l'ensemble des tuples de R pour lesquels le prédicat p est vrai. 3.1 Les opérateurs Le prédicat de sélection permet de comparer la valeur d'attributs de R à celle d'autres attributs de R ou à des constantes. Sa forme est la suivante : <p> ::= <condition> | <p> <opérateur logique> <p> | ¬ <p> | "("<p>")" <opérateur logique> ::= | ∧ ∨ <condition> ::= nom-attribut <opérateur comparaison> valeur | nom-attribut <opérateur comparaison> nom-attribut <opérateur comparaison> ::= = | ≠ | ≤ | < | > | ≥ 3.1 Les opérateurs 3.1.3 Expressions d'algèbre : Les opérateurs de l'algèbre peuvent être combinés dans des expressions pour exprimer des requêtes non élémentaires. 3.1 Les opérateurs 3.1.3 Expressions d'algèbre : Les opérateurs de l'algèbre peuvent être combinés dans des expressions pour exprimer des requêtes non élémentaires. 3.1 Les opérateurs 3.1.4 Jointure (naturelle) de deux relations ayant au moins un attribut commun : Définition : étant donné deux relations R(X, Y) et S(Y, Z), où X, Y, Z symbolisent soit un attribut, soit un ensemble d'attributs, et où Y n'est pas vide, la jointure (naturelle) de R et S, notée : R * S crée une nouvelle relation temporaire, de schéma (X, Y, Z). La population de R * S est l'ensemble des tuples <x, y, z> créés par composition d'un tuple <x, y> de R et d'un tuple <y, z> de S, tels que les deux tuples ont la même valeur pour Y.  On remarque que la population de R * S comporte n tuples, n [0 : card(R) x ∈ card(S)], les valeurs extrêmes étant obtenues dans les cas suivants: 0 : il n'existe pas de tuple de R et S qui ont même valeur pour Y, card(R) x card(S) : les tuples de R et de S ont tous la même valeur, y0, pour Y. 3.1 Les opérateurs Exemples: Personne(nom, prénoms, adr) | Etudiant (numEtud, nom, dateN, AnneeEtudes, DiplomePrepare) | (sous-type de Personne) | Obtenu (numEtud, NomCours, Note, Annee) On désire tous les renseignements sur les étudiants (nom, adresse, date de naissance, numéros d'étudiant et de personne) : Etudiant * Personne Noms des étudiants ayant réussi le cours d'algorithmique: π [nom] ( Personne * Etudiant * σ [nomC = "algo"] Obtenu ) 3.1 Les opérateurs 3.1.5 Renommer un ou des attributs d'une relation : L'opérateur renommer, noté α, permet de changer le nom d'un (ou plusieurs) attribut d'une relation R: α [nom_attr1: nouveau_nom_pour_attr1, … ] R Cet opérateur est utile avant les jointures s'il y a un problème d'homonymie ou de synonymie, ou avant les opérations ensemblistes (union, différence, intersection) qui requièrent que les attributs correspondants aient le même nom. Exemple : Personne(nom, prénoms, adr) α [nom : Nom_Perso] Personne  Personne(nom_Perso, prénoms, adr) 3.1 Les opérateurs Exemples: Personne(nom, prénoms, adr) | Etudiant (numEtud, nom, dateN, AnneeEtudes, DiplomePrepare) (sous-type de Personne) | Obtenu (numEtud, NomCours, Note, Annee) On désire tous les renseignements sur les étudiants (nom, adresse, date de naissance, numéros d'étudiant et de personne) : Etudiant * Personne Noms des étudiants ayant réussi le cours d'algorithmique: π [nom] ( Personne * Etudiant * σ [nomC = "algo"] Obtenu ) 3.1 Les opérateurs 3.1.6 La thêta-jointure de deux relations n'ayant aucun attribut commun : Définition : soient deux relations R (A1, A2, …, An) et T (B1, B2, …, Bp) n'ayant pas d'attribut de même nom, la thêta jointure de R et T selon le prédicat p, notée : R *[p] T crée une nouvelle relation temporaire de schéma (A1, A2, …, An, B1, B2, …, Bp), et de population égale à l'ensemble des tuples de R et de T concaténés qui satisfont le prédicat. Le prédicat est de la même forme que le prédicat d'une sélection, sauf pour les conditions élémentaires qui comparent un attribut de R à un attribut de T: <condition>::= nom-attribut-de-R <opérateur de comparaison> nom-attribut-de-T 3.1 Les opérateurs Exemples: Liste des couples de numéros d'étudiants, tels que ces deux étudiants soient nés le même jour */ on crée d'abord une autre relation Etudiant avec des attributs renommés/* Etudiant2 := α [numEtud : numEtud2 , dateN : dateN2](π [numEtud, dateN] Etudiant) π [numEtud , numEtud2 ] (Etudiant *[numEtud < numEtud2 dateN = ∧ dateN2] Etudiant2 ) 3.1 Les opérateurs 3.1.7 Union, Différence, Intersection de deux relations de même schéma : Définition: soient R et S deux relations de même schéma : R (A1, A2, …, An) , S (A1, A2, …, An). Union : R S crée une relation temporaire de même schéma et de population égale ∪ à l'ensemble des tuples de R et de ceux de S (avec élimination des doubles éventuellement créés). uploads/Philosophie/ cours-de-bases-de-donnees-ch4.pdf

  • 30
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager