0% ont trouvé ce document utile (0 vote)
70 vues17 pages

Modèle relationnel des bases de données

Ce document décrit les concepts de base du modèle relationnel de données, y compris les domaines, relations, clefs primaires et étrangères, et la traduction d'un schéma entité-association vers un schéma relationnel.

Transféré par

delahaut sara
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
70 vues17 pages

Modèle relationnel des bases de données

Ce document décrit les concepts de base du modèle relationnel de données, y compris les domaines, relations, clefs primaires et étrangères, et la traduction d'un schéma entité-association vers un schéma relationnel.

Transféré par

delahaut sara
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

Bases de données

Modèle relationnel

Nadime Francis

Université Gustave Eiffel


LIGM - 4B130 Copernic
[Link]@[Link]

1 / 17
Modèle relationnel

Modèle logique de données (MLD)


Définition de schémas logiques de bases de données
Basé sur les notions mathématiques d’ensemble et de relation

Objectifs
Fondements théoriques des systèmes de gestion de base de données
relationnelle (SGBDR) – relational database management systems (RDBMS)
Description formelle de l’organisation structurelle de la base
Spécification des opérations sur les données (calcul relationnel)

2 / 17
Une première table

idF titre année nomDir prénomDir annéeNaissDir


1 Alien 1979 Scott Ridley 1943
2 Reservoir Dogs 1992 Tarantino Quentin 1963
3 The Thing 1982 Carpenter John 1948
4 Volte-face 1997 Woo John 1946
5 Pulp Fiction 1995 Tarantino Quentin 1963

Quelles sont les informations structurelles de cette table ?

Quelles sont les données ?

3 / 17
Domaines, relations
Produit cartésien, attributs, enregistrements

Domaines
Ensemble de valeurs, intuitivement du même “type”
Ex : les entiers, les réels, les mots de trois lettres de l’alphabet,
l’ensemble {bleu, rouge, jaune, vert, blanc, noir}, . . .
Le produit cartésien des domaines D1 , D2 , . . . , Dn , noté
D1 × D2 × . . . × Dn , est l’ensemble de toutes les combinaisons
(a1 , a2 , . . . , an ), où a1 ∈ D1 , a2 ∈ D2 , . . . , an ∈ Dn
Ex : Si D1 = {a, b, c} et D2 = {1, 2}, alors
D1 × D2 = {(a, 1), (a, 2), (b, 1), (b, 2), (c, 1), (c, 2)}

Relations
Sous-ensemble du produit cartésien d’une liste de domaines
Représentée sous la forme d’un tableau à double entrée
En colonne : les attributs, identifiés par un nom
En ligne : les enregistrements (ou n-uplets)
Attention, les relations sont des ensembles :
pas de duplication ni d’ordre sur les enregistrements
4 / 17
Exemple : relation sur les films et leurs réalisateurs

idF titre année nomDir prénomDir annéeNaissDir


1 Alien 1979 Scott Ridley 1943
2 Reservoir Dogs 1992 Tarantino Quentin 1963
3 The Thing 1982 Carpenter John 1948
4 Volte-face 1997 Woo John 1946
5 Pulp Fiction 1995 Tarantino Quentin 1963

Relation sur entiers × chaines × entiers × chaines × chaines × entiers

Attributs : idF, titre, année, nomDir, prénomDir, annéeNaissDir

Enregistrements :
(1, Alien, 1979, Scott, Ridley, 1943),
(2, Reservoir Dogs, 1992, Tarantino, Quentin, 1963),
(3, The Thing, 1982, Carpenter, John, 1948),
(4, Volte-face, 1997, Woo, John, 1946),
(5, Pulp Fiction, 1995, Tarantino, Quentin, 1963).

5 / 17
Clefs primaires et étrangères

Clefs primaires (primary keys)


Ensemble d’attributs choisi pour identifier les enregistrements
Deux enregistrements différents ne peuvent pas avoir les mêmes
valeurs sur les attributs de la clef primaire
Les relations ont (presque) toujours une clef primaire

Clefs étrangères (foreign keys)


