Le modèle relationnel

Documents pareils
Bases de Données Relationnelles. Le Modèle Relationnel

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Les bases de données

Modélisation Conceptuelle. Partie 2: Le modèle Entité-Association

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Chapitre 1 Généralités sur les bases de données

IFT3030 Base de données. Chapitre 1 Introduction

Exemple accessible via une interface Web. Bases de données et systèmes de gestion de bases de données. Généralités. Définitions

Bases de données relationnelles

Cours Base de données relationnelles. M. Boughanem, IUP STRI

Bases de Données relationnelles et leurs systèmes de Gestion

Modèle conceptuel : diagramme entité-association

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Les bases de données Page 1 / 8

Bases de Données Avancées

BASES DE DONNEES ORIENTEES OBJETS BDA10.1

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

PROJET 1 : BASE DE DONNÉES REPARTIES

Bases de Données. Plan

Bases de Données. Le cas des BD relationnelles ouverture sur les BD relationnelles spatiales Séance 2 : Mise en oeuvre

I4 : Bases de Données

16H Cours / 18H TD / 20H TP

Rappel sur les bases de données

Bases de données élémentaires Maude Manouvrier

Olivier Mondet

INTRODUCTION AUX TECHNOLOGIES D INGENIERIE DES DONNEES DIRIGEE PAR LES MODELES

Langage SQL : créer et interroger une base

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

INTRODUCTION AUX BASES de DONNEES

Conception des bases de données : Modèle Entité-Association

1 Introduction et installation

Le langage SQL (première partie) c Olivier Caron

Bases de données - Modèle relationnel

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Introduction aux Bases de Données

Introduction au Système de Gestion de Base de Données et aux Base de Données

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

Information utiles. webpage : Google+ : digiusto/

Bases de données relationnelles : Introduction

Création et Gestion des tables

Introduction aux Bases de Données

Le langage SQL Rappels

SQL Historique

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Présentation du module Base de données spatio-temporelles

Conception d une base de données

Modélisation de bases de données : Le modèle relationnel

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

Compétences Business Objects

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Notes de cours : bases de données distribuées et repliquées

Application web de gestion de comptes en banques

Le Langage SQL version Oracle

Java DataBaseConnectivity

Intégrité sémantique dans les bases de données relationnelles

Introduction à JDBC. Accès aux bases de données en Java

Faculté des sciences de gestion et sciences économiques BASE DE DONNEES

PHP 5. La base de données MySql. A. Belaïd 1

Bases de données relationnelles & SQL

TP3 : Creation de tables 1 seance

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

1. Base de données SQLite

INTEGRITE ET BD ACTIVES

Introduction aux bases de données Cours 1 : Généralités sur les bases de données

Ecole des Hautes Etudes Commerciales HEC Alger. par Amina GACEM. Module Informatique 1ière Année Master Sciences Commerciales

BTS/CGO P10 SYSTEME INFORMATION Année

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

CHAPITRE 1. Introduction aux bases de données

Bases de données Cours 1 : Généralités sur les bases de données

PHP 4 PARTIE : BASE DE DONNEES

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

Modélisation conceptuelle des données Responsable: Dominique Schneuwly, Regis Caloz

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Bases de Données Avancées

II. Modèle conceptuel le modèle entité-association

Le Langage De Description De Données(LDD)

Modélisation des données

SQL MAP. Etude d un logiciel SQL Injection

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Vincent Augusto

Gestion des bases de données

Bases de données et sites WEB Licence d informatique LI345

Intégrité des données

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Systèmes d information et bases de données (niveau 1)

Chapitre 10. Architectures des systèmes de gestion de bases de données

Dossier I Découverte de Base d Open Office

MERISE. Modélisation et Conception de Systèmes d Information

Administration des bases de données. Jean-Yves Antoine

La problématique de la Préservation des Bases de Données. Olivier ROUCHON CINES Groupe PIN Jeudi 7 Octobre

Modélisation et Gestion des bases de données avec mysql workbench

Bases de Données OLAP

COURS de BASES de DONNEES

Bases de données et sites WEB

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

CREATION WEB DYNAMIQUE

1. LA GESTION DES BASES DE DONNEES RELATIONNELLES

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Transcription:

COURS BASES DE DONNEES Partie 3 Le modèle relationnel Bases de données relationnelles Le modèle relationnel! modèle de niveau logique " choix de la clé primaire " index...! 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, Postgres, Sybase, dbase, Access, SQLserver, ) et SIG BD 4.3 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, clé secondaire " SQL - définition et modification du schéma " SQL - entrée et mise à jour des données " SQL - requêtes BD 4.4 Le modèle relationnel formel Concepts de base Monde réel > Relationnel! objet > relation! propriété " simple, monovaluée > attribut! lien " binaire, sans attribut > identifiant externe! représentation multiple > / BD 4.6

