Chapitre 3 Le modèle relationnel



Documents pareils
UML et les Bases de Données

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

I4 : Bases de Données

Bases de Données. Plan

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

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

Information utiles. webpage : Google+ : digiusto/

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

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

UML. Diagrammes de classes (suite) Delphine Longuet.

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

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

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

Bases de données relationnelles

Bases de Données Avancées

Bases de données. Chapitre 1. Introduction

1 Introduction et installation

Rappel sur les bases de données

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

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

Modèle conceptuel : diagramme entité-association

Les bases de données

Méthode d analyse Merise

16H Cours / 18H TD / 20H TP

Introduction aux Bases de Données

Modèle Entité/Association

Bases de données relationnelles : Introduction

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

A QUOI SERVENT LES BASES DE DONNÉES?

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

CREATION WEB DYNAMIQUE

Introduction aux bases de données. Généralités sur les bases de données. Fonctions d'un SGBD. Définitions. Indépendance par rapport aux traitements

TP Bases de données réparties

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

A QUOI SERVENT LES BASES DE DONNÉES?

Bases de données avancées Introduction

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

Base de Données et Langage SQL

Concevoir un modèle de données Gestion des clients et des visites

Plan. Exemple: Application bancaire. Introduction. OCL Object Constraint Language Le langage de contraintes d'uml

Le langage SQL Rappels

Systèmes de Gestion de Bases de Données

Langage SQL : créer et interroger une base

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

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

Introduction aux Bases de Données

Java DataBaseConnectivity

Bases de données relationnelles & SQL

Bases de données élémentaires Maude Manouvrier

OpenPaaS Le réseau social d'entreprise

1 Modélisation d une base de données pour une société de bourse

BD réparties. Bases de Données Réparties. SGBD réparti. Paramètres à considérer

Dossier I Découverte de Base d Open Office

Bases de données et sites WEB

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

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

Bases de données. Yamine AIT AMEUR. INPT-ENSEEIHT DIMA 2 Rue Charles Camichel Toulouse Cedex 7

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

Bases de données cours 1

Bases de données - Modèle relationnel

INTRODUCTION AUX BASES de DONNEES

Le Langage De Description De Données(LDD)

COURS de BASES de DONNEES

Construction d un EDD avec SQL 2008 R2. D. Ploix - M2 Miage - EDD - Création

TD/TP PAC - Programmation n 3

IT203 : Systèmes de gestion de bases de données. A. Zemmari zemmari@labri.fr

Cours SGBD 1. Concepts et langages des Bases de Données Relationnelles

Introduction aux bases de données: application en biologie

Université de Bangui. Modélisons en UML

Diagramme de classes

BASES DE DONNEES ORIENTEES OBJETS BDA10.1

Patrice BOURSIER. Professeur, Univ. de La Rochelle. Bases de Données. Notes de cours

Application web de gestion de comptes en banques

UML (Diagramme de classes) Unified Modeling Language

Formation à l utilisation des Systèmes de Gestion de Bases de Données Relationnelles. organisée avec la collaboration du

TP 8: LES OPERATEURS ENSEMBLISTES

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

CONCEPTION Support de cours n 3 DE BASES DE DONNEES

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

Algorithmes d'apprentissage

PROJET 1 : BASE DE DONNÉES REPARTIES

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

Le Langage SQL version Oracle

CATALOGUE FORMATIONS DOMAINE Bases de données

CESI Bases de données

Génération de code à partir d une spécification B : Application aux bases de données

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

TP Contraintes - Triggers

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Introduction aux Systèmes de Gestion de Bases de Données Relationnelles. Olivier Losson

... /5. Bases de Données I (J. Wijsen) 23 janvier 2009 NOM + PRENOM : Orientation + Année : Cet examen contient 11 questions.

Expression des contraintes. OCL : Object C o n t r a i n t L a n g u a g e

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

NF26 Data warehouse et Outils Décisionnels Printemps 2010

Chapitre VIII. Les bases de données. Orientées Objet. Motivation

Modélisation des données

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

Mercredi 15 Janvier 2014

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Transcription:

