Bases de données

Transcription

Bases de données
Introduction aux bases de données
Polytech Marseille
Département Matériaux
3ème année
2014-2015
Informations
 Volume horaire : 6h CM et 6h TD/TP.
 Présence obligatoire.
 Évaluation : examen écrit.
http://nicolas.durand.perso.luminy.univ-amu.fr/pub/
Bureau A206
2
Objectifs du cours
Introduction aux bases de données :
– Généralités
– Modèle relationnel
– Initiation à la conception
– Bases du langage SQL (création,
manipulation et interrogation)
– Utilisation de MySQL
3
Bibliographie
 Supports du cours, année 2013-2014 :
http://odile.papini.perso.luminy.univ-amu.fr/
sources/BDMAT.html
 GARDARIN G., Bases de données, Eyrolles, 2003.
 DATE C., Introduction aux bases de données, 8ème
édition, Vuibert, 2004.
 Jacques LE MAITRE, Université du Sud Toulon-Var
http://lemaitre.univ-tln.fr/supports-cours.htm
4
Généralités
5
Définitions
 "Une base de données (BD) est un ensemble
d’informations archivées dans des mémoires
accessibles à des ordinateurs en vue de
permettre le traitement des diverses
applications prévues pour elles."
 Les bases de données sont gérées par des
logiciels spécialisés appelés "systèmes de
gestion de bases de données" (SGBD).
6
A quoi sert une base de
données ? (1)
 Stocker les données de manière persistante
– Les données ne sont pas volatiles et reste une fois les
traitements terminés
 Accéder rapidement aux données et permettre de
retrouver aisément les données
– Les données sont rangées de manière ordonnée
 Partager les données
– Plusieurs utilisateurs peuvent accéder simultanément
aux données
Etc.
Où trouvons nous des bases de
données ?









