Documente Academic
Documente Profesional
Documente Cultură
Introduction,
Conception du
modle E/R (oracle)
et
Normalisation
Bref historique
Les donnes reprsentent une ressource organisationnelle et informationnelle cruciale
que lentreprise se doit de matriser. La majorit des organisations ne saurait russir sans
connatre les donnes exactes de leur entreprise et de leur environnement externe
Pendant trs longtemps, les systmes dinformation des entreprises structuraient leurs
donnes sous forme de fichiers, chaque application utilisait donc son propre fichier.
Beaucoup de problmes taient connus de cette faon de grer les donnes dune
entreprise : la redondance dinformation, la dpendance des donnes des traitements, et
le manque dintgration de donnes en font partie.
Devant le volume dinformation grandissant et la complexit des traitements, le stockage
des donnes dans de simples fichiers nest plus la solution pour le stockage du
patrimoine informationnel de lentreprise. Un moyen de palier aux problmes de la
gestion des fichiers est le SGBD. (Systmes de Gestion de Bases de Donnes).
Vers la fin des annes 60 et le dbut des annes 70, sont apparus les premiers SGBDs
hirarchiques et rseaux. Vers le milieu des annes 70, nous avons vu natre les SGBDs
relationnels, qui utilisent le modle relationnel de Edgar Frank Ted
Codd pour la
modlisation des donnes. Aujourdhui les SGBD relationnels sont prsents dans la
majorit des entreprises.
Concepts de base
1. Dfinition dune base de donnes
Une base de donnes est un ensemble de donnes modlisant les objets dune partie du
monde rel et se servant de support une application informatique.
Un SGBD (systme de gestion de base de donnes) peut-tre peru comme un ensemble
de logiciels systme permettant aux utilisateurs dinsrer, de modifier et de rechercher
efficacement des donnes spcifiques dans une grande masse dinformation partage par
de multiples utilisateurs.
Non redondance des donnes : permet de rduire le risque dincohrence lors des
mises jour, de rduire les mises jour et les saisies.
Partage des donnes : ce qui permet de partager les donnes dune base de
donnes entre diffrentes applications et diffrents usagers.
Cohrence des donnes : ce qui permet dassurer que les rgles auxquelles sont
soumises les donnes sont contrles surtout lors de la modification des donnes.
Scurit des donnes : ce qui permet de contrler les accs non autoriss ou mal
intentionns. Il existe des mcanismes adquat pour autoriser, contrler ou
denlever des droits nimporte quel usager tout ensemble de donnes de la
base de donnes.
3. Types de SGBD
Relationnel
Rseau
Hirarchique
les donnes sont reprsentes ou stockes sur les supports de stockage. Ce niveau est
compltement pris en charge par les SGBD. (SGBDR Oracle)
4.3.
schma conceptuel par un groupe dutilisateurs concerns par une application ou une
partie de lapplication. Il sagit de dcrire laide de schmas externes (vues) la faon
dont seront perues les donnes par les programmes.
5.2.
Entit : Collection dobjets de mme type concrets ou abstraits ayant une existence
propre dans le systme. Une entit doit avoir plus dune occurrence et elle doit tre
dcrite par au moins un attribut, sinon il faudra se questionner sur son existence.
Exemple : Etudiant peut tre une entit dans le systme de la gestion des tudiants. En
effet un tudiant est reprsent par plusieurs attributs comme le nom et le prnom. Et
nous avons plusieurs occurrences de Etudiant. Deux occurrences de Etudiant sont
Lefebvre Martin, Yacoub Saliha
Personnages est galement une entit le jeu vido Warcraft
Dans le formalisme de MERISE, une entit est reprsente par un rectangle.
Etudiant
NoEtudiant
Nom
Prnom
Cours
CodeCours
Titre
Une relation reprsente une association entre deux ou plusieurs entits traduisant un fait
ou un vnement dont le systme voudra garder trace. Le nom choisi pour une relation
est un verbe daction permettant de dcrire la relation.
Dans le formalisme de Merise, une relation est reprsente par un cercle ou un ovale.
Cours
Etudiant
NoEtudiant
Nom
Prnom
CodeCours
Titre
inscrit
Remarque :
Dans le formalisme de Merise les relations peuvent contenir des attributs.
Dans lexemple prcdent, on peut inclure la date dinscription un cours dans la
relation (plus loin, lors de la normalisation, nous expliquerons ce choix)
Etudiant
NoEtudiant
Nom
Prnom
Cours
inscrit
DateInscription
CodeCours
Titre
Attributs (proprits) :Un attribut est la plus petite information que lon conserve
dans le systme.. un attribut permet didentifier, de dcrire, ou de quantifier une entit
ou une relation. Un attribut est obligatoirement rattach une relation ou une entit et
doit avoir une signification UNIQUE dans le modle conceptuel et ne peut tre rattach
qua un seul concept (entit ou relation)
La valeur dun attribut est une donne dans le systme.
5.3.
Types de relation :
Entit A
Entit B
relation
(x,1)
ou
(x,n)
(x,1)
ou
(x,n)
La valeur de gauche (loptionalit) indique si les occurrences des lentit sont obliges
de participer la relation. Les valeurs possibles sont : 0 pour optionnel et 1 pour
obligatoire.
La valeur de droite le degr ou la multiplicit) indique le nombre maximum de fois
quune occurrence de lentit participe la relation. Les valeurs possibles sont 1 pour une
seule participation et N pour plusieurs participation.
Exemple
Employ
Entreprise
travaille
(1,1)
(1,n)
Caractristiques
Les relations ne sont pas porteuses de proprits (contrairement au
modle Merise)
Les relations ont des noms indiquant leurs rles dans le systme.
Dans une entit lidentifiant est prcd du symbole #
Dans une entit les attributs obligatoires sont prcd du symbole *
Dans une entit, les attributs optionnels sont prcds du symbole o
Les cardinalits sont reprsentes par des lignes avec les terminaisons possibles
suivantes :
signification
Obligatoire
signification
Unique
(0,1)
(1,1)
Multiple
0,n)
(1,n)
Pour une entit dans le modle, la ligne prs de lentit indique loptionalit et la
ligne au bout indique la multiplicit.
Exemple 1 et explication
ETUDIANT
#Code_Permanent
*Nom
*Prenom
oAdresse
PROGRAMME
#Code_prog
*description
inscrit
contient
Ce qui veut dire
(1,n)
(1,1)
ETUDIANT
#Code_Permanent
*Nom
*Prenom
oAdresse
STAGE
#Num_Stage
*description
a
affect
appartient
propose
ENTREPRISE
#Num_Entreprise
*Adresse
Exemple 3
FOURNISSEUR
#NoFournisseur
+AdresseFournisseur
PRODUIT
#NoProduit
+Description
vend
vendu
Est responsable
EMPLOYE
#empno
*nom
*prenom
oadresse
A pour responsable
Autres concepts
Gnralisation dentit.
La gnralisation dentit consiste regrouper sous la mme entit plusieurs entits
ayant les mmes caractristiques.(un peu comme le concept dhritage en POO.).
On appelle entit surtype, lentit qui englobe plusieurs entits.
On appelle entit sous-type une entit lintrieur de lentit surtype.
Exemple
EMPLOYES
#empno
*nom
*prenom
oadresse
EMPLOYES_A_CONTRAT
*NoContrat
*Taux_Horraire
EMPLOYES_PERMANENTS
*Salaire_Annuel
*Echelon
Dans le modle prcdent, lentit EMPLOYS est lentit surtype . Les entits
EMPLOYES_PERMANENTS et EMPLOYE_A_CONTRAT sont des entits sous-type.
Chacune delles possdent ses propres proprits et les proprits de lentit surtype
EMPLOYS.
Ce type de modle fait penser au concept dhritage dans la POO.
Identifiant Relatif
Il existe des entits dont les occurrences ne peuvent tre identifies par lidentifiant
de lentit en question, on dit alors que lentit a un identifiant faible. Pour
identifier parfaitement les occurrences, nous devons utiliser lidentifiant dune autre
entit.
Exemple 1
EMPLOYE
#empno
*nom
*prenom
oadresse
ENFANT
#noenfant
*prenom
ETUDIANT
#Code_Permanent
*Nom
*Prenom
oAdresse
INSCRIT
*DateInscription
COURS
#CodeCours
*Titre
Touts les attributs non calculs sont prsents dans une entit ou une relation
dans le cas du modle de MERISE)
EMPLOYE
#empno
*nom
*prenom
Oadresse
Groupe de
donnes
rptitif
NoProjet1
Desrription_projet1
Date_debut1
NoProjet2
Date_debut2
Desrription_projet2
NoProjet3
Desrription_projet3
Date_debut3
EMPLOYE
#empno
*nom
*prenom
oadresse
PROJET
#NoProjet
*Desrription_projet1
*Date_debut1
Une entit ou une relation est en deuxime forme normale 2FN, si elle est :
a. En 1FN
b. Tous les attributs de la relation ou de lentit dpendent de toute la cl
(identifiant) et non dune partie de la cl.
Ce genre de vrification sapplique surtout aux relations avec cardinalits (m :N), m tant
gale 0 ou 1 et N >1
Exemple :
Pour lensemble des tudiants de 3eme session informatique de gestion, on souhaite
garder les notes finales quils ont obtenues pour chaque cours.
ETUDIANT
#Code_Permanent
*Nom
*Prenom
oAdresse
RESULTAT
*Note_Fianle
COURS
#CodeCours
*Titre
Dans le modle prcdent, il est clair que la note finale dun tudiant dpend de
ltudiant et du cours quil suit.
Voici un exemple de notes finales que lon peut avoir.
Code_Permanent
CodeCours
Note_Finale
Poif9859-06
420-KED
85
Lef765-06
420-KED
73
Faf231-05
420-KED
77
Poif9859-06
420-KEG
72
Lef765-06
420-KEG
82
Poif9859-06
420-KEF
80
ETUDIANT
#Code_Permanent
*Nom
*Prenom
oAdresse
Code_prog
NomProg
La raison pour la quelle cette nest pas en est que lattribut NomProg dpend aussi de
lattribut Code_prog. (le code 420 implique informatique.)
Pour avoir une entit en 3FN, il faut sortir les attributs Code_prog et NomProg de
lentit, les mettre dans une entit part (PROGRAMME) et crer une relation entre
ETUDIANT et PROGRAMME
ETUDIANT
#Code_Permanent
*Nom
*Prenom
oAdresse
PROGRAMME
#Code_prog
*description
inscrit
contient
Le Modle Relationnel
Introduction :
Le modle relationnel (mis de lavant par Edgar Frank Codd) est le plus implment et le
plus stable des modles actuellement utiliss. Dans ce modle la gestion des donnes est
simplifie grce aux contraintes dintgrit. Le systme de rcupration des donnes
permet lutilisateur de visualiser la base de donnes travers des structures de tables
relationnelles.
Lunit de stockage lmentaire est la table . En gnral, c'est aux tables que les
utilisateurs font rfrence pour accder aux donnes. Une base de donnes est constitue
de plusieurs tables relies entre elles.
Une table est constitue de lignes et de colonnes
Exemple de table
Voici la table Livres qui contient des informations par rapport des livres de notre
bibliothque.
NumeroLivre
TitreLivre
Auteur
Langue
101
Ainsi parlait
Friedrich Nietzsche
Allemand
Aldous Huxley
Anglais
Zarathoustra
102
La paix des
profondeurs
103
Les misrables
Victor Hugo
Franais
104
Pierre Falardeau
Franiais
une marque de
yogourt
Remarquez
1- Chaque colonne dfinit un attribut. Un attribut est appel galement champ de la
table. Les champs servent donner la Dfinition d'une table.
2- Chaque ligne dfinit une instance (ou une occurrence) de la table Livres. Une
ligne reprsente galement un enregistrement d'une table.
3- Une table est donc un ensemble d'enregistrements. Pour dfinir un
enregistrement on utilise des champs ou des attributs.
Dans une base de donnes Oracle, on utilise la commande CREATE pour crer une table.
Exemple
CREATE TABLE Livres (NumLivre NUMBER(5), TitreLivre CHAR (20), Auteur
CHAR(20), Langue CHAR (10));
Pour insrer des donnes dans une table, on utilise la commande INSERT
Exemple
INSERT INTO Livres VALUES (101,'SQLPLUS', 'Oracle','Franais');
Pour afficher le contenu d'une table on utilise la commande SELECT
Exemple
SELECT * FROM Livres, permet d'afficher Tous les enregistrement de la table Livres.
Dfinitions
Termes
Dfinitions et reprsentation
Domaine
Relation
Attribut
Occurrence
Identifiant
Table
Cl primaire
Cl trangre
Modle Relationnel
Lentit EMPLOYE
la table EMPLOYE
EMPLOYE
#empno
*nom
*prenom
oadresse
devient
EMPLOYE
#empno
*nom
*prenom
oadresse
Cl Primaire
0 :N
OU
0 :N
0 :N
1 :N
OU
1 :N
la nouvelle table hrite des cls primaires provenant des tables relies pour
devenir des cls trangres. Ces cls trangres forment galement une cl
primaire compose de la nouvelle table.
Les cls trangres sont auront des valeurs obligatoires (puisquelles forment une
cl primaire compose) et la participation est multiples. (la valeur de la cl
trangre peut revenir plusieurs fois).
FOURNISSEUR
#NoFournisseur
+AdresseFournisseur
vend
PRODUIT
#NoProduit
+Description
FOURNISSEUR
VEND
PRODUIT
#NoFournisseur
+AdresseFournisseur
#NoFournisseur
#NoProduit
#NoProduit
+Description
1,n
1,n
1 :N
Explications
Selon la rgle 1, les entits sont devenues des tables :
-
Selon la rgle 2, nous obtenons la table vend dont la cl primaire est la cl compose
NoFournisseur, NoProduit.
Dans la table Vend, les cls trangres ont une participation obligatoire et multiple.
Obligatoire car ce sont des cls primaires (NOT NULL, non nullit)
Multiple, car un la participation des occurrences des entits (Fournisseurs et Produits)
dans la relation VEND est multiple.
Exemple doccurrences de la table Fournisseurs
NoFournisseur
AdresseFournisseur
F001
F002
Description
C100
Chaise de bureau
M100
P102
Exemple doccurrences pour VEND
NoProduit
NoFournisseur
C100
F001
M100
F001
P102
F001
C100
F002
M100
F002
IMPORTANT :
Dans la table PRODUITS, on ne peut pas trouver la cl primaire qui se
rpete.C100, ne doit se retrouver quune seule fois dans toute la table.
(Dfinition dune cl primaire). Dans la table VEND, cette occurrence de la
cl primaire se rpte pour chaque fournisseur qui vend le produit
0 :N
0 :1
0 :N
1 :1
1 :N
1 :1
OU
1 :N
0 :1
Exemple et explication
Modle E/A (oracle)
Le modle E/A suivant exprime le fait suivant :
un tudiant effectue 0 N stages (0 :N)
un stage est affect 0 ou 1 tudiant. (0 :1)
Nous avons donc faire un cas de la rgle 3
ETUDIANT
#Code_Permanent
*Nom
*Prenom
oAdresse
STAGE
#Num_Stage
*description
effectue
affect
ETUDIANT
STAGE
#Code_Permanent
*Nom
*Prenom
oAdresse
#Num_Stage
*description
+oCode_Permanent
0,1
Cl trangre
Remarque 1
Dans la table STAGE, remarquez que Code_Permanent (cl primaire de la table
tudiant) est devenue une proprit de la table STAGE, cette proprits est appel CL
ETRANGRE.
Remarque 2
STAGE
#Num_Stage
*description
appartient
propose
ENTREPRISE
#Num_Entreprise
*Adresse
STAGE
ENTREPRISE
#Num_Entreprise
*Adresse
1,1
#Num_Stage
*description
+*Num_Entreprise
Remarque 1
Dans la table STAGE, remarquez que Num_Entreprise (cl primaire de la table
Entreprise) est devenue une proprit de la table STAGE, cette proprits est appel
CL ETRANGRE.
Remarque 2
Le lien entre les tables pointera sur la table qui a hrit de la cl trangre. Le lien
sera obligatoire si la table qui a hrit de la cl trangre avait une participation
obligatoire la relation et optionnel dans le cas contraire.
0 :1
0 :1
0 :N
1 :1
OU
1:
0 :1
1:
1 :1
Cas (0:1----1:1)
Le lien entre les tables pointera sur la table qui a hrit de la cl trangre. Le lien
sera obligatoire avec la participation unique.
Exemple
Cas (0:10:1)
Dans ce cas nimporte quelle table peut hriter de la cl primaire de lautre table
pour devenir une cl trangre avec valeur optionnelle. Le choix de la table qui va
hriter de la cl dpendra du systme.
Le lien entre les tables pointera sur la table qui a hrit de la cl trangre. Le lien
sera optionnel avec la participation unique
Exemple
Dans une petite PME, les employs ont droit au maximum 1 stage ltranger.
Un stage ltranger est affect une seule personne. (Certains stages ne sont pas
affects car ils nintressent pas les employs)
EMPLOYE
#empno
*nom
*prenom
oadresse
Solution suggre
affect
STAGE_ETRANGER
#noStage
*dateDebut
*dateFin
*Description
*Pays
EMPLOYE
STAGE_ETRANGER
#empno
*nom
*prenom
oadresse
+noStage
#noStage
*dateDebut
*dateFin
*Description
*Pays
0 :1
Dans cette PME, ce qui nous intresse est de savoir pour chaque employ sil a effectu
un stage ltranger. Si noStage dans la table EMPLOYE a une valeur (non Nulle), cela
veut dire que lemploy a eu son stage. Pour avoir les informations du stage, il faut aller
dans la table STAGE_ETRANGER.
Cas (1:1----1:1)
On doit dabord vrifier si lon ne peut pas inclure les deux tables dans une seule,
ce qui est en gnral le cas. Dans ce cas-ci, la cl primaire de la nouvelle table sera
lune ou lautre des cls primaires des deux tables initiales, une cl composes des
deux cls primaires, ou alors une nouvelle cl primaire
Si lon ne peut pas scinder les deux tables en une seule, alors les mmes rgles
cites pour le cas optionnel sappliquent, avec valeur obligatoire.
Exemple
EMPLOYE
#empno
*nom
*prenom
oadresse
CONTRAT
#noContrat
*dateDebut
*dateFin
Soit on garde une seule table comme suit et on choisi de garder le empno comme cl
primaire. (on peut galement choisir de garder le noContrat comme cl primaire ou une
composition des deux cl primaires)
EMPLOYE
#empno
*nom
*prenom
oadresse
*noContrat
*dateDebut
*dateFin
Autre solution
Cette solution consiste faire migrer la cl primaire de la table CONTRAT, dans la table
EMPLOYE. Cette Cl aura une valeur unique obligatoire
EMPLOYE
#empno
*nom
*prenom
oadresse
+noContrat
CONTRAT
1 :1
#noContrat
*dateDebut
*dateFin
Remarque : il existe une autre solution. Elle consiste faire migrer la cl primaire de la
table EMPLOYE, dans la table CONTRAR. Cette Cl aura une valeur unique obligatoire
La relation devient une table de lien avec une cl primaire compos de deux
fois lidentifiant de lentit. les attributs constituant la cl primaire sont
galement qualifis de cl trangres..
Les lient entre les deux tables pointeront sur la nouvelles table. Les liens sont
obligatoires car les cls trangres sont devenues une cl primaire compose.
La participation est multiple
Exemple :
Est responsable
EMPLOYE
#empno
*nom
*prenom
oadresse
A pour responsable
Rsultat
EMPLOYE
#empno
*nom
*prenom
Oadresse
+empnoresponsable
Cl
trangre.
EMPLOYE
#empno
*nom
*prenom
oadresse
TypeEmp
oNoContrat
oTaux_Horraire
oSalaire_Annuel
oEchelon
demploy.
TypeEmp Peut prendre la valeur 1 sil sagit dun employ permanent
et la valeur 2 sil sagit dun employ contrat.
NoContrat, Taux_Horraire, Salaire_Annuel et Echelon on des valeurs
optionnelles. Si lemploy est permanent alors la valeur de lattribut
Taux_Horraire peut tre NULL (pas zro). Le contrle de ces
rubriques optionnelles peut se faire avec une contrainte CHECK dans
ORACLE
EMPLOYE
#empno(PK)
*nom
*prenom
adresse
NAS
Cette table, bien quelle soit en 3FN nest pas en BCNF puisque le nom et prnom
dpendent aussi du NAS.
Exemple2 :
Soit la table suivante : Cette table est bel et bien en 3FN
LocalisationVins
#Cru
#Pays
Region
Qualit
Exemple
Soit la table suivante :
Dans cet exemple on considre quun cours est donn par un seul prof et quun
prof peut donner plus dun cours.
Un tudiant peut suivre plusieurs cours et un cours et suivi par plusieurs
tudiants
ETUDIANT-COURS-PROF
#Code_Permanent
#Code_cours
#numProf
Code_cours
Franais 101
Franais 102
Anglais101
Franais102
Anglais102
Franais 101
Franais 101
Num_Prof
50
51
53
50
55
50
50
ETUDIANT-COURS
#Code_Permanent
#Code_cours
COURS-PROF
#Code_cours
numProf (cl trangre)
On peut retrouver facilement avec une jointure dun prof dans un cours donn.
(pas de perte dinformation)
Attention !!!
Si un cours est donn par plusieurs professeurs alors le numProf doit tre une cl
primaire dans la table COURS-PROF. Dans ce cas nous avons une perte
dinformation : On ne peut pas retrouver les tudiants dun prof dans
un cours
Pour pouvoir retrouver les tudiants dun prof dans un cours, il
faudra revenir la premire table qui est :
ETUDIANT-COURS-PROF
#Code_Permanent
#Code_cours
#numProf
Sources
Shamkant B. Navath, Evolution of Data Modeling for Databases, communication of
the ACM, 1992
James A.OBrien, Guy Marion et Gilles Saint Amant, Les systmes dinformation de gestion :
La perspective du gestionnaire utilisateur, 1995