Modèle relationnel Chapitre 3 Le modèle relationnel Sarah Cohen-Boulakia LRI, Université Paris-Sud 11, Orsay Un modèle pour décrire et manipuler les données d une base de données Inventé par Codd en 1970 (IBM) Le langage SQL est la norme choisie aujourd hui pour créer et interroger une base de données relationnelle 1 2 Base de données relationnelle Un BD relationnelle = un ensemble de relations Une relation est une table qui comporte Des colonnes : attributs Des lignes : n-uplets, tuples (synonymes) Toutes les lignes sont différentes (2 à 2) Relation numss nom prenom 29005579 Quoti Mathilde 14504573 Renzi Paul 17702562 Salout Anne 24902567 Thibo Caroline 3 Schéma, Instance Schéma de relation : nom de relation + nom et type (domaine) de chaque colonne Instance de relation : un ensemble fini de valeurs (i.e. tuples, n-uplets) respectant le schéma de relation Relation Schéma de la relation (numss : int, nom : string, ) Instance : ensemble de toutes les lignes numss nom prenom 29005579 Quoti Mathilde 14504573 Renzi Bastien 17702562 Salout Anne 24902567 Thibo Caroline 4

Cardinalité, Arité Cardinalité d une relation : Nombre de lignes (nb tuples, nb n-uplets) Arité d une relation : Nombre de colonnes Cardinalité : 6, Arité : 3 Relation numss nom prenom 29005579 Quoti Mathilde 14504573 Renzi Bastien 17702562 Salout Anne 24902567 Thibo Caroline 5 Définitions formelles (1/2) Un schéma de relation est formé 1. d un nom R 2. d un ensemble d attributs Att(R)={A1,,An} 3. d un domaine Dom(Ai) pour chaque attribut Ai Att(R) (i [1,n]) (numss : int,, ) L arité de R est le cardinal de Att(R) Le schéma d une Base de données est l union des schéma des relations qui la compose 6 Définitions formelles (2/2) Une instance de relation de schéma R est un sousensemble fini (éventuellement vide) de n-uplets prenant leur valeur dans Dom(A1) x x Dom(An) Soit t un tuple de R, soit A Att(R), on note t(a) la restriction de t sur A Considérons le tuple t=(17902567,payen,olivier) de la relation et considérons l attribut prenom t(prenom) = Olivier La cardinalité d une instance r de R est le nombre de n- uplets de l instance de relation - NB : 2 relations différentes peuvent avoir le même schéma Une instance de base de données B est un ensemble d instances (éventuellement vide) pour chaque relation Ri (1 i m) de B 7 Passage du diag. de classes UML au modèle relationnel Passage d un modèle disposant de deux structures (classes - associations) à un modèle ne disposant que d une seule structure (la relation i.e. la table) Application d un ensemble de règles qui garantissent la cohérence sémantique entre le modèle UML et le modèle relationnel 8

Préliminaire 1 : Les valeurs NULL Préliminaire 2 : Clé étrangère (1/2) Une valeur NULL représente une valeur indéterminée pour un attribut Par définition une clé n est jamais à NULL On évite au maximum les valeurs NULL NumSS Nom Prénom 29005579 Quoti Mathilde 14504573 Renzi Bastien Age Problème : Réponse à la requête Les personnes de plus de 20 ans : 29005579 (Mathilde Quoti)? 32 14 27 NULL 9 Intuition : la valeur d un attribut d une table appartient toujours à l ensemble des valeurs d un attribut d une autre table Exemple (numclient : int, adresse : string, ) (numres : int, clientres : int) clientres clé étrangère clientres de prend ses valeurs dans l attribut numclient de la table : seuls les clients recensés dans la table peuvent faire des reservations 10 Préliminaire 2 : Clé étrangère (2/2) Passage UML relationnel : Classe Soient R et S deux relations. L ensemble d attributs X de R forme une clé étrangère de R ssi il existe Y clé de S tel que R[X] S[Y] (numclient : int, adresse : string, ) (numres : int, clientres : int) [ClientRes] [numclient] NB : Un SGBD n interdit pas d avoir des valeurs NULL dans les clés étrangères Règles de passage pour une classe Classe Relation de même nom, avec les mêmes attributs que la classe + on précise les types (domaines) L identifiant de la classe devient la clé de la relation Modèle UML (numss : int, nom :string, ) Modèle relationnel 11 12