Bibliothèque : livres, emprunts, …
Université : étudiants, enseignants, cours, …
Sécurité Sociale : dossiers, remboursements, …
Cabinets médicaux : dossiers patients, traitements, …
Sites de vente sur Internet : clients, produits, commandes, …
Banques : clients, comptes, …
Voyages : système de réservation de places d’avion et de train
Sites Web personnels, …
Et généralement en entreprise (vital pour la bonne marche des
entreprises (RH, stocks, …)
8
Volume de quelques grandes
bases de données
 Amazon (> 42 téraoctets)
 YouTube (> 45 téraoctets)
 AT&T (323 téraoctets)
 World Data Centre for Climate (220 téraoctets
+ 6 pétaoctets de données additionnelles)
 Google (... Po ? Eo ?)
1 gigaoctets (Go) = 1024 mégaoctets (Mo)
1 téraoctet (To) = 1024 gigaoctets (Go)
1 pétaoctet (Po) = 1024 téraoctets (To)
1 exaoctet (Eo) = 1024 pétaoctets (Po)
A quoi ressemble une base de
données ? (1)
 Petit exemple : extrait d'une base de données
d'une bibliothèque
AUTEUR
numAuteur
nom
prenom
dateNaissance
OUVRAGE
numOuvrage
titre
date
ECRIT
#numAuteur
#numOuvrage
A quoi ressemble une base de
données ? (2)
ECRIT
AUTEUR
numAuteur
nom
prenom
dateNaissance
numAuteur
numOuvrage
12354
Zola
Emile
02/04/1840
12354
1860113156148
15789
Maupassant
Guy
05/08/1850
15789
1561183795267
19355
Camus
Albert
07/11/1913
12354
2826158319643
OUVRAGE
numOuvrage
titre
date
1860113156148
Germinal
1885
1561183795267
2826158319643
Une vie
L'Assommoir
1883
1878
De quoi est composée une base
de données ?
 Une BD relationnelle est une collection de données
structurées en relations.
– Relations/Tables : un ensemble de données
(exemple : OUVRAGE)
– Attributs/Champs/Colonnes d'une relation
(exemple : numOuvrage, titre, date)
– n-uplets/Tuples/Enregistrements/Lignes :
un n-uplets est une liste de valeurs d'une ligne d'une
relation (exemple :
<1860113156148, Germinal, 1885> )
12
A quoi sert une base de
données ? (2)
ECRIT
AUTEUR
numAuteur
nom
prenom
dateNaissance
numAuteur
numOuvrage
12354
Zola
Emile
02/04/1840
12354
1860113156148
15789
Maupassant
Guy
05/08/1850
15789
1561183795267
19355
Camus
Albert
07/11/1913
12354
2826158319643
OUVRAGE
numOuvrage
titre
date
1860113156148
Germinal
1885
1561183795267
2826158319643
Une vie
L'Assommoir
1883
1878
Nom et date de naissance de chaque auteur ?
Nombre d'ouvrages écrits par chacun des auteurs ?
Systèmes de Gestion de Bases
de Données
 SGBD : Systèmes de Gestion de Bases de Données
(DataBase Management Systems - DBMS)


Outil logiciel spécialisé servant à gérer plusieurs bases
de données.
Gérer l’insertion, la modification, la suppression et la
recherche efficace de données dans une grande masse
d’informations partagée par de multiples utilisateurs.
 MySQL, PostgreSQL, ORACLE, SQLServer, DB2,
…
14
Caractéristiques des SGBD
 Persistance des données
– Les données sont persistantes si elles survivent à
l’exécution des programmes (et pas seulement si elles
sont sauvegardées sur un support persistant)
 Centralisation des informations
 Efficacité des accès

Repose sur des algorithmes performants (transparents
pour l’utilisateur)
 Cohérence des données

Vérification de contraintes d’intégrité.
15
Caractéristiques des SGBD
 Partage des données

Un SGBD permet à plusieurs personnes d’accéder
simultanément aux données tout en donnant l’illusion
d’être seul exploitant
 Sécurité des données

Chaque utilisateur possède certains droits sur les données
 Reprise sur panne

Restauration de la BD dans un état cohérent
16
Caractéristiques des SGBD
 Langage de requêtes

Consultation/modification des données de la BD à l’aide
d’un langage
 Indépendance physique

Un SGBD permet de manipuler des données sans se
soucier de la façon dont sont stockées physiquement ces
données
 Indépendance logique

Un SGBD permet de présenter sous différentes vues les
mêmes données (différents groupes de travail)
17
Langage d’interrogation et de
manipulation de bases de données
 Définition et manipulation d’une BD via un langage
déclaratif.
 Le plus connu et le plus utilisé de ces langages est
SQL (Structured Query Langage).
 Modes d’utilisation :
 intégré dans un langage hôte (C, Java, PHP, …),
 autonome.
18
SQL
Exemple 1
AUTEUR
numAuteur
nom
prenom
dateNaissance
12354
Zola
Emile
02/04/1840
15789
Maupassant
Guy
05/08/1850
19355
Camus
Albert
07/11/1913
Nom et date de naissance de chaque auteur ?
SELECT nom, dateNaissance
FROM AUTEUR;
Réponse : <Zola, 02/04/1840>, <Maupassant, 05/08/1850> et
<Camus, 07/11/1913>
19
SQL
Exemple 2
ECRIT
AUTEUR
numAuteur
nom
prenom
dateNaissance
numAuteur
numOuvrage
12354
Zola
Emile
02/04/1840
12354
1860113156148
15789
Maupassant
Guy
05/08/1850
15789
1561183795267
19355
Camus
Albert
07/11/1913
12354
2826158319643
Nombre d'ouvrages écrits par chacun des auteurs ?
SELECT nom, COUNT(numOuvrage)
FROM Auteur
LEFT JOIN Ecrit
ON Auteur.numAuteur=Ecrit.numAuteur
GROUP BY nom;
Réponse : <Zola, 2>, <Maupassant, 1>, <Camus, NULL>
Architecture globale selon
l'utilisation
 On distingue 3 grands types d’architecture
selon l'utilisation :



Architecture centralisée,
Architecture client-serveur,
Architecture trois-tiers.
21
Architecture centralisée
22
Architecture client-serveur
 Serveur :
- logiciel installé sur l'ordinateur où sont stockées les
données
- il attend des requêtes des clients, accède à la base de
données pour exécuter la requête du client et lui envoyer une
réponse.
 Client :
logiciel installé sur un ordinateur qui se connecte par
l'intermédiaire d'un réseau au serveur pour effectuer une
requête.
23
Architecture client-serveur
24
Architecture trois tiers
25
Qui intervient sur une base de
données ?
 Administrateur (une personne ou une équipe) :



conçoit la BD et la fait évoluer.
fixe les paramètres de l’organisation physique de façon à optimiser les
performances.
gère les droits d’accès et les mécanismes de sécurité.
 Développeurs/Programmeurs :


construisent les programmes qui alimentent ou exploitent la BD en vue
d’applications particulières.
utilisent le langage de bases de données du SGBD, éventuellement
couplé avec un langage de programmation classique.
 Utilisateurs finaux :

accèdent à la BD au travers des outils construits par les programmeurs
d’applications ou pour les plus avertis au travers du langage de
26
requêtes.
Quel SGBD choisir ?
 Différents facteurs/critères :










la politique sécuritaire
le budget à disposition
la politique de l'entreprise concernant ses fournisseurs
les compétences déjà acquises en terme de développement et
d'administration, et au besoin le prix de la formation
l'attente vis-à-vis du support technique
…
la richesse fonctionnelle du SGBD
le système d'exploitation hébergeant
les ressources (disques, mémoire, CPU(s), transactions par
secondes, nombre de connexions simultanées)
27
…
Bref historique
 Jusqu'aux années 60 : organisation classique (systèmes de
gestion de fichiers)
 Fin des années 60 : apparition des 1er SGBD (systèmes réseaux
et hiérarchiques)
 A partir de 1970 : 2ème génération de SGBD (systèmes
relationnels)
 Fin 70 et années 1980 : apparition des SGBDR sur le marché