Concepts de base (suite) nom de la relation schéma tuple ou occurrence (N Etud, nom, prénom, age) noms des attributs N Etud nom prénom age 136 Rochat Jean 19 253 Aubry Annie 20 101 Duval André 21 147 Rochat Marc 21 population BD 4.7 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) BD 4.8 Règles de structuration! attributs : simples et monovalués (domaine de valeurs atomiques)! structure plate régulière 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 x x x x y y y y x x x x x x w w w w ww N Etud nom prénom age 136 Rochat Jean 19 253 Aubry Annie NULL x, y : une et une seule valeur atomique par attribut INTERDIT BD 4.9 101 Duval NULL 21 147 Rochat Marc 21 BD 4.10 Valeurs nulles (2)! NULL n'a pas de sémantique précise " la valeur existe, mais est inconnue # prénom, âge de " non applicable # nom de jeune fille pour un homme " valeur n'existe pas (encore) # résultat d'une future course "! Impact sur les requêtes et les traitements " SELECT nom, prénom FROM WHERE âge=21 " salaire+commission " Que faire si âge ou commission est nul?! Eviter autant que possible les valeurs nulles Valeurs nulles (3)! SQL adopte la logique ternaire " Vrai, Faux, Inconnu (UNKNOWN)! SELECT * FROM WHERE âge=21 " si âge=21 => Vrai " si âge!"1 => Faux " si âge=null => Inconnu! Résultat du SELECT : les tuples pour lesquels la condition du WHERE est vraie (pas les inconnus)! Les opérateurs Booléens (ET, OU, NON) sont étendus à la logique ternaire. => valeur par défaut BD 4.11 BD 4.12

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 Identifiant! Modèle formel : jamais de tuple en double! Il existe donc toujours un identifiant : dans le cas le pire, c'est l'ensemble des attributs de la relation! Il peut exister plusieurs identifiants N Etud nom prénom age 136 Rochat Jean 19 253 Aubry Annie NULL 101 Duval NULL 21! ( AVS, N inscription, nom, prénom, adresse, tél ) " AVS " N inscription " ( nom + prénom ) 147 Rochat Marc 21 BD 4.13 BD 4.14 Identifiants externes Identifiant externe - Exemple! Décrivent les liens binaires entre les relations Cours ( NomC, horaire, prof)! ( N, nom, prénoms, adresse, tél) Cours ( Nom, horaire, prof ) Suit ( N Etud, NomC ) N Etud référence un NomC référence un Cours! La valeur de N Etud dans Suit est : " celle de l'identifiant d'un tuple existant de (intégrité référentielle) " ou éventuellement nulle (si attribut facultatif)! Même contrainte pour NomC de Suit 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 et Cours. Suit contient les identifiants de et de Cours. Suit.NomC est un identifiant externe sur Cours. BD 4.15 BD 4.16 Identifiants externes (suite)! Si la relation référencée possède plusieurs identifiants, il faut préciser lequel (AVS, N inscript, nom, prénoms, adresse) identifiants : AVS N inscript Suit (N Etud, NomC) identifiants externes : N Etud référence un.n inscript NomC référence un Cours 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 BD 4.17 BD 4.18

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? BD 4.19 Domaines de valeurs! Un domaine est un ensemble de valeurs 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é"} " Ddate : dates entre le 01/01/1980 et le 31/12/2010 BD 4.20 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 : " (N Etud : Dnum, Nom : Dnom, " Prénom : Dnom, Age : Dâge) " Identifiant : N Etud " Définition : tout étudiant actuellement inscrit BD 4.21 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é) BD 4.22 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" Représentation d'attribut multivalué Exemple : mémoriser les différents prénoms des étudiants! Mauvaise modélisation : plusieurs attributs (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 (N Etud, nom) EtudPrénoms ( N Etud, prénom ) 136 Jean 136 Marie 101 Annie 253 Annie 253 Claudine " le système ignore nom-rue, n, ville et NPA identifiant externe : N Etud référence BD 4.23 BD 4.24

Représentation d'attribut multivalué (2)! Les prénoms sont ordonnés (attribut multivalué de type liste) => Autre bonne modélisation (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 EtudPrénoms2 ( N Etud, N prénom, prénom ) 136 1 Jean 136 2 Marie 101 1 Annie 253 1 Annie 253 2 Claudine BD 4.25 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 BD 4.26 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. 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 ] BD 4.27 BD 4.28 Diagramme relationnel Conventions pour les diagrammes! Identifiant " souligné " S il y a plusieurs identifiants, alors ajouter un tiroir spécial identifiants n Etud nom prénom age adresse! Identifiant externe " une flèche par identifiant externe id: n Etud id: nom, prénom BD 4.29 BD 4.30

Schéma FormaPerm! Relation : Personne 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 n prénom : entier sans nul prénom : Dnom sans nul Identifiants: (n P + prénom ) (n P + n prénom) Identifiant externe: n P référence une Personne Définition: prénoms des personnes BD 4.31! Relation : 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 : Etudes 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.n E Définition: études antérieures des étudiants BD 4.32! Relation : Enseignant 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 BD 4.33! 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.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.n E nomc référence un Cours Définition: actuellement, l'étudiant n E est inscrit au cours nomc BD 4.34 FormaPerm : contraintes d'intégrité! 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! 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 Etudes <n E, année, diplôme>, soit daten la date de naissance de l'étudiant n E dans la relation, alors : daten < année BD 4.35 BD 4.36

Contraintes d'intégrité (suite)! Pour tout tuple de : 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, 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. BD 4.37