Bases de Données Relationnelles Le Modèle Relationnel
Le modèle relationnel modèle de niveau logique modèle simple : deux concepts relation (table) attribut (colonne) défini par Ted Codd en 1970 ; prix Turing en 1986. Développé par IBM lab. support théorique très solide aujourd'hui utilisé par beaucoup de SGBD commerciaux (Oracle, Informix, DB2, Ingres, Sybase, dbase, Access ) et SIG BDA 4.2
Deux modèles relationnels Modèle formel relation, attribut, tuple, identifiant normalisation algèbre relationnelle calculs relationnels Modèle logique, implémenté : SQL table, colonne, ligne, clé primaire SQL - définition et modification du schéma SQL - entrée et mise à jour des données SQL - requêtes BDA 4.3
Le modèle relationnel formel
Concepts de base Monde réel objet > Relationnel > relation propriété simple, monovaluée > attribut lien binaire, sans attribut > identifiant externe représentation multiple > / BDA 4.5
Concepts de base (suite) Etudiant (N Etud, nom, prénom, age) nom de la relation noms des attributs schéma Etudiant N Etud nom prénom age tuple ou occurrence 136 Rochat Jean 19 253 Aubry Annie 20 101 Duval André 21 147 Rochat Marc 21 population BDA 4.6
Schéma relationnel une BD = ensemble de relations schéma d'une BD relationnelle = un ensemble de schémas de relation : R1, R2,, Rn schéma d'une relation = un ensemble d'attributs avec leurs domaines R = (A1/d1, A2/d2,, Ap/dp) ou, plus simplement, R = (A1, A2,, Ap) BDA 4.7
Règles de structuration attributs : simples et monovalués (domaine de valeurs atomiques) structure plate régulière x x x x y y y y x, y : une et une seule valeur atomique par attribut x x x x x x w w w w w w INTERDIT BDA 4.8
Valeurs nulles Un attribut peut ne pas être valué pour un tuple. On dit alors qu'il a une valeur nulle exemple : on ne connaît ni l'age d'annie ni le prénom de Duval Etudiant N Etud nom prénom age 136 Rochat Jean 19 253 Aubry Annie NULL 101 Duval NULL 21 147 Rochat Marc 21 BDA 4.9
Identifiant Rappel : ensemble minimum d'attributs tel qu'il n'existe jamais 2 tuples ayant mêmes valeurs pour tous ces attributs L'identifiant n'admet pas de valeurs nulles Etudiant N Etud nom prénom age 136 Rochat Jean 19 253 Aubry Annie NULL 101 Duval NULL 21 147 Rochat Marc 21 BDA 4.10
Identifiant Modèle formel : jamais de tuple en double Il existe donc toujours un identifiant : dans la cas le pire, c'est l'ensemble des attributs de la relation Il peut exister plusieurs identifiants Etudiant ( AVS, N inscription, nom, prénom, adresse, tél ) AVS N inscription ( nom + prénom ) BDA 4.11
Identifiants externes Décrivent les liens binaires entre les relations Etudiant ( N, nom, prénoms, adresse, tél) Cours ( Nom, horaire, prof ) Suit ( N Etud, NomC ) N Etud référence un Etudiant NomC référence un Cours La valeur de N Etud dans Suit est : celle de l'identifiant d'un tuple existant de Etudiant (intégrité référentielle) ou éventuellement nulle (si attribut facultatif) Même contrainte pour NomC de Suit BDA 4.12
Identifiant externe - Exemple Cours ( NomC, horaire, prof) BD Mercredi 15-17 Rochat SI Mardi 16-19 Martin Réseaux Jeudi 16-19 Suit ( N Etud, NomC) 253 SI 136 BD 253 BD 101 SI Martin Suit traduit un TA entre Etudiant et Cours. Suit contient les identifiants de Etudiant et de Cours. Suit.NomC est un identifiant externe sur Cours. BDA 4.13
Identifiants externes (suite) Si la relation référencée possède plusieurs identifiants, il faut préciser lequel : Etudiant (AVS, N inscript, nom, prénoms, adresse) identifiants : AVS N inscript Suit (N Etud, NomC) identifiants externes : N Etud référence un Etudiant.N inscript NomC référence un Cours BDA 4.14
Vérification de l'intégrité référentielle automatiquement, par le SGBD Si un utilisateur veut entrer (INSERT) un tuple dans Suit avec un NomC qui n'existe pas dans Cours refus Si un utilisateur veut modifier (UPDATE) le nom du cours d'un tuple dans Suit avec un NomC qui n'existe pas dans Cours refus BDA 4.15
Vérification de l'intégrité référentielle Si un utilisateur veut supprimer (DELETE) un tuple de Cours pour lequel il existe des tuples dans Suit refus? détruire les tuples de Suit correspondants? mettre à NULL la valeur de NomC dans Suit? Si un utilisateur veut mettre à jour (UPDATE) le nom d'un cours pour lequel il existe des tuples dans Suit refus? propager la mise à jour de NomC dans Suit? BDA 4.16
Domaines de valeurs Un domaine est un ensemble de valeurs atomiques que peut prendre un attribut Exemples de domaines : Dnom : chaînes de caractères de longueur maximale 30 Dâge : entiers compris entre 16 et 65 Dcouleur : {"bleu", "vert", "jaune"} DétatCivil : {"célibataire", "marié", "veuf", "divorcé"} BDA 4.17
Définition d'une relation Une relation est définie par : son nom sa liste de couples <nom d'attribut : domaine> son (ses) identifiant(s) ses identifiants externes s'il en existe la définition de sa sémantique (phrase en français) Exemple : Etudiant (N Etud : Dnum, Nom : Dnom, Prénom : Dnom, Age : Dâge) Identifiant : N Etud Définition : tout étudiant actuellement inscrit BDA 4.18
Contraintes de modélisation Les notions d'attribut multivalué ou complexe n'existent pas dans le modèle relationnel. Il faut donc les modéliser autrement. Pour un attribut monovalué complexe, il faut choisir entre le composé ou les composants Pour un attribut multivalué, il faut créer une autre relation (ceci pour chaque attribut multivalué) BDA 4.19
Représentation d'attribut monovalué complexe Soit pour Personne adresse : nom-rue, n, ville, NPA Solution 1 : un attribut par composant : Personne (AVS, nom,, nom-rue, n, ville, NPA) "Rue de Bourg", "2", "Lausanne", "1003" il est éventuellement possible de définir par ailleurs une vue restituant la notion globale d'adresse Solution 2 : un attribut adresse, de domaine : chaine de caractères Personne (AVS, nom,, adresse) "Rue de Bourg 2, Lausanne, 1003" le système ignore nom-rue, n, ville et NPA BDA 4.20
Représentation d'attribut multivalué Exemple : mémoriser les différents prénoms des étudiants Mauvaise modélisation : plusieurs attributs Etudiant (N Etud, nom, prénom1, prénom2, ) 136 Duval Jean Marie 101 Rochat Annie NULL 253 Martin Annie Claudine Bonne modélisation : créer une relation supplémentaire Etudiant (N Etud, nom) EtudPrénoms ( N Etud, prénom ) 136 Jean 136 Marie 101 Annie 253 Annie 253 Claudine identifiant externe : N Etud référence Etudiant BDA 4.21
Représentation d'attribut multivalué (2) Les prénoms sont ordonnés => Autre bonne modélisation Etudiant (N Etud, nom) EtudPrénoms2 ( N Etud, N prénom, prénom ) identifiants : (N Etud + N prénom) (N Etud + prénom) identifiant externe : N Etud référence Etudiant EtudPrénoms2 ( N Etud, N prénom, prénom ) 136 1 Jean 136 2 Marie 101 1 Annie 253 1 Annie 253 2 Claudine BDA 4.22
Cas d'attribut multivalué et complexe Même solution que pour un attribut simple multivalué : création d'une nouvelle relation Exemple : Personne avec téléphones (intitulé, numéro) Personne ( AVS, nom, adresse, ) PersTel ( AVS, intitulé, numéro ) identifiant externe : AVS référence Personne BDA 4.23
Récapitulatif Un schéma relationnel se compose : pour chaque relation de : nom de la relation définition attributs + domaines identifiant(s) éventuellement identifiant(s) externe(s) contraintes d'intégrité associées et des autres contraintes d'intégrité qui portent sur plusieurs relations. BDA 4.24
Exemple de schéma relationnel Schéma FormaPerm (institut de formation permanente) Domaines : Dnom : chaînes de caractères de longueur inférieure à 30 Dch100 : chaînes de caractères de longueur inférieure à 100 Dannée : [1970 : 1990 ] Dnote : [0.0 : 20.0 ] Ddate : [1 :31 ] / [1 :12 ] / [1920 :2010 ] BDA 4.25
Diagramme relationnel Personne n? P nom adr PersonnePr?noms n? P n? pr?nom pr?nom Etudiant Enseignant Etudiant- Etudes n? E ann?e dipl me n? P n? E daten Inscrit n? E nomc Obtenu n? E nomc note ann?e n? P tel statut banque agence compte Cours Pr?requis nomc cycle n? Ens nomc nomcpr?requis BDA 4.26
Relation : Personne Attributs: n P : entier sans nul nom : Dnom sans nul adr : Dch100 sans nul Identifiant: (n P ) Définition: tout étudiant et tout enseignant de l'institut (état actuel). Relation : PersonnePrénoms Attributs: n P : entier sans nul n prénom : entier sans nul prénom : Dnom sans nul Identifiants: (n P + prénom ) (n prénom + prénom ) Identifiant externe: n P référence une Personne Définition: prénoms des personnes BDA 4.27
Relation : Etudiant Attributs: n P : entier sans nul n E : entier sans nul daten : Ddate sans nul Identifiants: (n E ) (n P ) Identifiant externe : n P référence une Personne Définition: tout individu qui est actuellement inscrit à l'institut, ou qui a déjà passé avec succès un des cours de l'institut Relation : EtudiantEtudes Attributs: n E : entier sans nul année : Dannée sans nul diplôme : Dnom sans nul Identifiant: (n E + diplôme ) Identifiant externe : n E référence un Etudiant.n E Définition: études antérieures des étudiants BDA 4.28
Relation : Enseignant Attributs: n P : entier sans nul tel : entier sans nul statut : Dnom sans nul banque : Dnom sans nul agence : Dnom sans nul compte : entier sans nul Identifiant: (n P ) Identifiant externe : n P référence une Personne Définition: tout individu assurant actuellement un ou plusieurs cours à l'institut Relation : Cours Attributs: nomc : Dnom sans nul cycle : entier sans nul n Ens : entier sans nul Identifiant: (nomc ) Identifiant externe : n Ens référence un Enseignant Définition: tout cours actuellement offert par l'institut BDA 4.29
Relation : Obtenu Attributs: n E : entier sans nul nomc : Dnom sans nul note : Dnote sans nul année : Dannée sans nul Identifiant: (n E + nomc ) Identifiants externes : n E référence un Etudiant.n E nomc référence un Cours Définition: l'étudiant n E a réussi le cours nomc telle année et a obtenu telle note Relation : Inscrit Attributs: n E : entier sans nul nomc : Dnom sans nul Identifiant: (n E + nomc ) Identifiants externes : n E référence un Etudiant.n E nomc référence un Cours Définition: actuellement, l'étudiant n E est inscrit au cours nomc BDA 4.30
Relation : Prérequis Attributs: nomc : Dnom sans nul nomcprérequis : Dnom sans nul Identifiant: (nomc + nomcprérequis ) Identifiants externes : nomc référence un Cours nomcprérequis référence un Cours Définition: le cours nomcprérequis est un prérequis pour le cours nomc Contrainte d'intégrité: dans tout tuple, nomcprérequis doit être différent de nomc BDA 4.31
FormaPerm : contraintes d'intégrité Pour tout tuple de Prérequis <nomc, nomcprérequis>, le cycle de nomcprérequis dans Cours doit être inférieur ou égal à celui de nomc Pour tout tuple de EtudiantEtudes <n E, année, diplôme>, soit daten la date de naissance de l'étudiant n E dans la relation Etudiant, alors : daten < année BDA 4.32
Contraintes d'intégrité (suite) Pour tout tuple de Etudiant : cette-année - daten >= 18, où cette-année est la variable du système indiquant l'année en cours Pour tout tuple de Obtenu <n E, nomc, note, année>, soit daten la date de naissance de l'étudiant dans la relation Etudiant, alors: daten < année Pour tout tuple de Inscrit <n E, nomc>, le n E doit exister dans Obtenu associé à tous les cours existants dans Prérequis associés à nomc. BDA 4.33