Ensemble d’attributs d’une relation faisant référence à la clef
primaire d’une autre relation
Les domaines des attributs doivent être identiques, les noms peuvent
être différents

6 / 17
Exemple : relation sur les films et leurs réalisateurs

idF titre année nomDir prénomDir annéeNaissDir


1 Alien 1979 Scott Ridley 1943
2 Reservoir Dogs 1992 Tarantino Quentin 1963
3 The Thing 1982 Carpenter John 1948
4 Volte-face 1997 Woo John 1946
5 Pulp Fiction 1995 Tarantino Quentin 1963
6 Terminator 1984 Cameron James 1954
7 Ghosts of Mars 2001 Carpenter John 1948
8 The Game 1997 Fincher David 1962
9 The Game 1970 Winner Michael 1935

Clef primaire : idF


Autres possibilités : idF, (titre, nomDir), (titre, année), . . .

Questions : Comment supprimer un film ? Ajouter un réalisateur ?


Modifier la date de naissance d’un réalisateur ?

7 / 17
Exemple : deux relations et une clef étrangère

Films
idF titre année idDir Réalisateurs
1 Alien 1979 1 idDir nom prénom naissance
2 Reservoir Dogs 1992 2 1 Scott Ridley 1943
3 The Thing 1982 3 2 Tarantino Quentin 1963
4 Volte-face 1997 4 3 Carpenter John 1948
5 Pulp Fiction 1995 2 4 Woo John 1946
6 Terminator 1984 5 5 Cameron James 1954
7 Ghosts of Mars 2001 3 6 Fincher David 1962
8 The Game 1997 6 7 Winner Michael 1935
9 The Game 1970 7

FK : idDir dans Films fait référence à idDir dans Réalisateurs

Questions : Comment supprimer un film ? Ajouter un réalisateur ?


Modifier la date de naissance d’un réalisateur ?

8 / 17
Schéma d’une relation, d’une base de données

Schéma d’une relation


Donnée du nom de la relation, de ses attributs (avec leurs
domaines), et de la clef primaire (soulignée)
Ex : films(idF, titre, année, idDir)

Schéma d’une base de données


Ensemble des schémas des relations de la base de données
Donnée des clefs primaires et étrangères de chaque relation
Ex : films(idF, titre, année, idDir)
réalisateurs(idDir, nom, prénom, naissance)
FK : films(idDir) fait référence à réalisateurs(idDir)

Les clefs étrangères sont parfois repérées par un #


