Introduction aux bases de données Cours 2. : Le modèle relationnel et les bases de données relationnelles Vincent Martin email : vincent.martin@univ-tln.fr page personnelle : http://lsis.univ-tln.fr/~martin/ Master 1. LLC Université du Sud Toulon - Var 16 novembre 2012 M1 - LLC 1/22
Le modèle relationnel Étudié dans les années 60-70 par Edgar Frank Codd Basé sur la théorie des ensembles Pose les fondations des SGBD Modèle largement dominant dans le monde des BD Simple et efficace Remarque On parle de BDR et de SGBDR Une base de données relationnelle est un ensemble de relations (tables) nommées M1 - LLC 2/22
Architecture ANSI-SPARC (Charles Bachman, 1965) Utilisateur Administrateur Developpeur Schéma externe Schéma externe Schéma externe Vue de la BD pour un groupe d utilisateurs. Vision simplifiée des données. Organisation des données (sur disque) et accès au support physique. Schéma conceptuel Schéma interne BD Description sémantique de l ensemble des données (schéma complet). Aucun détail d implantation. M1 - LLC 3/22
Les relations (tables) (1/2) Notation R(Attribut 1,Attribut 2,...,Attribut n ) Exemple : la relation ETUDIANT (vision relationnelle) exemple :ETUDIANT (ID, NOM, PRENOM, DATE NAISSANCE, PHOTO) Exemple : la relation ETUDIANT (vision tabulaire) ID NOM PRENOM DATE NAISSANCE PHOTO 1 Durand Pierre 14/10/1989 2 Dupond Marie 15/02/1988............... M1 - LLC 4/22
Les relations (tables) (2/2) Caractéristiques d une relation Chaque relation contient un ensemble d attributs (colonnes) Chaque attribut a un type (ID : numeric ; name : varchar ; photo : jpeg) Chaque tuple (n-uplet) a une valeur pour chaque attribut Schéma vs. Instance (donnée) Le schéma décrit la structure des relations Une instance est le contenu à un instant t de la BD M1 - LLC 5/22
Le schéma relationnel (1/2) Il représente la structure de la base de données et contient l ensemble des relations (mais sans les données). Le schéma relationnel décrit le nom de chaque relation les attributs de chaque relation le nom et le type des attributs Attention : le schéma ne contient pas les données Le schéma représente simplement la structure de la BD. On parle de meta-données. Le schéma permet de (i) de valider les données et (ii) d apporter des informations sémantiques à celles-ci. M1 - LLC 6/22
Le schéma relationnel (2/2) Exemple de schéma relationnel ETUDIANT (ID, NOM, PRENOM, DATE NAISSANCE, PHOTO, #FILIERE) FILIERE (CODE, CAPACITE) Attention Le schéma se définit à l avance! i.e. : on ne peut pas ajouter des données (par exemple des étudiants) avant d avoir défini le schéma. Le schéma se réfléchit indépendamment de toute considération d implantation. On parle de conception et de nombreuses méthodes ont été développées pour garantir un schéma relationnel correct (cours 4.) M1 - LLC 7/22
Les attributs (colonnes) Définition Un attribut est un identificateur nommé décrivant une information stockée dans la base de données Exercice : quels sont les attributs de la relation ETUDIANT? ID NOM PRENOM DATE NAISSANCE PHOTO 1 Durand Pierre 14/10/1989 2 Dupond Marie 15/02/1988............... M1 - LLC 8/22
Les types Définition Un type de donnée définit l ensemble des valeurs que peut prendre une donnée Quelques données et leur type donnée type BD description nom varchar(50) mot, éventuellement composé âge integer chiffre (entier, i.e. -1, 0, 1, 2, 3,... ) distance (en m) float nombre (réel, i.e. -5.76, 1.323, 8.231,... ) photo blob des 0 et des 1 http://dev.mysql.com/doc/refman/5.0/fr/column-types.html On peut maintenant typer les attributs de la relation ETUDIANT : ETUDIANT (ID : integer, NOM : varchar(50), PRENOM : varchar(50), DATE NAISSANCE : date, PHOTO : blob) M1 - LLC 9/22
Les domaines Définition a a. Source : http://docs.postgresqlfr.org/8.4/sql-createdomain.html Un domaine est essentiellement un type de données avec des contraintes optionnelles (restrictions sur l ensemble de valeurs autorisées). L utilisateur qui définit un domaine devient son propriétaire. Exemples Le genre : {Homme, Femme} Les PCS : {Employés, Ouvriers, Cadres,...} Domaines prédéfinis L ensemble des booléens {TRUE, FALSE} L ensemble des chaînes de caractères (texte),... un type forme un domaine M1 - LLC 10/22
Les tuples (enregistrements) Définition Un tuple ou n uplet ou un enregistrement est une liste de valeurs ordonnées. Concrètement, c est une ligne dans une table Exemple de tuple {123, Durand, Pierre, 14/10/1989, } (à regarder avec la relation ETUDIANT) Remarques Chaque entrée du tuple prend une valeur pour chaque attribut de la relation Cette entrée doit être du type défini dans le schéma On ne peut pas mettre un nombre là où du texte est attendu (c est l intérêt du schéma) M1 - LLC 11/22
Une valeur spéciale : NULL Que faire lorsqu une valeur d un tuple n est pas définie? Par exemple lorsqu un étudiant n a pas de photo? on utilise la valeur spéciale NULL NULL peut s utiliser comme valeur pour n importe quel type à partir du moment où elle est autorisée dans le schéma Exemple {Jean, Denis, 19/11/1986, NULL} indique que cet étudiant n a pas de photo définie M1 - LLC 12/22
Les contraintes d intégrité Définition Une contrainte d intégrité (structurelle) définit la règle que doivent respecter les tuples d une relation. Les contraintes garantissent la cohérence des données. Les contraintes se définissent au niveau du schéma Gérées par le SGBD Lorsqu une contrainte est définie, le SGBD garantit son respect. Si la contrainte est violée, le système refusera l opération Exemples Contrainte d unicité : garantit l unicité d une valeur d un tuple parmi l ensemble des tuples d une même relation Contrainte de taille : garantit la taille d une valeur d un attribut. Exemple : NOM : varchar(50) le nombre de caractères d un nom ne peut dépasser 50 M1 - LLC 13/22
Les clés Définition Une clé permet de caractériser un tuple dans son intégralité. Sa valeur est unique pour l ensemble des tuples d une même relation Notation ETUDIANT (ID : integer,...) ou ETUDIANT (ID* : integer,...) Intérêt Chaque enregistrement doit avoir un identifiant permettant de le retrouver facilement et d en accélérer les manipulations. Il convient donc de choisir quelle sera la clé (qui peut éventuellement être composée). Attention Une clé n est pas un type. Autrement dit, elle peut s appliquer à un entier, une chaine de caractères etc. M1 - LLC 14/22
Les clés primaires Exercice Selon-vous, pour la relation ETUDIANT : Le prénom peut-il être une clé? L adresse email peut-elle être une clé? La composition nom-prénom peut-elle être une clé? Clé primaire Lorsque plusieurs clés sont possibles (clés candidates), la clé retenue pour identifier un tuple est appellée clé primaire. M1 - LLC 15/22
Plusieurs tables & références entre les tables Problème Nous avons représenté des étudiants. Nous souhaitons maintenant représenter des filières (L1, L2, L3, M1, M2) en admettant qu un étudiant puisse appartenir à une et une seule filière. Une filière a un nom et une capacité. Solutions Ajouter dans la relation ETUDIANT ces deux informations Ajouter dans la relation FILIERE les informations concernant les etudiants qui la suivent Créer la relation FILIERE et référencer dans la relation ETUDIANT la relation FILIERE. Chaque étudiant pourra a ainsi être associé à une filière. a. Mais pas obligatoirement, dans ce cas on utilisera... la valeur NULL M1 - LLC 16/22
Les clés étrangères (1/2) Définition Une clé étrangère est une contrainte qui garantit l intégrité référentielle entre deux tables. Une clé étrangère d une table est primaire (ou au moins unique) d une autre. Exemple ETUDIANT ID NOM PRENOM NAISSANCE PHOTO #FILIERE 1 Durand Pierre 14/10/1989 M2 2 Dupond Marie 15/02/1988 M1 FILIERE CODE CAPACITE L1 300 L2 200 L3 150 M1 100 M2 50 M1 - LLC 17/22
Les clés étrangères (2/2) Notation ETUDIANT (ID, NOM, PRENOM, DATE NAISSANCE, PHOTO, #FILIERE) Remarque Contrainte référentielle : si la valeur change d un côté, elle change de l autre automatiquement Une table peut avoir plusieurs clés étrangères (ex. : un étudiant peut être dans une filière, être affilié à une sécu... ) M1 - LLC 18/22
En pratique M1 - LLC 19/22
Comment choisir les relations? Règle 1 : partir du monde réel Représenter les objets du monde réel et les classer par groupe. Pour chaque type d objet, identifier les attributs Règle 2 : cohérence des données Une fois les types d objets identifiés, écrire les relations et valider que chaque attribut soit une caractéristique unique de ces objets. Dans le cas contraire, il faut certainement créer deux relations Ex. : Une filière n est pas une caractéristique propre d un étudiant 2 relations Règle 3 : non duplication Pour des raisons de performance et de cohérence (mise à jour, suppression), une même donnée ne doit pas être dupliquée. Pour résoudre ce problème, on peut référencer les données en utilisant des clés étrangères. M1 - LLC 20/22
M1 - LLC 21/22
Ce qu il faut retenir Éléments du modèle relationnel : relations, attributs, type, tuple Une BDR a un schéma et les données respectent ce schéma Toute relation doit avoir une clé primaire Les contraintes permettent de garantir la cohérence des données (consistance, sémantique,... ) Ne pas dupliquer de données, préférer plusieurs relations et des références entre celles-ci (clés étrangères) M1 - LLC 22/22