L2A Semestre 4 Mehdi Benzine http://bddinfo.e-monsite.com Le modèle relationnel L2A Semestre 4 Mehdi Benzine http://bddinfo.e-monsite.com
Rappel L’approche "bases de données" Modélisation des données Éliminer la redondance des données Centraliser et organiser correctement les données Plusieurs niveaux de modélisation Outils de conception Qu'est-ce qu'une base de données ? Collection de données structurées Interrogeable et modifiable par des langages de haut niveau (proches du langage naturel) Partagée par plusieurs applications/utilisateurs Logiciel de Système de Gestion de Bases de Données (SGBD) Factorisation des modules de contrôle des applications: interrogation, gestion des pannes, confidentialité, partage des données… Administration facilitée des données
Rappel Objectifs des SGBD Indépendance physique des données Indépendance logique des données Manipulation simple Gestion des vues Optimisation des questions Gestion de la cohérence Gestion des pannes Concurrence d’accès Gestion de la confidentialité Standards
Le modèle relationnel Proposé par E.F Codd en 1970 (publication ACM) Modèle logique basé sur la théorie mathématique des relations R(X, Y) ={(X, Y) / X, Y entiers et Y divise X} est une relation entre 2 entiers R (NuméroÉtudiant, Nom, Prénom, Note) est une relation entre un numéro d’étudiant, un nom, un prénom et une note. Cette relation caractérise un objet existant. L'ensemble des valeurs que peut prendre une données est un domaine Exemple: Nom = {Benallegue, Smati …} Note = [0, 20]
Le modèle relationnel Relation, Table Colonnes, Attributs, Champs Relation ou table Numéro Étudiant Nom Prénom Note 12432 Benallegue Farid 12 13421 Smati Nabil 17 23632 Ayachi Fatiha 14 … Lignes, Tuples, N-uplets Lignes, Tuples, N-uplets Lignes, Tuples, N-uplets
Propriétés 2 propriétés des tuples à respecter (une relation est un ensemble de tuples) L’unicité des tuples: il ne peut pas y avoir de tuples identiques (chaque tuple est unique) L’ordre des tuples: l’ordre des tuples n’a pas d’importance, c’est la même occurrence 3 propriétés des attributs à respecter Indivisibilité: Les données ne sont pas décomposables Domaine unique: les attributs ne peuvent prendre n’importe quelle valeur (intervalle, type de données) Ordre: l’ordre des attributs n’a pas d’importance
Domaine Un domaine est un ensemble de valeurs. Entier Réel Booléen Chaîne de caractères Date Couleur {vert, blanc, rouge, jaune, noir, bleu} … Etudiant(NuméroEtudiant: int, nom: String, Prénom: String, Note: real[0, 20])
Contraintes d’intégrité Un ensemble de règles d'intégrité structurelle permet de faciliter la gestion de la cohérence des données. Ces règles sont énoncées par des assertions sur les relations et les attributs. De façon générale : il est extrêmement important de déclarer toutes les contraintes d’intégrité. Permet ensuite de se reposer sur le SGBDR pour la cohérence.
Clé primaire Puisque chaque tuple doit être unique, à chaque tuple est associée une clé unique, définie au niveau de la relation. Une clé est un ensemble minimal d'attributs dont la connaissance des valeurs permet d'identifier un tuple de façon unique au sein de la relation considérée. Une clé n'est pas forcément un attribut unique.
Clé primaire On choisi une clé parmi les clés possibles (clés candidates) pour identifier chaque tuple : c'est la clé primaire. Ce choix est guidé par la sémantique de la relation. Exemple: Pour une relation étudiant choisir Numéro Étudiant et non pas Numéro d’Identification National. Par convention, on représente la clé primaire en la soulignant dans l'énoncé de la relation.
Exemple Étudiant (NuméroEtudiant, Nom, Prénom). On aurait pu choisir le couple (Nom, Prénom) mais la simplicité pousse à prendre NuméroEtudiant. Notes (NuméroEtudiant, CodeUE, note). La clé minimale (comprenant le moins d'attributs possible) doit être favorisée.
Contrainte d'unicité La définition d'une clé primaire contient une contrainte d'unicité. On peut aussi spécifier que la valeur d'un (groupe d'attribut doit être unique, c'est-à-dire que deux tuples ne peuvent avoir la même valeur pour cet attribut. Exemple : Film (NumFilm, Titre, Réalisateur, Année). NumFilm est la clé primaire mais on peut (doit!) spécifier que le couple (Titre, Réalisateur) est unique.
Contrainte de référence Pays(Nom, Devise, Capitale, Superficie) Devise(Numéro, NbPieces, NbBillets, Nom) Le Pays référence sa monnaie via la clé primaire de la relation Devise : les valeurs de l'attribut devise de la relation Pays sont les valeurs de l'attribut numéro de la relation Devise. Exemple: Pays('Algérie', 4, 'Alger', 2381741) Devise(4, 7, 5, 'dinar'),
Clé étrangère Une contrainte référentielle exprime un lien obligatoire entre deux relations. Une clé étrangère (ex.: devise) est un groupe d'attributs dans une relation R (ex.: Pays) qui doit correspondre à la clé primaire d'une autre relation R' (ex.: Devise). Une relation possède une clé primaire, peut spécifier plusieurs clés étrangères. Convention d'écriture: italique.
Clé étrangère (suite) Un attribut peut être à la fois une clé primaire et étrangère : Film(NumFilm, Titre, Année), Acteur(NumActeur, Nom, Prénom), Casting(NumFilm, NumActeur, Personnage). Un acteur peut jouer dans plusieurs films et un film peut contenir plusieurs acteurs : lien n-n.
Clé étragère (suite) Pour maintenir la cohérence de la base de données, la contrainte d'intégrité référentielle impose que : Lors d'une insertion, la valeur des attributs constituant la clé étrangère doit exister dans la relation référencée Lors d'une suppression dans la relation référencée les tuples référençants doivent disparaître
Docteurs Prescriptions Patients Médicaments 17 Docteurs Id-D Nom Prénom 1 Kara Salim 2 Slimani Aicha 3 Abaoui Djamil …. …….. …… Prescriptions Id-C Ligne Id-M Posologie 1 12 1 par jour 2 5 10 gouttes 8 2 par jour 3 2 gouttes …. ………… Consultations Id-D Id-P Id-C Date Prix 1 2 15 juin 250 12 août 180 3 13 juillet 350 4 1 mars Patients Id-P Nom Prénom Ville 1 Touil Karim Sétif 2 Touati Nabila Ain Arnat 3 Kara Asma Ouricia 4 Allal Khaled NULL …. ……. Médicaments Id-M Nom Description 1 Aspegic 1000 …………………………….. 2 Fluisédal 3 Mucomyst …. ……..
Contraintes de valeur d'attributs On ne connaît pas forcément les valeurs de tous les attributs lors de l'insertion d'un tuple. Convention : valeur NULL Contrainte de non-vacuité : un attribut ne doit pas être NULL. Une clé primaire ne doit jamais être NULL. Contrainte sur la valeur d'un attribut : contrainte de domaine extension : saison IN ('hiver', 'printemps', 'été’, 'automne’) restriction : durée NOT NULL AND durée > 0
Langage SQL Le langage SQL permet de manipuler les données et les schémas relationnels. SQL se compose de plusieurs sous-ensembles parmi lesquels: Langage de manipulation de données (Data Manipulation Language DML) permet l'interrogation, l'insertion, la modification et la suppression de tuples. Langage de définition de données (Data Definition Language DDL) permet la création, la modification, et la suppression d'objets (tables, vues, index …)