Ex : films(idF, titre, année, #idDir)

9 / 17
Traduction schéma entité-association – modèle relationnel

Chaque type d’entité devient une relation

Chaque propriété d’une entité devient un attribut de la relation

La propriété identifiante devient la clef primaire de la relation

Film

nIMDb =⇒ film(nIMDb, titre, année)


titre
année

La traduction des types d’association et de leurs propriétés dépend


des cardinalités maximales de l’association

10 / 17
Traduction des associations : cardinalités 1 vers 1

Si les cardinalités maximales de l’association sont 1 :


L’association est intégrée à l’une ou l’autre des deux entités
L’identifiant de l’entité 2 est ajouté en clef étrangère à l’entité 1
Les attributs de l’association sont ajoutées à ceux de l’entité 1

Ex :
chauffeur(numLicence, nom, numImmat, dateDébut)
Chauffeur taxi(numImmat, modèle)
numLicence FK : chauffeur(numImmat) fait référence à taxi(numImmat)
nom

1,1 =⇒ OU
Taxi
conduit chauffeur(numLicence, nom)
numImmat
date début 0,1
modèle taxi(numImmat, modèle, numLicence, dateDébut)
FK : taxi(numLicence) fait référence à chauffeur(numLicence)

Remarque : ce cas induit un choix.


Il ne faut pas faire simultanément les deux traductions.

11 / 17
Traduction des associations : cardinalités 1 vers n

Si les cardinalités maximales de l’association sont 1 vers n :


L’association est intégrée à l’entité de cardinalité 1
L’identifiant de l’entité de cardinalité n est ajouté en clef étrangère à
l’entité de cardinalité 1
Les attributs de l’association sont ajoutées à ceux de l’entité de
cardinalité 1

Ex :
Œuvre

idO
année œuvre(idO, année, titre, idM, depuis)
titre

0,1
=⇒ musée(idM, adresse, nom)
Musée
est exposée
idM
FK : œuvre(idM) fait référence à musée(idM)
depuis 0,n adresse
nom

12 / 17
Traduction des associations : cardinalités n vers n
Si les cardinalités maximales de l’association sont n vers n :
L’association devient une nouvelle relation
Sa clef primaire se compose des identifiants des deux entités
Les attributs de l’association sont ajoutés à cette nouvelle relation

Ex :
Étudiant étudiant(numEtud, nom, prénom)
numEtud
nom
cours(idCours, intitulé)
prénom

0,n
=⇒ passeExamen(numEtud, idCours, note)
Cours
passe examen FK : passeExamen(numEtud) fait référence à étudiant(numEtud)
idCours
note 0,n
intitulé FK : passeExamen(idCours) fait référence à cours(idCours)

Remarque : chaque enregistrement de passeExamen, identifié par un


numéro étudiant et un identifiant de cours, correspond à une copie, à
laquelle est attribuée une note.
Étudiant
Copie Cours
présente concerne
Quelle différence avec le cas suivant ? numEtud
nom 0,n 1,1
idCopie
1,1 0,n
idCours
note intitulé
prénom

13 / 17
Traduction des associations : cas des arités ≥ 3

Si l’association est d’arité ≥ 3, on procède comme dans le cas précédent :


L’association devient une nouvelle relation
Sa clef primaire se compose des identifiants des entités concernées

Ex :
Service fournisseur(numFour, nom)
ref
descriptif
client(numClient, nom, prénom, adresse)
0,n service(ref, descriptif)
Client
=⇒
Fournisseur fournit(numFour, numClient, ref, prix)
fournit numClient
numFour nom
0,n prix 0,n FK : numFour, numClient et ref de fournit font référence à
nom prénom
adresse fournisseur(numFour), client(numClient) et service(ref)

Remarque : chaque enregistrement de fournit correspond à


l’abonnement, à un prix donné, d’un client à un service d’un fournisseur.

14 / 17
Traduction des associations : cas des associations récursives

Pour les associations récursives :


On procède comme dans les cas précédents, suivant les cardinalités
Il est généralement nécessaire de renommer l’un des attributs
Ce renommage se reporte dans la description des clefs étrangères

Ex :
Etudiant
0,n parraine étudiant(num, nom, prénom, numParrain)
num
nom 1,1
=⇒
FK : étudiant(numParrain) fait référence à étudiant(num)
prénom

15 / 17
Une traduction complète

Traduire le schéma entité-association suivant :

Étudiant
Groupe 1,n appartient
numEtud
idGroupe 1,1 nom
prénom
1,n
0,n
Professeur
enseigne passe examen
numProf
nom 1,n heures note
prénom
1,n 0,n
0,n
Cours
supervise 0,n requiert
idCours
1,1 0,n note min
intitulé

16 / 17
Une traduction complète : solution

Étudiant
Groupe 1,n appartient
numEtud groupe(idGroupe)
idGroupe 1,1 nom
prénom étudiant(numEtud, nom, prénom, idGroupe)
1,n

Professeur
0,n professeur(numProf, nom, prénom)
enseigne passe examen
numProf cours(idCours, intitulé, numProf)
nom 1,n heures note
prénom enseigne(numProf, idGroupe, idCours, heures)
1,n 0,n
0,n passeExamen(numEtud, idCours, note)
Cours
supervise 0,n requiert
idCours
requiert(idCours, idCoursRequis, noteMin)
1,1 0,n note min
intitulé

FK : idCours dans enseigne, passeExamen et requiert fait référence à idCours dans cours
FK : idGroupe dans étudiant et enseigne fait référence à idGroupe dans groupe
FK : numProf dans cours et enseigne fait référence à numProf dans professeur
FK : numEtud dans passeExamen fait référence à numEtud dans étudiant
FK : idCoursRequis dans requiert fait référence à idCours dans cours

17 / 17

Vous aimerez peut-être aussi