Associations 1:1, 1:N, N:M On regarde les valeurs maximum des cardinalités 1:1 MARIES : Un homme n est marié qu à une femme et une femme n a qu un mari (on ne gère pas les re-mariages) 1:N ACHETE ((1,1),(1,N)) et CONCERNE ((1,1), (0,N)) N:M A_POUR_ETAPE : un trajet est constitué de plusieurs étapes (1,N) et une étape peut être visitée par plusieurs trains (1,M) A_POUR_ETAPE MARIES ACHETE 1:1 1:N N:M PERSONNE PERSONNE TRAJET ETAPE 13 Passage association de type N:M (définition) Association N:M relation de même nom, avec les attributs de l association La clé est donnée par l ensemble des clés de chaque relation qui sont aussi des clés étrangères Modèle UML Modèle relationnel ADRESSE idad {PK}: int numrue : int nomrue : string codep : int ville : string 1,N 1,N age : int ADRESSE(idAd: int, numrue: int, nomrue: string, codep: int, ville : string) (numss: int,,, age : int) HABITE(numSS : int, idad : int) 14 Passage association de type N:M (illustration) ADRESSE(idAd : int, numrue : int, nomrue : string, codep: int, ville: string) (numss : int,,, age : int) HABITE(numSS : int, idad : int) ADRESSE idad numrue nomrue 001 18 Boileau 002 45 Gde Rue codep 91400 91400 ville Orsay Saclay 003 1bis Pl d Italie 75013 Paris 004 32 Fleurs 49000 Angers Olivier habite à Orsay et à Anger Judith habite à Orsay et à Saclay numss nom prenom HABITE numss 17902567 17902567 2780289 2780289 idad 001 004 001 002 15 age 32 14 Passage association de type 1:N (définition) La clé côté 1 devient la clé étrangère côté N (nouvel attribut dans la relation coté N) ----------- numres {PK} : int Classe : int dateres : Date Modèle UML Modèle relationnel 1,N ACHETE 1,1 (numss: int,, ) (numres: int, classe : int, dateres :Date, numss : int) 16

Passage association de type 1:N (clés) (numss: int,, ) (numres: int, Classe : int, dateres : Date, numss : int) Pour chaque réservation il n y a qu un seul Client (1:N) Le numéro du Client est inclus dans la table Le client de la table devra apparaître dans la table Client (clé étrangère) 17 1:N avec Entité Faible (1/2) L entité faible a pour clé sa propre clé + celle de l entité forte (qui est clé étrangère) UML ADRESSE ------ idadd {PK} numrue nomrue codep nomville 1,1 Habite (nom: string,, idad : int, Tel : int) Modèle ADRESSE(idAd: int, numrue: int ) relationnel 1,N ------------- nom {PK} prenom {PK} tel «un client est identifié par son nom, son prénom et son adresse» 18 1:N avec Entité Faible (2/2) L entité faible a pour clé sa propre clé + celle de l entité forte (qui est clé étrangère) (nom: string,, idad : int, tel : int) ADRESSE(idAd: int, numrue: int ) L identifiant du Client est donné par (nom, prenom, idad) idad prend sa valeur dans les adresses de la table ADRESSE (colonne idad) On ne considère que des clients qui ont une adresse dans la table ADRESSE (clé étrangère) 19 2 cardinalités minimales à 1 UML Passage Associations 1:1 Fusion des classes (renommage possible) La clé de l une des relation (au choix) est choisie VEHICULE ------- immatricultaion {PK}: int modele : string marque : string 1,1 1,1 ----- numss {PK} : int VEHICULE_LOUE(immatriculation : int, modele : string, marque : string, numss : int, nom: string, ) Ou bien VEHICULE_LOUE(immatriculation : int, modele : string, marque : string, numss : int, nom: string, ) 20

