LE MODÈLE RELATIONNEL La notions de table (Access, MySQL …) est mieux formalisée avec le concept de relation. Le modèle relationnel de données étudie les propriétés (données, opérations et contraintes) de ces relations. On se limitera ici aux données et à certaines opérations Structure de Données Relation Attribut Domaine Opérateurs de Manipulation Project Restrict Join Union Diff SQL __________________________________________________________________________________________________________________________________ © Najib TOUNSI 1 avril 17, 2017 LE MODÈLE RELATIONNEL Structure de Données Concept de Relation Relation R = sous ensemble du produit cartésien entre n domaines D1, D2,…, Dn R D1 X D2 X … X Dn (Domaine étant un ensemble de valeurs donné) Exemple: D1 = { Ali, Amine, Amina…} D2 = { 24, 34, 45, 21…} D3 = { Rabat, Casa, …} R = {<Ali, 34, Casa>, <Amina, 24, Rabat>, <Amine, 21, Rabat>, …} t = <n, a, v> R " n est âgé de a et habite v ". Propriétés qui définit le sous ensemble. ou Schéma de relation __________________________________________________________________________________________________________________________________ © Najib TOUNSI 2 avril 17, 2017 LE MODÈLE RELATIONNEL Structure de Données Forme de représentation plus commode (simplifiée) Colonnes à valeur dans NOM AGE VILLE Ali Amine Amina 34 24 21 Casa Rabat Rabat D1 A chaque colonne on attribue un nom: D2 NOM D3 AGE et VILLE Les valeurs de chaque colonne sont issues du domaine correspondant. Une ligne = un n-uplet __________________________________________________________________________________________________________________________________ © Najib TOUNSI 3 avril 17, 2017 LE MODÈLE RELATIONNEL Structure de Données Définitions/Vocabulaire Relation/Domaine Attribut Nom donné à un domaine dans une relation (e.g. son rôle). Doit être distinct Considérer la relation NOTES (eleve, noteCours, noteTP). définie sur Noms X Notes X Notes : deuxième et troisième domaines identiques, attributs différents Tuple Un élément de la relation <n, a, v> n-uplet Composant Un élément dans un tuple 'Ali', '24', … Notation: Clé t.nom, t.age, … Attribut (ou collection d'attributs) dont la valeur est différente d'un tuple à un autre. Informel : Table / Lignes / Colonnes (cf. Fichier / Enregistrement / Champs) __________________________________________________________________________________________________________________________________ © Najib TOUNSI 4 avril 17, 2017 LE MODÈLE RELATIONNEL Structure de Données Schéma de Relation {Nom de la relation, La liste des Attributs/Domaines, la Clé et le prédicat (propriété de définition)} PERSONNE (NOM: noms, AGE: entiers, VILLE: villes) Clé NOM, " n est âgé de a et habite v " Formes simplifiées PERSONNE (NOM, AGE, VILLE) PERSONNE NOM PERSONNE NOM AGE VILLE AGE VILLE __________________________________________________________________________________________________________________________________ © Najib TOUNSI 5 avril 17, 2017 LE MODÈLE RELATIONNEL Structure de Données Propriétés Pas d'ordre dans les tuples Pas d'ordre dans les attributs Tous les tuples sont différents Il existe toujours une clé Relation Normalisée (Valeurs atomiques, indécomposables) Exercice: Pourquoi 1 2 3 4? __________________________________________________________________________________________________________________________________ © Najib TOUNSI 6 avril 17, 2017 LE MODÈLE RELATIONNEL Opérations Table des livres (Numéro inventaire du livre, titre et auteur du livre, nombre d’exemplaires dans la bibliothèque) Livre NumInv Titre Auteur Qte 323 Bases De Données C.J. Date 3 124 Algorithmes D. Knuth 2 1110 Programmation B. Meyer 6 241 Langage C B. Kernighan 5 321 Unix K. Thompson 2 216 Systèmes Exploitations Crocus 1 312 Langage Java J. Gosling 8 Table des abonné(e)s (Numéro abonné, son nom et prénom ) Abonne NumAb Nom Prénom 12 Benali Ali 10 BenSaid Said 32 Karim Karima 14 Rajaoui Rajaa __________________________________________________________________________________________________________________________________ © Najib TOUNSI 7 avril 17, 2017 Table des prêts (Numéro inventaire du livre emprunté, Numéro abonné de l’emprunteur et la date d’emprunt) Pret NumInv NumAb DatePret 323 10 1/11/2009 124 12 2/11/2009 323 12 3/10/2009 241 32 3/10/2009 321 14 13/10/2009 323 14 10/11/2009 312 10 3/10/2009 323 32 13/09/2009 Exercice : Quels sont les clés dans ces relations? __________________________________________________________________________________________________________________________________ © Najib TOUNSI 8 avril 17, 2017 LE MODÈLE RELATIONNEL Opérations Opérateurs Algébriques de Manipulation Le modèle relationnel se distingue en cela des autres modèle. Il définit les opérations possibles sur les relations. (Opérateurs Algébriques) Opérateur : Relation Relation (unaire) Relation X Relation Relation (binaire) Required parameters are missing or incorrect. Required parameters are missing or incorrect. __________________________________________________________________________________________________________________________________ © Najib TOUNSI 9 avril 17, 2017 LE MODÈLE RELATIONNEL Opérations Opération de Projection: Opérateur PROJECT PROJECT (Relation, Liste-Attributs ) PROJECT (Abonne, NumAb, Nom) Résultat NumAb Nom 12 Benali 10 BenSaid 32 Karim 14 Rajaoui __________________________________________________________________________________________________________________________________ © Najib TOUNSI 10 avril 17, 2017 LE MODÈLE RELATIONNEL Opérations Opération de Restriction: Opérateur RESTRICT RESTRICT (Relation, Attribut = valeur ) RESTRICT (Livre, Qte = 2) Résultat NumInv Titre Auteur Qte 124 Algorithmes D. Knuth 2 321 Unix K. Thompson 2 __________________________________________________________________________________________________________________________________ © Najib TOUNSI 11 avril 17, 2017 LE MODÈLE RELATIONNEL Opérations Combinaison des opérateurs: Expression Relationnelle PROJECT (RESTRICT (Livre, Qte = 2), NumInv, Titre) Résultat NumInv Titre 124 Algorithmes 321 Unix Soit la réponse à la requête: « Quels sont les numéros et les titres des livres qui sont en quantité égale à deux » Idéalement : Une requête Expression algébrique relation résultat qui fournit la réponse __________________________________________________________________________________________________________________________________ © Najib TOUNSI 12 avril 17, 2017 LE MODÈLE RELATIONNEL Opérations Opération de Jointure: Opérateur binaire JOIN JOIN (Relation1, Relation2, Attribut1 = Attribut2 ) JOIN (Livre, Pret, Livre.NumInv = Pret.NumInv) Résultat +--------+-------------------+--------------+------+--------+-------+------------+ | numinv | titre | auteur | qte | numinv | numab | datepret | +--------+-------------------+--------------+------+--------+-------+------------+ | 323 | Bases De Données | C.J. Date | 3 | 323 | 10 | 2007-11-01 | | 323 | Bases De Données | C.J. Date | 3 | 323 | 12 | 2007-10-03 | | 323 | Bases De Données | C.J. Date | 3 | 323 | 14 | 2007-11-10 | | 323 | Bases De Données | C.J. Date | 3 | 323 | 32 | 2007-09-13 | | 124 | Algorithme | D. Knuth | 2 | 124 | 12 | 2007-11-02 | | 241 | LangageC | B. Kernighan | 5 | 241 | 32 | 2007-10-03 | | 321 | Unix | K. Thompson | 2 | 321 | 14 | 2007-10-13 | | 312 | LangageJava | J. Gosling | 8 | 312 | 10 | 2007-10-03 | Opération caractéristique: Permet d'interroger plusieurs tables et associer les informations entre elles. (Suivant les liens sémantiques). __________________________________________________________________________________________________________________________________ © Najib TOUNSI 13 avril 17, 2017 LE MODÈLE RELATIONNEL Opérations Exemple d'Expression Relationnelle "Le nom des livres empruntés par l’abonné n° '12' " PROJECT (RESTRICT (JOIN (Livre, Pret, Livre.NumInv = Pret.NumInv), NumAb = ‘12’), Titre) Titre Base de Données Algorithmique __________________________________________________________________________________________________________________________________ © Najib TOUNSI 14 avril 17, 2017 MODÈLE RELATIONNEL Opérations Langage SQL (Structured Query Language) SELECT Colonnes Projections FROM Tables Jointures WHERE Critères recherches Restrictions "Le nom des livres empruntés par l’abonné n° '12' " SELECT Titre FROM Livre, Pret WHERE Livre.NumInv = Pret.NumInv AND NumAb = ‘12’ __________________________________________________________________________________________________________________________________ © Najib TOUNSI 15 avril 17, 2017 Autre forme : SELECT Titre FROM Livre JOIN Pret WHERE NumAb = ‘12’ ON Livre.NumInv = Pret.NumInv __________________________________________________________________________________________________________________________________ © Najib TOUNSI 16 avril 17, 2017 MODÈLE RELATIONNEL Opérations Equivalence avec les opérateurs relationnels Opérateur relationnel Equivalent SQL PROJECT (Abonne, NumAb, Nom) SELECT FROM NumAb, Nom Abonne RESTRICT (Livre, Qte = 3) SELECT FROM WHERE * Livre Qte = 3 JOIN (Livre, Pret, Livre.NumInv = Pret.NumInv) SELECT * FROM Livre, Pret WHERE Livre.NumInv = Pret.NumInv ou bien SELECT * FROM Livre JOIN Prêt ON Livre.NumInv = Pret.NumInv __________________________________________________________________________________________________________________________________ © Najib TOUNSI 17 avril 17, 2017