(SystemR d'IBM, ORACLE, Ingres, Informix, DB2, dBase,
Sybase, …)
 Début 90 : 3ème génération de SGBD - systèmes orientés
objets (Gemstone, O2, Orion, Objectstore, Versant, Matisse...)
 Aujourd’hui : relationnel-objet, semi-structuré, multimédia,28…
Petite chronologie
1970……………… 1978………..
E.F. Codd
DB2
(BD relationnelle)
ORACLE
1981……… 1984…….
Informix
Sybase
IBM langage SEQUEL
1986…………….
Norme SQL86
1989………………
SQLServer
(Microsoft)
1996…………….
PostgreSQL
MySQL (public)
1999…….…..
Norme SQL99
2000…............……
SQLite 1.0
2003…………….
Norme SQL2003
29
Modèle relationnel
30
Modèle relationnel
 E.F. CODD en 1970 (IBM)
 Basé sur des fondements mathématiques


Algèbre relationnelle
Logique des prédicats
 Organisation des données en relations (tables)


n-uplets (ou tuples ou enregistrements ou lignes)
attributs (ou champs ou colonnes)
31
BD Relationnelle
 Une Base de Données Relationnelle (BDR)
est constituée par :



un ensemble de domaines,
un ensemble de relations,
un ensemble de contraintes d’intégrité.
32
Domaine
 Un domaine est un ensemble de valeurs atomiques
 Domaines prédéfinis

chaîne de caractères, entier, flottant, …
 Domaines définis


en extension
 couleur = {"rouge", "vert", "bleu", "jaune"}
en intention
 mois = {m | m ∈ entier et 1 ≤ m ≤ 12}
33
Relation
 Une relation est identifiée par un nom et est
constituée par : son schéma et son extension.
 Le schéma d’une relation R est une expression de
la forme

(A1:D1, A2:D2,…, An:Dn)
chaque Ai est un attribut ; chaque Di est un domaine.
 L’extension d’une relation R de schéma
(A1:D1, A2:D2,…, An:Dn) est un ensemble de n-uplets
<a1,…,an> où, pour chaque ai, on a ai∈Di
34
Relation : Exemple
 Nom

AUTEUR
 Schéma

(numAuteur:Entier, nom:Chaîne,
prenom:Chaîne, dateNaissance:date)
 Extension



<12354, Zola, Emile, 02/04/1840>
<15789, Maupassant, Guy, 05/08/1850>
<19355, Camus, Albert, 07/11/1913>
35
Relation : Exemple
Relation (table) : AUTEUR
noms des attributs
numAuteur nom
prenom
dateNaissance
12354
Zola
Emile
02/04/1840
15789
Maupassant
Guy
05/08/1850
19355
Camus
Albert
07/11/1913
n-uplets
36
Contraintes d’intégrité
 Une contrainte d’intégrité (CI) est une contrainte
