Rappels sur le relationnel

publicité
Plan
Rappels sur les bases de données
1. Niveaux de description d’une base de données
• Niveau « Réel perçu » et « Niveau Interne ou Logique »
• Niveau « Conceptuel » et « Externe »
relationnelles
2. Rappel sur le modèle Entité-Relation (E-R)
• Historique, concepts, graphisme
• Cardinalités (ou multiplicités)
• Dépendances fonctionnelles
Bernard ESPINASSE
Professeur à l'Université d'Aix-Marseille
3. Dérivation d’un MLD-R à partir d’un MCD en Entité-Relation
Septembre 2015
Problématique du MLD
Formalisme graphique de Merise
Dérivation d’un MLD-R à partir d’un MCD en Entité-Relation
Création de tables en langage SQL (clé primaires et étrangères)
• Rappel sur le modèle Entité-Relation (E-R)
•
•
•
•
• Dérivation d’un MLD-R à partir d’un MCD en Entité-Relation
4. Dimensionnement d’une BD Relationnelle
• Dimensionnement d’une BD Relationnelle
• Multiplicités moyennes des liens relationnels et propagation des multiplicités moyenne
• Calculs cumulés des volumes des tables
• Niveaux de description d’une base de données
• Sous schéma de données et valorisation de l'activité des traitements
sur la BD
5. Sous-schéma de données, valorisation de l'activité des traitements sur
la BD
• Transformation de sous-schémas conceptuelsen sous-schémas logiques
• Valorisation des primitives logiques
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
1
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
2
Nive aux « Ré e l pe rçu » e t « Nive au Inte rne ou
logique » (1)
Niveau « Réel perçu » :
• Représentation du réel que l'on se construit selon les finalités, le
phénomène observé
1. Nive aux de de scription d’une
base de donné e s
• Exprimé dans le langage naturel + vocabulaire du domaine étudié.
Niveau « interne ou logique » :
• Niveau « Réel perçu » et « Niveau Interne ou Logique »
• Niveau « Conceptuel » et « Externe »
• Définit dans le système informatique la réalisation de la structure de
données selon le SGBD choisi (notamment relationnel) et d’objectifs
d’optimisation
• Exprimé dans le formalisme informatique lié à l'outil informatique :
Modèle Interne (ou logique) de Données (MLD)
Modèle Logique de Données Relationnel (MLDR)
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
3
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
4
Nive aux « Ré e l pe rçu » e t « Nive au Inte rne ou
logique » (2)
Niveaux « Conceptuel » et « Externe » (1)
• Emergence des niveaux Conceptuel et Externe :
Réel
Réel
Réel perçu
Réel perçu
difficile !
modèle
interne
administrateur de
la base de données
modèle
conceptuel
SGBD
administrateur de
la base de données
base de données
programmes
modèles
modèles
modèles
externes
modèles
externes
modèles
externes
externes
externes
modèle
interne
Grande difficulté à décrire le « réel perçu » dans un « modèle
interne » informatique :
-> émergence d'un niveau intermédiaire (rapport ANSI/Sparc
1975) : le niveau conceptuel
programmeur d'application
administrateurs de
fonctions
SGBD
base de données
programmes
Remarque : définition des rôles dans l'organisation
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
5
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
6
Niveaux « Conceptuel » et « Externe » (2)
• Description en termes d'objets, propriétés et relations du réel perçu,
permettant :
! l’unicité et stabilité la structure de mémorisation des
informations
! la rencontre gens du domaine/informaticiens
• Exprimé dans un formalisme plutôt naturel (pour gens du domaine)
tout en étant rigoureux (pour les informaticiens):
Modèle Conceptuel de Données (MCD): exprimé en formalisme EntitéRelation (E-R)
Niveau externe :
• Description en terme d'objets, propriétés et relations d'une utilisation
particulière d'information du domaine :
Modèle Externe (MED) : exprimé dans le même formalisme qu'au niveau
conceptuel
On parlera souvent de « Sous-Schémas conceptuels externes »
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
7
2. Rappe l sur le modè le Entité Re lation (E-R)
• Historique, concepts, graphisme
• Cardinalités (ou multiplicités)
• Dépendances fonctionnelles
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
8
Historique
Graphisme
• pour l'élaboration des modèles de données (MCD):
3 concepts de base :
• PROPRIETE :
• ENTITE (individu):
• RELATION (association):
• nécessité d'un formalisme graphique
• approche ENTITE-RELATION (P.Chen 75)
• formalisme INDIVIDUEL (D.Nanci, D.Pascot, H.Tardieu 75)
• norme ISO: ENTITY-RELATIONSHIP
description
structure
structure
Une représentation graphique :
entité
• 3 concepts de base :
• PROPRIETE
• ENTITE
• RELATION (association)
relation
PERSONNE
nom
prénom
age
LOGEMENT
habiter
1,n
cardinalités
9
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
Propriété
0,n
adresse
type
surface
propriété
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
10
Entité
Propriété = particule élémentaire d'information
nom
TYPE
Entité = représentation d'une famille d'objets distinguables perçus comme
stables et homogènes
valeur
OCCURENCE
couleur ...............................
rouge
bleu
vert
âge ......................................
22
23
24
56
PERSONNE
nom
prénom
adresse
rue
code postal
ville
attention !!!! : dans un modèle de données, on ne représente pas les
valeurs mais les TYPES des valeurs
Propriété composée : adresse : rue, code postal, ville
PERSONNE
nom
prénom
adresse
rue
code postal
ville
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
11
Règles :
1) pour toute occurrence d'entité, il y a au plus une valeur pour chacune de ses
propriétés (stabilité)
2) au moins une propriété, identifiante, permet de distinguer les occurrences d'entité
entre elles (distinguabilité)
3) toute propriété doit avoir un sens pour toute occurrence d'entité même si elle est
inconnue à un certain moment (homogénéité)
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
12
Entité
• Types/occurrences :
Re lation
Relation = classe d'information définies par rapport à un ensemble d'entités
Pensées
Guerre
et
Paix
Guerre
et
Paix
8
2
3
5
1
2
Conseil : les nommer par un verbe à l’infinitif (ACHETER)
Règles :
1) les relations n’ont pas d'existence propre :
la relation "ACHETER" n'existe que si des occurrences d'entités "PERSONNE" et
"VOITURE" existent
2) elles peuvent avoir des propriétés propres:
date achat
3) elles sont identifiées par les identifiants de leur collection :
! collection: {entités participant à la relation}
! dimension: nb d'entité(s) de la collection
Combien y a-t-il de livres?
• Homogénéité :
4553
DUVAL
Alice
DUPONT
23
personne
matricule
nom
prénom
nom de j.fille
âge
....
6787
BERGMAN
Jean
?
30
Attention, distinguer:
propriétés non significatives, valeur inconnue, valeur nulle,...
13
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
14
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
V a rVi éatréi édt é
e sd reesl ar e
t iloant iso n s
V a• Partage
r iVéd'une
r se lracollection
at réi d'une
éd
te
é sdmême
ecollection
etliaot:n
i osn:s
• Partage
même
R e lR
ae
t iloant i o n
Exemple :
Exemple :
• Partage
même
collection
: possèder
• Partage
d'uned'une
même
collection
:possèder
ETUDIANT
nom
prénom
date naissance
1,n
posséder
année
mention
0,n
DIPLOME
0,n
titre
niveau
possèder
0,n
PERSONNE
PERSONNE
nom
PERSONNE
nom
1,n
prénom prénom
nom
1,1
1,1
1,n
1,n
1,nhabiter
prénom
LOGEMENT
LOGEMENT
adresse
LOGEMENT
adresse
1,1
0,n
1,n
habiter
adresse
1,n
habiter
• Relation
sursur
une
même
entité
: : :
• Relation
sur
une
même
entité
• Relation
une
même
entité
! collection: {ETUDIANT, DIPLOME}
! collection:
! dimension:
2 {ETUDIANT, DIPLOME}
!
dimension:
! identifiants: (nom)2 x (titre)
! identifiants: (nom) x (titre)
• Relation sur une même entité :
0,n
mère
mère
0,n mère
0,n
SOCIETE SOCIETE
SOCIETE
détenir détenir
détenir
N° SIRENN°
N° SIREN
SIREN
raison sociale
raison sociale
%%
capital
raison
sociale % capital
capital
capital
capital capital
Un graphe des occurrences possible :
Un graphe des occurrences possible :
0,n
filiale0,n0,n filiale
filiale
• Relation
de dimension
quelconque
• Relation
dede
dimension
quelconque
• Relation
de dimension
quelconque
: : ::
• Relation
dimension
quelconque
JOURNEE
JOURNEEJOURNEE
date
date
date
ENGIN
CHANTIER
ENGIN n°
ENGIN
engin
n° engin n°désignation
engin
désignationdésignation
0,n
0,n
ACTIVITE
ACTIVITE
type activité
libellé
type activité
type activité
d'oeuvre
libellé unitélibellé
unité d'oeuvre
unité d'oeuvre
0,n
0,n
0,n
0,n
ACTIVITE
CHANTIER
n°CHANTIER
chantier
désignation
n° chantier
n° chantier
désignationdésignation
0,n
travail réalisé
0,n
quantité
0,n
0,n
travail réalisé
travail réalisé
quantité
quantité
Bernard ESPINASSE - Modèle Entité-Relation : la base
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
Bernard ESPINASSE - Modèle Entité-Relation : la base
15
9
Bernard
ESPINASSE
- Modèle
Entité-Relation
la base
Bernard
ESPINASSE
- Modèle
Entité-Relation
: la base
Bernard
ESPINASSE
– Rappels
sur les
Bases: de
données
relationnelles
0,n
0,n
10
1610
10
Cardinalité (ou multiplicité) d’une entité dans
une relation (1)
Cardinalité ou multiplicité
Cardinalité d’une entité dans une relation (1)
: caractérise le rôle d'une entité dans une relation
• permet d'enrichir le modèle (niveau des types) en connaissances du niveau des
occurrences
x1 et x2 = cardinalités minimales
et
y1 et y2 = cardinalités maximales
! 0, n : une occurrence de CLIENT est en relation par la relation PASSER avec une
ou plusieurs occurrences de COMMANDE
Cardinalités fréquemment utilisées :
Participation
Optionnelle
Obligatoire
Unique
0,1
1,1
Multiple
0,n
1,n
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
! 1, 1 : une occurrence de COMMANDE est en relation par la relation PASSER
avec une et une seule occurrence de CLIENT
17
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
18
Cardinalité d’une entité dans une relation (3)
Cardinalité d’une entité dans une relation (2)
Cardinalités sur relation n-aire
! 1, n : une occurrence de COMMANDE est en relation par la relation
CONCERNER avec une ou plusieurs occurrences de PRODUIT
! 0, n : une occurrence de PRODUIT est en relation par la relation CONCERNER
avec aucune ou plusieurs occurrences de COMMANDE
un graphe des occurrences possible :
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
! 1 ) (0, n) : une occurrence de PROFESSEUR est en relation par la relation
ENSEIGNER avec aucun ou plusieurs couples d’occurrences (SALLE, PERIODE)
! 2 ) (0, n) : une occurrence de PERIODE est en relation par la relation
ENSEIGNER avec aucun ou plusieurs couples d’occurrences (PERIODE, SALLE)
! 3 ) (0, n) : une occurrence de SALLE est en relation par la relation ENSEIGNER
avec aucun ou plusieurs couples d’occurrences (PROFESSEUR, PERIODE)
19
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
20
Dépendances fonctionnelles
D
ess ffoonnccttiioonnnneelllleess
D ééppContraintes
eennddaanncce
d'intégrité
fonctionnelle
Modèles génériques de cardinalités individuelles
Modèles génériques de cardinalités individuelles
Contraintes d'intégrité fonctionnelle
mariage conventionnel
polyandrie
mariage
homme
femme
mariage
homme
0,1
0,1
1234 PX 13
1234 PX 13
femme
mariage
homme
0,1
0,n
soit:
soit:
soit:
femme
a
pére
0,n
voiture -------------->
--------------> personne
personne
voiture
voiture --------------> personne
appartient
appartient
appartient
0,n
pére / fils
Représentation::
Représentation
Représentation :
enfant
voiture
voiture
1,1
Bernard
Entité-Relation
: ladonnées
base relationnelles
BernardESPINASSE
ESPINASSE- –Modèle
Rappels
sur les Bases de
21 15
Jean LAFRANCE
Jean LAFRANCE
une voiture n'appartient qu'à une personne
une voiture
voiture n'appartient
n'appartient qu'à
qu'à une
une personne
personne
une
mariage de groupe
mariage
0,n
appartient
appartient
femme
0,n
0,1
polygamie
homme
Contraintes d'intégrité
fonctionnelle
Relation binaire fonctionnelle
:
Relation
Relationbinaire
binairefonctionnelle
fonctionnelle: :
...,1
...,1
appartenir
appartenir
personne
...,... personne
...,...
flèche
flèche
Bernard ESPINASSE - Modèle Entité-Relation : la base
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
Bernard ESPINASSE - Modèle Entité-Relation : la base
22 16
16
Dépendances fonctionnelles sur relations n-aire
Soit la contrainte à exprimer :
« pour toute période d'emploi du temps, (le mercredi de 9 h à 12 h), un professeur n'a
cours que dans une seule salle »
soit: PERODE x PROFESSEUR -----ENSEIGNER------> SALLE
3. Dé rivation d’un MLD-R à partir
d’un MCD e n Entité -Re lation
Limitation du formalisme Entité-Relation de base => besoin d’extension
•
•
•
•
Problématique du MLD
Formalisme graphique de Merise
Dérivation d’un MLD-R à partir d’un MCD en Entité-Relation
Création de tables en langage SQL (clé primaires et étrangères)
Types de dépendances fonctionnelles :
• simples (à un émetteur: a --> b)
• composées (à n émetteurs: a x b --> c) englobant pas la totalité de la collection
• composées (à n émetteurs: a x b --> c) englobant la totalité de la collection
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
23
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
24
Problématique du MLD
Dé marche d’é laboration d’un MLD Re lationne l
Modèle Conceptuel de Données (MCD) :
- permet de modéliser la sémantique des informations d’une façon
compréhensible par l’utilisateur de la future base de données
- utilise le formalisme (graphique) Entité-Relation
- ne permet pas d’implémentation informatique de la base de
données dans un SGBD donné
! MCD : Modèle Conceptuel de Données
! MLD-R : Modèle Logique de Données Relationnel
MCD
NIVEAU CONCEPTUEL
En formalisme Entité-Relation
Modèle Logique de Données (MLD) :
- permet de modéliser la structure selon laquelle les données
seront stockées dans la future base de données
- est adapté à une famille de SGBD : ici les SGBD relationnels (MLD
Relationnels ou MLD-R)
- utilise le formalisme graphique Merise
- permet d’implémenter la base de données dans un SGBD donné
En formalisme « Merise »
Création des tables de la base
de données en langage SQL
NIVEAU PHYSIQUE
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
25
MLD (Relationnel)
NIVEAU LOGIQUE
!
SGBD Relationnel
26
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
Formalisme graphique “Merise” pour le MLD-R (1)
Formalisme graphique “Merise” pour le MLDR (2)
Table
Lien entre tables : contrainte d’intégrité référentielle
Table EMPLOYE (représentation graphique) :
Table EMPLOYE (représentation graphique) :
EMPLOYE
EMPLOYE
Matricule
Nom_departement
Nom
Age
Adresse
Matricule
Nom
Age
Adresse
Schéma de la table EMPLOYE :
EMPLOYE (Matricule, nom, age, adresse)
Nom_departement
Effectif
Schémas des tables :
! Table DEPARTEMENT (Nom_departement, Effectif) :
! Nom_departement : clé primaire
Attributs de la table EMPLOYE :
! Matricule : clé primaire
! Nom, Age, Adresse : autres attributs
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
DEPARTEMENT
Appartenir
! Table EMPLOYE (Matricule, Nom_departement, Nom, Age, Adresse)
! Matricule: clé primaire
! Nom_departement : clé étrangère vers table DEPARTEMENT
27
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
28
Formalisme graphique “Merise” du MLD-R (3)
Formalisme graphique “Merise” du MLD-R (4)
Lien entre tables : clé primaire composée référentielle
Lien entre tables : contraintes d’intégrité référentielle réflexive
TACHE
N°ordre
N°projet
durée
TACHE
Précéder
PROJET
Concerner
N°tache
N°tache précédente
Désignation
Durée
N°projet
budget
Schémas des tables :
Schémas des tables :
! Table PROJET (N°projet, budget)
! N°projet : clé primaire
! Table TACHE (n°tache, n°tache_précédente, désignation, durée)
! N°tache : clé primaire
! Table TACHE (N°ordre, N°projet, durée)
! N°tache_précédente: clé étrangère vers table TACHE
! N°ordre, n°projet : clé primaire composée
! N°projet : clé étrangère vers table PROJET
29
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
MCD -> MLD : dérivation des entités
Dérivation d’un MLD-R à partir d’un MCD en
Entité -Re lation
Règle : toute entité du MCD se dérive en une table du MLD
Entité
MCD
NIVEAU CONCEPTUEL
En formalisme Entité-Relation
EMPLOYE
Matricule
Nom
Age
Adresse
Ensemble de règles
MLD (Relationnel)
NIVEAU LOGIQUE
30
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
Table
EMPLOYE
Matricule
Nom
Age
Adresse
En formalisme « Merise »
la propriété identifiante de l’entité devient
la clé primaire de la table
Création des tables de la base
de données en langage SQL
NIVEAU PHYSIQUE
!
SGBD Relationnel
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
31
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
32
MCD -> MLD : relations (*,N)-(1,1)
MCD -> MLD : relations (*,N)-(0,1)
MCD:
MCD :
EMPLOYE
DEPARTEMENT
appartenir
Matricule
Nom
Age
Adresse
1,N
1,1
PERSONNE
Nom_departement
Effectif
Nom
Prenom
Adresse
Date d’acquisition
0,N
MLD :
EMPLOYE
Matricule
Nom_departement
Nom
Age
Adresse
DEPARTEMENT
Appartenir
PERSONNE
Nom_departement
Effectif
MLD :
VOITURE
Posseder
Nom
Prenom
Adresse
P
o
s
s
Posseder e
d
e
r
0,1
Numero
Marque
Type
VOITURE
Numero
Nom
Marque
Type
Date d’acquisition
Schémas relationnels :
! PERSONNE (Nom, Prenom, Adresse) ;
! VOITURE (Numéro, Nom, Marque, Type, Date_acquisition) ;
Schémas relationnels :
! Table DEPARTEMENT (Nom_departement, Effectif) :
! Table EMPLOYE (Matricule, Nom_departement, Nom, Age, Adresse)
Nom_departement : clé étrangère vers table DEPARTEMENT
33
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
MCD -> MLD : relations (0,1)-(1,1)
MCD -> MLD : relations (0,1)-(0,1)
MCD :
MCD :
MAISON
EDIFICE
N°edifice
Type
Est-un
1,1
0,1
ENTREPRISE
N°maison
Adresse
34
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
N°entreprise
Adresse
TIERS
Correspondre
0,1
0,1
N°tiers
Type
MLD (solution 1) :
MLD :
N°edifice
Type
Est-un
TIERS
ENTREPRISE
MAISON
EDIFICE
N°entreprise
Adresse
N°maison
N°edifice
Adresse
Correspondre
N°tiers
N°entreprise
Type
Schémas relationnels :
Schémas relationnels :
! EDIFICE (N°edifice, Type) ;
! MAISON (N°maison, N°édifice, Adresse).
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
! ENTREPRISE (N°entreprise, Adresse) ;
! TIERS (N°tiers, N°entreprise, Adresse)
La cardinalité (0,1) pose le problème d’accepter des valeurs nulles sur l’attribut migrant
pouvant fixer le sens de migration (par exemple la taille des clés).
35
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
36
MCD -> MLD : relations (0,1)-(0,1)
MCD -> MLD : relations (0/1,N)-(0/1,N)
MCD :
MCD :
ENTREPRISE
N°entreprise
Adresse
0,1
C
o
r
r
e
s
Correspondre
p
o
n
d
r
e
MLD (solution 2) :
ENTREPRISE
N°entreprise
N°tiers
Adresse
Schémas relationnels :
COMMANDE
TIERS
Correspondre
N°commande
Date
Statut
N°tiers
Type
0,1
Porter
Qte-commandée
1,N
ARTICLE
N°article
0,N Désignation
Prix
MLD :
COMMANDE
TIERS
N°commande
Date
Statut
N°tiers
Type
PORTER
N°commande
N°article
Qte-commandée
ARTICLE
N°article
Désignation
Prix
Schémas relationnels :
! COMMANDE (N°commande, Date, Statut) ;
! PORTER (N°article, N°commande, Qte_commandée) ;
! ARTICLE (N°article, Désignation, Prix).
! ENTREPRISE (N°entreprise, N°tiers, Adresse) ;
! TIERS (N°tiers, Adresse)
Idem : la cardinalité (0,1) pose le problème d’accepter des valeurs nulles sur l’attribut
migrant pouvant fixer le sens de migration (par exemple, la taille des clés).
37
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
MCD -> MLD : relations ternaires ou plus (1)
MCD
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
38
MCD -> MLD : relations ternaires ou plus (2)
MLD
ENTREPRISE
MAISON
N°entreprise
Nom
Adresse
Coordonnées
Date_construction
Surface
O,N
ENTREPRISE
MAISON
Coordonnées
Date_construction
Surface
N°entreprise
Nom
Adresse
Date
Montant
O,N
TYPE_TRAVAUX
! MAISON (Coordonnées, Date_construction, Surface) ;
! TYPE_TRAVAUX (N°type_travaux, Désignation) ;
O,N
Realiser
Schémas relationnels associés :
REALISER
! RÉALISER (N°entreprise, Coordonnées, N°type_travaux, Date, Montant)
;
Coordonnées
N°entreprise
N°type_travaux
Date
Montant
! ENTREPRISE (N°entreprise, Nom, Adresse).
N°type_travaux
Désignation
TYPE_TRAVAUX
N°type_travaux
Désignation
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
39
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
40
MCD -> MLD : Re lations ré fle xive s (0,N)-(0,1)
MCD :
TACHE
N°tache
Désignation
Durée
Entité-Relation :
O,1
Correspondre
Solution 1
TACHE
N°tache
Désignation
Durée
TRAVAUX
N°travaux
Désignation
Durée
O,N
suit
O,N
précède
MLD :
MCD -> MLD : Re lations ré fle xive s (*,N)-(*,N)
Solution 2
Précéder
PRECEDER
N°tache
N°tache_suivante
ensemble
Relationnel dérivé :
TRAVAUX
N°travaux
Désignation
Durée
TACHE
N°tache
N°tache précédente
Désignation
Durée
Schémas relationnels :
élément
Décomposer
ensemble
élément
Schémas relationnels :
DECOMPOSER
N°travaux
N°travaux ensemble
! TRAVAUX (n°travaux, désignation, durée) ;
! DÉCOMPOSER (n°travaux, n°travaux_ensemble).
Solution 1 :
! TACHE (N°tâche, Désignation, Durée) ;
! PRÉCÉDER (N°tâche, N°tâche_suivante)
Solution 2 : TACHE (N°tâche, N°tâche_précédente, Désignation, Durée)
41
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
O,N
42
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
Rè gle de dé rivation : Ide ntifiant re latif
Exe mple de passage E-R au Re lationne l
MCD :
Entité-Relation :
PROJET
N°projet
Nom_projet
TACHE
Comporter
1,1
(R)
1,N
COMMANDE
CLIENT
n°client
nom
age
adresse
type
N°ordre
Désignation
1,n
PASSER
n°commande
date
statut
LIGNE_CMD
1,n
ARTICLE
qtО_cmdОe
qtО_livrОe
prix_unitaire
0,n
0,1
CA annuel
taux remise
FOURNISSEUR
MLD :
0,n
FOURNIR
n°article
dОsignation
qtО stock
poids
prix d'achat
prix de vente
n°fournisseur
nom
adresse
PROJET
Comporter
TACHE
Relationnel dérivé :
N°ordre
N°projet
Désignation
N°projet
Nom_projet
Schémas
1,1
COMMANDE
CLIENT
cli_num
cli_nom
cli_age
cli_adresse
cli_type
cli_ca
cli_tremise
relationnels :
! PROJET (N°projet, Nom_projet)
! TRANCHE (N°ordre, N°projet, Désignation)
PASSER
cmd_num
cmd_cli
cmd_date
cmd_statut
FOURNISSEUR
four_num
four_nom
four_adresse
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
43
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
LIGNE_CMD
lcd_cmd
lcd_art
lcd_qté
lcd_liv
lcd_pu
FOURNIR
ARTICLE
art_num
art_four
art_nom
art_stock
art_poids
art_pa
art_pv
44
E x e m p l e d e p assage E-R au relationnel
Introduction au langage SQL
• Modèle relationnel dérivé :
• Origine : SQL (Structured Query Language) est un langage de
requêtes standard pour les SGBD relationnels
COMMANDE
CLIENT
cli_num
cli_nom
cli_age
cli_adresse
cli_type
cli_ca
cli_tremise
PASSER
cmd_num
cmd_cli
cmd_date
cmd_statut
FOURNISSEUR
LIGNE_CMD
lcd_cmd
lcd_art
lcd_qté
lcd_liv
lcd_pu
FOURNIR
four_num
four_nom
four_adresse
• 3 niveaux de normes :
ARTICLE
art_num
art_four
art_nom
art_stock
art_poids
art_pa
art_pv
• SQL86 (standard ANSI en 86 puis ISO en 87) : la base puis SQL89
ou SQL1 : l’intégrité:
• SQL91 ou SQL2
• SQL3 (98) : SQL devient un langage de programmation et évolue
vers l’objet
• Schémas relationnels :
! CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise)
! ARTICLE (art_num, art_nom, art_four, art_stock, art_poids, art_pa, art_pv)
! COMMANDE (cmd_num, cmd_cli, cmd_date, cmd_statut)
! LIGNE_CMD (lcd_cmd, lcd_art, lcd_qte, lcd_liv, lcd_pu)
! FOURNISSEUR (four_num, four_nom, four_adresse)
Dans ce chapitre nous ne considèrerons que la création BASIQUE
de tables par la commande CREATE TABLE de SQL2,
45
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
Création d’une table en langage SQL (1)
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
46
Création d’une table (2) : clé primaire
Soit le MLD suivant :
•
CLIENT
cli_num
cli_nom
cli_age
cli_adresse
cli_type
cli_ca
cli_tremise
Table CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca,
cli_tremise)
COMMANDE
cmd_num
cmd_cli
cmd_date
cmd_statut
CREATE TABLE Client
(cli_num CHAR(8) NOT NULL,
cli_nom
CHAR(25) NOT NULL,
cli_age
INTEGER NOT NULL,
cli_adresse VARCHAR(80),
cli_type VARCHAR(16),
cli_ca INTEGER,
cli_tremise INTEGER NOT NULL,
PRIMARY KEY (cli_num)) ;
Schémas relationnels :
Table CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca,
cli_tremise)
NOT NULL : on n’accepte pas que l’attribut puisse avoir une valeur nulle (valeur
inconnue)
PRIMARY KEY (cli_num): l’attribut cli_num est clé primaire de la table Client.
- cli_num = clé primaire
Table COMMANDE (cmd_num, cmd_cli, cmd_date, cmd_statut)
Remarque : un attribut déclaré clé primaire doit être défini avec l'option NOT NULL
- cmd_num = clé primaire
- cmd_cli, = clé étrangère
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
47
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
48
Création d’une table (3) : clé étrangère
Création d’une table (4) : clé étrangère
Table COMMANDE (cmd_num, cmd_cli, cmd_date, cmd_statut)
Table ARTICLE (art_num, art_nom, art_four, art_stock, art_poids, art_pa,
art_pv) ;
Création de la table COMMANDE :
CREATE TABLE Commande
(cmd_num CHAR(8) NOT NULL,
cmd_cli
CHAR(8) NOT NULL,
cmd_date DATE NOT NULL,
cmd_statut
VARCHAR(16),
PRIMARY KEY (cmd_num),
FOREIGN KEY (cmd_cli) REFERENCES client);
PRIMARY KEY (cmd_num): l’attribut cmd_num est clé primaire de la table
Commande.
FOREIGN KEY (cmd_cli) REFERENCES client: l’attribut cmd_cli est une clé
étrangère qui réfère à la table Client
Remarques :
1- la table client doit déjà exister
2- l'attribut cmd_cli de la table commande est du même type que celui de la clé
primaire de la table client.
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
49
• Création de la table ARTICLE :
CREATE TABLE Article
(art_num CHAR(8) NOT NULL,
art_nom
VARCHAR(25) NOT NULL,
art_four CHAR(8) NOT NULL,
art_stock INTEGER NOT NULL,
art_poids NUMERIC (8,1),
art_pa INTEGER NOT NULL,
art_pv INTEGER NOT NULL,
PRIMARY KEY (art_num),
FOREIGN KEY (art_four) REFERENCES Fournisseur);
PRIMARY KEY (art_num): l’attribut art_num est clé primaire de la table article.
FOREIGN KEY (art_four) REFERENCES Fournisseur: l’attribut art_cli est une clé
étrangère qui réfère à la table Fournisseur.
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
50
Création d’une table (5) : clé primaire composée
Insertion d’enregistrement dans une table en SQL
Table LIGNE_CMD (lcd_cmd, lcd_art, lcd_qte, lcd_liv, lcd_pu)
Table CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca,
cli_tremise)
CREATE TABLE Ligne_cmd
(lcd_art CHAR(8) NOT NULL,
lcd_cmd
INTEGER NOT NULL,
lcd_qte
INTEGER NOT NULL,
lcd_liv
INTEGER,
lcd_pu INTEGER NOT NULL,
FOREIGN KEY (lcd_cmd) REFERENCES Commande,
FOREIGN KEY (lcd_art) REFERENCES Article,
PRIMARY KEY (lcd_cmd, lcd_art)) ; <- Clé primaire
CREATE TABLE Client
(cli_num CHAR(8) NOT NULL,
cli_nom
CHAR(25) NOT NULL,
cli_age
INTEGER NOT NULL,
cli_adresse VARCHAR(80),
cli_type VARCHAR(16),
cli_ca INTEGER,
cli_tremise INTEGER NOT NULL,
PRIMARY KEY (cli_num)) ;
composée
FOREIGN KEY (lcd_cmd) REFERENCES commande: l’attribut lcd_cmd est une
clé étrangère qui réfère à la table Commande.
FOREIGN KEY (lcd_art) REFERENCES commande: l’attribut lcd_art est une clé
étrangère qui réfère à la table Article.
Insertion d’un nouveau enregistrement dans la table Client :
INSERT INTO client VALUES (‘C2345’, ‘Tranvouez’, 29,
‘Marseille’, ‘particulier’, 3680, 25) ;
PRIMARY KEY (lcd_cmd, lcd_art): la clé primaire de la table Ligne_cmd est
composée des attributs lcd_cmd et lcd_art qui sont ici clés étrangères.
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
51
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
52
Suppression d’enregistrement dans une table
Table CLIENT (cli_num, cli_nom, cli_age, cli_adresse, cli_type, cli_ca, cli_tremise) ;
CREATE TABLE Client
(cli_num CHAR(8) NOT NULL,
cli_nom
CHAR(25) NOT NULL,
cli_age
INTEGER NOT NULL,
cli_adresse VARCHAR(80),
cli_type VARCHAR(16),
cli_ca INTEGER,
cli_tremise INTEGER NOT NULL,
PRIMARY KEY (cli_num)) ;
Suppression d’un enregistrement dans la table client :
• Niveau « Réel perçu » et « Niveau Interne ou Logique »
• Niveau « Conceptuel » et « Externe »
DELETE FROM client WHERE (cli_nom = ‘Tranvouez’);
53
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
Multiplicités moyennes des liens relationnels
personne
possèder
a1
r
a2
0,10
1,1
personne
a1
0,3
a2
r
0,5
voiture
b1
b2
card. mode 1
card moy = 5/4 = 1,25
card moy = 7/4 = 1,75
d'où:
10
maxi
selon la distribution, ici une loi triangulaire d'où moy = (mini+2(mod)+max)/4
d'où cardinalité moyenne = (0+2(3)+10)/4 = 4
si 10000 personnes, la relation "posséder" aura 40000 tuples
voiture
personne
4
a1
b1
a2
b2
a1
10000
r
40000
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
conduire
card. mode 1
mode
3 moyenne
54
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
Propagation des multiplicités moyenne
voiture
b1
b2
supposons une distribution triangulaire:
0
mini
4. Dime nsionne me nt d’une BD
Re lationne lle
voiture
b1
b2
personne
a1
a2
1000
1,25
conduire
a1
b1 r
r
1,75
715
1250 = n x 1,75
=> n= 1250/1,75
n = 715
nb
person
ne x
1,25 =
nb
voiture
x 1,75
soit:
1000 x 1,25 = 1250
55
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
56
Calculs cumulés des volumes des tables
• Il s’agit de faire sur un tableau, par exemple sous Excel, le
cumul du volume estimé de toutes les tables composant la
base de données
5. Sous sché ma de donné e s e t
valorisation de l'activité des
traite me nts sur la BD
• Ce tableau peut être paramétré
• Il permet d’estimer l’évolution du volume de la base de
données selon différents scénarii de croissance
• …
• Transformation de sous-schémas conceptuels (SSC) en sous-schémas
logiques (SSL)
• Valorisation des primitives logiques
57
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
Valorisation de l'activité des traitements sur la BD (1)
CLIENT
N°client
nom_client
adresse_client
passer
1,1
0,n
concerner
DEPOT
N°dépot
adresse_dépot
Sous-Schéma Logique
(SSL) associé
0,n
1,1
COMMANDE
N°commande
date_commande
DEPOT
N°dépot
adresse_dépot
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
2. Fréquence d'une tâche associée à un modèle externe
• fréquence du message associé au modèle externe exprimée par rapport à la période de
référence (généralement le mois moyen)
• basée sur la fréquence de survenance des événements initiateurs des procédures où
figure cette tâche
1,n
composer
qté_commandée
3. Transformation des actions en primitives
0,n
- #T : Accès à un tuple d'une table relationnelle par accés sur clé primaire, connaissant
une valeur de cette clé
- ?T : Accès à un tuple d'une table relationnelle par accès sur un autre attribut que la clé
primaire, ou sélection/restriction de tuples d'une table selon une qualification
- T+ : Ajout d'un tuple à une table relationnelle
- T- : Suppression d'un tuple à une table relationnelle. Cette primitive est notée T- nom de
la table.
- Tm : Modification d'un tuple d'une table relationnelle, par la modification de valeurs d'un
ou plusieurs attributs de ce tuple
- TXT': Jointure entre deux tables relationnelles T et T', par la modification de valeurs d'un
ou plusieurs attributs de ce tuple. Cette primitive est notée TXT' noms des tables
concernées .
ARTICLE
N°article
libellé_article
COMMANDE
CLIENT
N°client
nom_client
adresse_client
58
Valorisation de l'activité des traitements sur la BD (2)
1. Transformation de sous-schémas conceptuels (SSC) en sous-schémas
logiques (SSL)
Sous-Schéma
Conceptuel (SSC)
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
N°commande
N°client
N°dépot
date_commande
COMPOSER
N°commande
N°article
qté_commandée
ARTICLE
N°article
libellé_article
59
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
60
Valorisation de l'activité des traitements sur la BD (3)
Valorisation de l'activité des traitements sur la BD (4)
Illustration des primitives relationnelles :
• Actions associées à la prise en compte d'une nouvelle occurrence de
COMMANDE:
Sous-Schéma Conceptuel
(SSC)
COMMANDE
CLIENT
n°commande
n°client
date
n°client
nom client
LEC
LEC
n°client
COMMANDE
nom client
0001!!!!!!!!DUPONT
0002
MARTIN
0003!!!! DURAND
...
#CLIENT (N°0003)
CRE
passer
1,1
0,n
concerner
CLIENT X COMMANDE
CLIENT
CLIENT
N°client
nom_client
adresse_client
n°commande
n°client
100
101
102
0001
0001
0001
12-02
19-03
22-04
103
104
0002
0002
12-02
20-04
105
....
0003
12-02
DEPOT
N°dépot
adresse_dépot
date
1,n
m = 4,2
composer
qté_commandée
CRE
CRE
CRE
0,n
0,n
ARTICLE
N°article
libellé_article
LEC
m = cardinalité moyenne = 4,2
(en moyenne, une commande porte sur de 4,2 articles)
Sous-Schéma Logique
(SSL) associé
N°commande
N°client
N°dépot
date_commande
CLIENT
N°client
nom_client
adresse_client
4,2
DEPOT
N°dépot
adresse_dépot
61
T+
COMMANDE
#T
#T
?COMMANDE (date=12-02)
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
1,1
COMMANDE
N°commande
date_commande
COMPOSER
T+
N°commande
N°article
qté_commandée
ARTICLE
N°article
libellé_article
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
#T
62
Valorisation de l'activité des traitements sur la BD (5)
Valorisation de l'activité des traitements sur la BD (4)
4. Récapitulatif de l'activité valorisée par primitive
5. Poids relatif des primitives en accès logiques
• pour chaque modèle externe : traduction des actions, en primitives
• effectuer ce calcul d'abord pour l'activité unitaire de la tâche, puis de la multiplier par la
fréquence de la tâche sur la période de référence.
• cumul par primitive de l'activité supportée par le modèle (total par ligne). Du fait de
l'hétérogénéité des primitives en termes d'équivalent-accès, seul le cumul par primitive a
une signification :.
Définir des équivalents-accès-logiques = poids relatifs entre les différentes primitives.
primitives
#T CLIENT
#T DEPOT
T+ COMMANDE
T# ARTICLE
T+ COMPOSER
activité unitaire
1
1
1
1x4,2
1x4,2
activité mensuelle
10 000
10 000
10 000
42 000
42 000
→ repérer les primitives à forte activité, et retrouver les modèles externes responsables
• en pratique:
en l'absence d'outil logiciel prenant en charge cette valorisation fortement algorithmique,
pratiquer ces calculs que sur un échantillon d'une vingtaine de modèles externes
remarquables par leur fréquence, d'aspect critique (comme dans d'autres domaines la loi
des 80-20 se constate également ici).
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
63
Conventions pour la valorisation des primitives logiques
1- unité d'accés logique = #T, toutes les autres seront exprimées en fonction de #T.
2- le nombre de tuples occupées par une table T sera noté NbT(T)
3- le nombre de pages occupées par une table T sera noté NbP(T)
avec :
• NbP(T) = NbT(T)/nombre moyen de tuples dans la page
• le nombre moyen de tuples dans la page dépendra :
- de la taille de la page, noté P
- de la taille du tuple, noté T
- du taux de remplissage de la page
• ces valeurs seront liées au SGBD et à l'organisation de la table adoptés.
• on pourra faire des calculs en première approximation avec un taux de
remplissage de 80% et des pages de 4K.
Exemple :
NbT(T) = 10000; P = 4Koctets; taux de remplissage de 80%; T = 200 octets;
Nombre moyen de tuples par page = 4000x0,8/200 = 16
NbP(T) = 10000/16 = 625 pages.
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
64
Valorisation des primitives logiques (1)
Valorisation des primitives logiques (2)
• valeurs moyennes pour SGBDR actuellement commercialisés, une réflexion nécéssaire
sur la pertinence de ces valeurs dans le contexte de la BD
#T =1
: sélection selon clé primaire = unité d'accés logique
?T= NbP(T) : sélection selon un attribut non clé primaire sans index secondaire :
balayage séquentiel
?T= Sx(NbP(T)+NP(I)):
si le critère de sélection comprend plusieurs termes dont un
faisant intervenir un index secondaire I (avec S = facteur de sélectivité du
critère, cad la probabilité qu'un tuple satisfasse le critère; NbP(T) = nb
pages de la table T; NbP(I) = nb pages de l'index I)
T+ = T- = 4: le tuple est atteint par 1 accès à l'index + 1 accès à la page contenant le
tuple cherché + 1 mise à jour d'une page + 1 mise à jour de l'index.
Tm = 3:
le tuple est atteint par 1 accès à l'index + 1 accès à la page contenant le
tuple cherché + 1 écriture sur page.
Globalement on pourrait retenir :
primitive
équivalent accès
#T
1
Tm
3
T+=T-
4
?T
NbP(T)
?T si critère/index
Sx(NbP(T)+NP(I))
TXT'
S(NbP(T) + (N(T)xNbP(T'))
TXT' = S(NbP(T) + (N(T)xNbP(T'))) : jointure, avec NbP(T) = nombre page de la table
T, S = facteur de sélectivité du critère sur T, N(T) = nombre de tuples de
T satisfaisant le critère, NbAP(T') = nombre page de la table T'
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
65
Bernard ESPINASSE – Rappels sur les Bases de données relationnelles
66
Téléchargement