Passage Associations 1:1 2 cardinalités minimales à 1 UML Fusion des classes (renommage possible) La clé de l une des relation (au choix) est choisie VEHICULE ------- immatricultaion : int modele : string marque : string 1,1 1,1 loue VEHICULE_LOUE(immatriculation : int, modele : string, marque Si deux classes sont très différentes et ont beaucoup : string, numss : int, nom: string, ) d attributs, on peut créer deux tables, l une d elle Ou bien contiendra en plus de ses attributs VEHICULE_LOUE(immatriculation la clé de l autre : int, table modele : string, marque : string, numss : int, nom: (cf. Relation string, prenom 1:N) : string) ----- numss : int 21 Passage : Héritage (définition) Chaque classe fille relation Clé primaire de la classe mère migre dans les relations issues des classes filles et devient clé et clé étrangère RES_FRET ---- qte : int --------- numres {PK}: int classe : string dateres : Date RES_PASSAGER ----- nbpas : int (numres : int, classe : int, dateres : Date) RES_PASSAGER(numRes : int, nbpas : int) RES_FRET(numRes : int, qtetonnes : int) 22 Passage : Héritage (illustration) (numres : int, dateres : Date) RES_PASSAGER(numRes : int, nbpas : int) RES_FRET(numRes : int, QteTonnes : float) La réservation 001 concerne 2 passagers et à été effectuée le 18 Nov 2007 La réservation 002 concerne 10,76 tonnes de marchandise et a été effectuée le 19 Nov 2007 RES_PASSAGER numres classe dateres numres nbpas 001 2 001 1 18/11/2007 RES_FRET 003 4 002 2 19/11/2007 numres qtetonnes 003 2 22/11/2007 002 10,76 004 2 22/11/2007 004 5,00 23 Association n-aire L association n-aire devient une relation dont la clé est formée de l ensemble des clés des classes qui sont toutes clés étrangères Ce processus a pu déjà être fait lors de la modélation (remplacement de l association n- aire par des associations binaires et une nouvelle classe) 24

Cas des cardinalités minimales à 0 (1/3) Cas des relations N:M ADRESSE -------- idadd {PK}: int numrue : int nomrue : string codep : int ville : string 1,N habite 0,N ------------ On stocke des adresses qui ne sont pas forcement celles de clients Aucun changement, les adresses n étant pas associées à des clients n apparaîtrons simplement pas dans la table Habite ADRESSE(idAd : int, numrue :int, nomrue : string, codep : int, ville : string) (numss: int,, ) HABITE(numSS : int, idad : int) 25 Cas des cardinalités minimales à 0 (2/3) Cas des relations 1:N ----------- numres {PK} : int Classe : int dateres : Date 1,N achete 0,1 Une réservation n est pas systématiquement associée à un client (numss: int,, ) (numres: int, classe : int, dateres : Date, numss : int) On garde les tables telles quelles mais la clé étrangère (numss) de réservation pourra être NULL Si la cardinalité min est à 0 coté N : aucun problème 26 Cas des cardinalités minimales à 0 (3/3) Cas des relations 1:1 VEHICULE 0,1 ------- immatricultaion {PK}: int loue 1,1 modele : string marque : string On stocke des clients qui n ont pas forcément loué de véhicule VEHICULE_LOUE(immatriculation : int, modele : string, marque : string, numss : int, nom: string, ) Si on sait que les valeurs NULL vont être remplies rapidement, on ne change rien Sinon, on évite les valeurs NULL et on créé deux tables : Une pour, une pour VEHICULE avec une clé étrangère vers ----- numss{pk} : int 27 Cas N:M Attribut d association Les attributs d association sont dans la table de l association possede Personne Par exemple, Possede Cas 1:N Les attributs d association sont dans la table coté N Cas 1:1 Les attributs d association sont dans la table unique crée DateAchat : Date Prix : int Voiture 28

Exercice 1 Proposer un ensemble de tables pour le diagramme UML suivant DEPARTEMENT ------ iddep : int Nom : string Budget : int 1,N gere 1,1 1,N travaille EMPLOYE ------- numss : int Nom : string Pre telephone : int Salaire : float 1,N 29