qui s’applique sur les données de la BD et qui doit
être vérifiée à tout instant.
 Une BD dont les données ne vérifient pas une ou
plusieurs CI est dite incohérente.
 Il existe plusieurs types de CI :



les contraintes de domaine
les clés (primaires ou étrangères)
les autres.
37
Clé primaire
 Clé primaire d’une relation


Un ou plusieurs attributs permettant d’identifier, de façon
unique, chaque n-uplets de la relation
Remarque : il peut éventuellement exister plusieurs clés pour
une même relation. Dans ce cas, il faut :
(1) Identifier les clés candidates
(2) Choisir une clé primaire parmi les clés candidates
Exemples :
Auteur(numAuteur, nom, prenom, dateNaissance)
Personne(idPersonne, nom, prenom, dateNaiss, numSecuSociale)
Clé primaire
1 clé candidate
38
Clé étrangère
Auteur(numAuteur, nom, prenom, dateNaissance)
Ecrit(#numAuteur, #numOuvrage)
L'attribut "numAuteur" de Ecrit, fait référence à "numAuteur"
de Auteur.
L'ensemble des valeurs de "numAuteur" dans Ecrit, est un
sous-ensemble de (ou est égal à) l'ensemble des valeurs de
"numAuteur" dans Auteur.
(Les noms de ces 2 attributs n'ont pas à être identiques. Mais
leurs domaines doivent être identiques.)
39
Exemple : bibliothèque
AUTEUR(numAuteur,
nom, prenom,
dateNaissance)
OUVRAGE(numOuvrage,
titre, date)
ECRIT
numAuteur
numOuvrage
12354
1860113156148
15789
1561183795267
12354
2826158319643
AUTEUR
numAuteur
nom
prenom
dateNaissance
12354
Zola
Emile
02/04/1840
15789
Maupassant
Guy
05/08/1850
19355
Camus
Albert
07/11/1913
OUVRAGE
numOuvrage
titre
date
1860113156148
Germinal
1885
1561183795267
2826158319643
Une vie
L'Assommoir
1883
1878
ECRIT(#numAuteur,
#numOuvrage)
40
Contraintes d’intégrité
 Précisions



Le SGBD refusera toute modification de la BD
qui violerait une ou plusieurs CI
Il doit obligatoirement y avoir une (et une seule)
clé primaire par relation
Il n’est pas obligatoire de déclarer des clés
étrangères, mais c’est recommandé.
41
Exemples de contraintes :
Université
 Contraintes de domaine :
"La fonction d’un enseignant à l’université prend sa
valeur dans l’ensemble {Vacataire, Moniteur, ATER,
MCF, Professeur, PRAG, PAST}"
 Contraintes d'unicité :
"Un département a un nom unique (il n’y a pas deux
départements de même nom)"
 Contraintes générales :
"Un même examen ne peut pas avoir lieu dans deux
salles différentes à la même date et à la même heure"
42
Initiation à la conception de bases
de données
43
Motivation
Voici un extrait du contenu de la base de données d'un
groupe de bibliothèques :
ISBN
Bibliothèque Titre
Editeur
Nbre
Eyrolles 2
Vuibert 3
2-100 Luminy
C++
2-101 St Charles
Java
2-102 Luminy
Maths Dunod
2-100 Toulon
C++
2
Eyrolles 1
A votre avis, est-ce que cette base de données a été bien
conçue ?
44
Intérêt de la conception
 Cas complexes
 Évite la redondance des données
 Optimise les futurs requêtes
 Permet une modification et une maintenance
aisée
 Permet une ré-exploitation plus facile
45
Étapes
 Analyser les besoins
 Modèle Conceptuel de Données (MCD)
– Schéma entité-association, contraintes d'intégrité
 Valider le MCD avec le client/expert/utilisateurs/...
 Transformation en Modèle Logique de Données
(MLD)
– Schéma relationnel, contraintes d'intégrité
46
Analyse du problème
et des besoins
 Quelles sont les informations à stocker ?
 Comment représenter ces informations ?
 Quelles sont les relations entre ces
informations ?
 Qui aura accès aux informations ou à
certaines informations ?
…
47
Modèle conceptuel
Schéma Entité-Association
 Simple et suffisamment puissant
 Schémas aisément compréhensibles par tous
 Description statique de la future BD, à
l’aide :
 Entités
 Associations
(avec leurs cardinalités)
 Attributs
 Domaine
 Pas de modélisation des traitements
 Langage Graphique
48
Exemple
Bibliothèque
On souhaite installer une base de données pour une petite bibliothèque
contenant des ouvrages pouvant être empruntés :
• Un ouvrage est caractérisé par un numéro identifiant, un titre, un ou
plusieurs auteurs, et un éditeur. En outre, un ouvrage est décrit par un
certain nombre de mots-clés qui indiquent les sujets qui y sont traités.
La bibliothèque dispose d’un ou de plusieurs exemplaires de chaque
ouvrage.
• L’exemplaire, qui est en quelque sorte la matérialisation d’un ouvrage
est identifié par un numéro et est caractérisé par sa position dans les
rayonnages et sa date d’achat. Un exemplaire peut être emprunté par
un emprunteur, qui peut en emprunter plusieurs.
• Un emprunteur est identifié par un numéro et est caractérisé par son
nom et son adresse.
49
Exemple
Schéma entité-association (UML)
Contraintes d'intégrité : ...
50
Passage du modèle conceptuel
au modèle logique
 Passage du schéma entité-association au
schéma relationnel en appliquant des règles :
– Toute entité devient une relation (a ttributs
 colonnes ; clé  clé primaire)
– Association binaire (...* – ...*) : création d'une
relation ayant comme colonnes les clés des 2
entités, et les éventuels attributs de l'association
– Etc.
51
Exemple
Schéma relationnel
AUTEUR(numAuteur, nom, prenom)
EDITEUR(numEditeur, nomEditeur, adresseEditeur)
OUVRAGE(numOuvrage, titre, #numEditeur)
ECRIT(#numAuteur, #numOuvrage)
MOTCLE(numMot, mot)
CARACTERISE(#numMot, #numOuvrage)
EXEMPLAIRE(numExemplaire, position, dateAchat, #numOuvrage)
EMPRUNTEUR(numEmprunteur, nomEmprunteur,
adresseEmprunteur, telephone)
EMPRUNTE(#numExemplaire, #numEmprunteur, dateEmprunt,
dateRetour)
52
+ contraintes d'intégrité.
Comment améliorer une base de
données existante ?
Reprenons la base de données d'un groupe de bibliothèques :
ISBN
Bibliothèque Titre
Editeur
Nbre
Eyrolles 2
Vuibert 3
2-100 Luminy
C++
2-101 St Charles
Java
2-102 Luminy
Maths Dunod
2-100 Toulon
C++
2
Eyrolles 1
→ Normalisation...
53
Normalisation
de schémas relationnels
(Source : Jacques Le Maitre)
Dépendances fonctionnelles (DF)
 X, Y : constituants de la relation R
 Il existe une DF entre X et Y si pour toute
extension de R, à chaque valeur de X il
correspond toujours la même valeur de Y.
 Alors X détermine fonctionnellement Y
 On note X  Y
55
DF et Clés
 Une clé de R est un sous ensemble de ses attributs
qui détermine tous les autres.
 Un constituant X de R(A1,…,An) est une clé de R
ssi :


X {A1,…,An},
Il n’existe pas de constituant Y inclus dans X tq Y 
{A1,…,An}
 Attribut clé = attribut qui appartient à cette clé.
 Super-clé (ou sur-clé) = un constituant qui inclut
une clé.
56
1ère forme normale
 Tous les attributs ont une valeur atomique
57
2ème forme normale
Il faut
 1ère forme normale
 Chaque attribut non clé dépend totalement et
non partiellement de la clé primaire
58
Exemple 2NF
59
Mise en 2ème forme normale
On décompose en deux relations qui préservent les DF
Remarque : une relation qui a une clé primaire monoattribut est en 2NF
60
Insuffisance de la 2
normale
ème
forme
3ème forme normale
Il faut
 2ème forme normale
 Pour chaque clé candidate, il n’existe pas de
DF entre attributs n’appartenant pas à cette
clé.
62
Exemple 3NF
 Comment mettre en 3NF ?
63
Mise en 3NF
On décompose en deux relations (car ici 2 Dfs posent un problème)
64
Autre exemple 3NF
Insuffisance de la 3
normale
ème
forme
Forme normale de Boyce-Codd
 La forme normale de BC implique la 3NF
 BCNF : introduite pour tenir compte des
dépendances entre


parties de clé
un attribut non clé et une partie de la clé
 Pour chaque DF non triviale X  Y, X est
une super-clé de R
67
Exemple BCNF
 Adresse(Rue, Ville, CodePostal)
 Avec dépendances fonctionnelles


{Rue, Ville}  CodePostal
CodePostal  Ville
 Clés candidates

{Rue, Ville}, {Rue, CodePostal}
 CodePostal n’est pas une super-clé
 Comment mettre en BCNF ?
68
Mise en BCNF
4ème forme normale
 Il y a une dépendance multivaluée entre un constituant
X et un constituant Y d’une relation R(X, Y, Z) si pour
toute extension de R, à chaque valeur de X il
correspond toujours le même ensemble de valeurs de Y
et que cet ensemble de valeurs ne dépend pas des
valeurs de Z.
 On dit que X multidétermine Y : X  Y
 Exemple :


livre(isbn, titre, auteur)
Si un livre peut avoir plusieurs auteurs, la relation livre
possède la dépendance multivaluée : isbn  auteur
70
4ème forme normale
 Une dépendance multivaluée X  Y d’une
relation R est dite non triviale si :


Y n’est pas un sous-ensemble de X,
X union Y n’inclut pas tous les attributs de R.
 Une relation R est en 4e forme normale, si pour
chaque dépendance multivaluée X  Y non
triviale, X est une super-clé de R.
 La 4e forme normale implique BCNF (puisqu’une
dépendance fonctionnelle est un cas particulier de
dépendance multivaluée).
71
Exemple 4NF
72
Bilan sur la normalisation
Annexe
Modèle conceptuel de données
Le modèle Entité/Association
Avec la notation UML
74
Entité
 Modélise un ensemble d'objets concrets ou
abstraits de même nature
 Représentation graphique : rectangle
 Notre exemple : université
étudiant
université
75
Association
 Représente un lien entre deux ou plusieurs
entités

Généralement 2 : association binaire
 Exemple : l'association "est_dans"
 Représentation graphique : ligne
étudiant
est_dans
université
76
Attributs
 Décrivent les entités et les associations
Exemple :
entité "étudiant" a pour attributs : nom, prénom, âge …
entité "université" : nom, adresse, …
association "est dans" : date arrivée, date départ
étudiant
université
nom
nom
prénom
age
est_dans
date_arrivée
date_départ
adresse
77
Clé (identifiant) d'une entité
 Un ou plusieurs attributs permettant d’identifier, de
façon unique, chaque occurrence d’une entité
Exemple: "idEtudiant" pour l'entité "étudiant"
Chaque étudiant doit avoir un identifiant.

 Représentation graphique : attribut(s) souligné(s)
étudiant
université
idEtudiant
idUniversité
nom
nom
prénom
age
est_dans
date_arrivée
date_départ
adresse
78
Cardinalité
 Les cardinalités vont permettre de qualifier le type
d'association entre deux entités
 Les entités participant aux associations ont des
cardinalités minimales et maximales
Cardinalité minimale : nombre minimum de fois qu’une
occurrence d’une entité participe aux occurrences de
l’association (0, 1, ...)
 Cardinalité maximale : nombre maximum de fois qu’une
occurrence d’une entité participe aux occurrences de
l’association (1, …, *)
 Exemples : "Une université a un ou plusieurs étudiants"
"Un étudiant est dans une et une seule université" 79

Cardinalité
 Représentation graphique : couple de chiffres
0...1 ou 1...1 ou 0...* ou 1...* ou … ou n,m


Nombre de gauche : cardinalité minimale
Nombre de droite : cardinalité maximale
Une université a un ou plusieurs étudiants
étudiant
idétudiant
nom
prénom
age
Sens de lecture
1...1
1...*
est_dans
date_arrivée
date_départ
Sens de lecture
université
iduniversité
nom
adresse
Un étudiant est dans une et une seule université80
Associations spécifiques
 Associations réflexives


Relie une entité à
cette même entité
Ajout de rôles
(étiquettes)
 Associations n-aires

Exemple : ternaire,
l'association relie 3 entités
81
Exemple : gestion des hôpitaux
d’un département
"La direction départementale des Bouches du Rhône souhaite informatiser la
gestion des hôpitaux du département. Chaque hôpital a des activités de
soin dans les services médicaux et des activités de recherche dans les
laboratoires. Les médecins employés sont obligatoirement rattachés à un
seul hôpital. Ils ont le choix entre trois types de fonctions : consultant
indépendant, médecin praticien, médecin chercheur. Les consultants
indépendants ne sont rattachés à aucune structure interne de laboratoire ou
de service. Les praticiens sont rattachés à un seul service. Les chercheurs
sont rattachés à un laboratoire unique. Les fonctions de praticien et de
chercheur peuvent être cumulées. Lorsqu’un médecin est consultant
indépendant ou médecin praticien, il se voit confier la responsabilité d’un
ou plusieurs patients. Dans certains cas nécessitant des traitements
complexes, un même patient peut être suivi par plusieurs médecins.
82
…
Exemple : schéma entitéassociation
(UML)
83
Annexe
Passage du MCD au MLD
Passage
d'un schéma Entité/Association
à un schéma Relationnel
84
Conversion des entités
 Toute entité devient une relation (une table)



Attributs  Colonnes
Clé  Clé primaire
Occurrences  Lignes (n-uplets)
MEDECIN(num_matricule, nom_medecin,
adresse_medecin, specialite)
85
Association binaire
...* – ...*
 Création d'une table ayant comme colonnes les clés
des 2 entités, et les éventuels attributs de l'association

Clé primaire de la nouvelle table : concaténation des clés
primaires (+ éventuellement des attributs)
PATIENT(num_secu_sociale, nom, adresse, date_naissance)
MEDECIN(num_matricule, nom, adresse, specialite)
CONSULTE(#num_matricule, #num_secu_sociale)
86
Association binaire
1...1 – ...*
 Recopie de la clé de « HOPITAL » en tant que colonne de
« LABORATOIRE » (clé étrangère)
 Migration des éventuels attributs de l’association « Rattaché »
en tant que colonne de « LABORATOIRE »
HOPITAL(code_hopital, nom, adresse)
LABORATOIRE(code_laboratoire,
nom, #code_hopital)
87
Association binaire
0...1 – ...*
 2 solutions :


Pas de création de table
(traitement comme pour
1...1 – ...*)
Création table (traitement
comme ...* – ...* mais
attention clé primaire…)
LABORATOIRE(code_labo, …)
MEDECIN(num_matricule, …, #code_labo, …)
ou
LABORATOIRE(code_labo, …)
MEDECIN(num_matricule, …)
CHERCHE(#num_matricule ,#code_labo) 88
Association binaire
0...1 – 1...1
 La clé primaire de la table à la cardinalité
0...1 devient une clé étrangère dans la table à
la cardinalité 1...1
ANIMATEUR (id_animateur, nom_animateur)
GROUPE (id_groupe, nom_groupe, #id_animateur)
89
Association n-aire
 Création d'une table ayant comme clé primaire la
concaténation des clés des entités (+ possibles attributs)
 Attributs de
l'association
 colonnes de la
nouvelle table
ETUDIANT (id_etudiant, nom_etudiant)
NIVEAU (id_niveau, nom_niveau)
LANGUE (id_langue, nom_langue)
PARLE (#id_etudiant, #id_niveau, #id_langue)
90
Association réflexive
 La Clé primaire de l'entité se dédouble et devient une
clé étrangère dans la table (ou une nouvelle table).
(exactement comme si
entité dédoublée et
association binaire 0...1 –
0...*)
EMPLOYE (Numéro, Nom, #Numéro_patron)
où #Numéro_patron correspond au Numéro du patron de l'employé considéré.
91