Vous êtes sur la page 1sur 47

Chapitre 2: Les modles de donnes rseau et hirarchique

27
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Chapitre 2 : Les modles de donnes rseau et hirarchique
1. Le modle de donnes rseau gnral
1.1 Caractristiques principales
Un modle de donnes Rseau gnral (ou PLEXE) est un modle dans lequel les relations entre
les entits sont reprsentes par des liens qui peuvent tre 1:1, 1:N, N:1, ou N:M. Ces liens en nombre
quelconque peuvent associer toute paire dentits du modle. Ils devront tre distingus les uns des
autres par un identificateur.
Lexemple suivant va nous permettre de prciser la signification de tous les liens (ou
associations) existants entre les entits
Figure 2.1 : Exemple de modle de donnes de type rseau gnral
Un lien de type 1 : 1 associe une occurrence de lentit origine une et une seule
occurrence de lentit darrive. Il faut remarquer que dans ce type de lien les cardinalits
(1:1) ne suffisent pas pour orienter le lien afin de distinguer lentit origine du lien de celle
darrive. Cest pour cela que la smantique du lien doit tre vhicule par le nom du lien.
Par exemple le lien 1:1 existant entre les deux entits WILAYAS et WALI et ayant pour
nom A_Pour_Wali sous entend quon oriente le lien de lentit WILAYAS vers lentit
WALI. On aurait pu utiliser le mme lien mais en lorientant de lentit WALI vers lentit
WILAYAS grce au nom du lien qui serait dans ce cas Est_Wali_De.
1: N Est_Peupl_Par
1:1 Se_Trouve_Dans
1:N
1:1
A_Pour_Wali
Est_Compose_de
WALI
PAYS
WILAYAS
Est_Implante_Dans
Regroupe
Habite_Dans N: 1
1:N Est_Habite_Par
N : M
SOCIETES
PERSONNES
Villes
Chapitre 2: Les modles de donnes rseau et hirarchique
28
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Un lien de type 1:N associe une occurrence de lentit origine (se trouvant du ct de la
flche simple) zro (0), une (1) ou plusieurs (N) occurrences de lentit darrive (se trouvant
du ct de la flche double). Lorientation du lien est donc entirement dtermine grce aux
cardinalits 1:N. Le nom attribu au lien permet de rattacher une smantique au lien. Par
exemple le lien Est_Habit_Par de type 1:N va implicitement de lentit VILLES vers
lentit PERSONNES et permet de modliser le fait quune ville v soit habite par 0, une
ou plusieurs personnes.
Un lien de type N:1 associe 0, une ou plusieurs occurrences de lentit origine (se
trouvant du ct de la flche double, une et une seule occurrence de lentit darrive (se
trouvant du ct de la flche simple). Ce lien est donc implicitement orient de lentit se
trouvant du ct de la flche double vers lentit se trouvant du ct de la flche simple. Par
exemple le lien Habite_Dans de type N:1 allant de lentits PERSONNES vers lentit
VILLES modlise le fait que 0, une ou plusieurs personnes Habitent dans une seule ville.
Un lien de type N:M associe 0, une ou plusieurs occurrences de lentit origine (se
trouvant du ct de la premire flche double), 0, une ou plusieurs occurrences de lentit
darrive (se trouvant du ct de lautre flche double). L aussi, les cardinalits N:M ne
suffisent pas pour fixer lorientation du lien afin de pouvoir distinguer entre lentit origine
et lentit darrive de ce lien. Cest le mme problme que dans le cas dun lien de type 1:1
et par consquent la smantique du lien doit tre vhicule par le nom qui sera attribu au
lien. Par exemple, le lien N:M entre les entits VILLES et SOCIETES et ayant pour nom
Est_Impante_Dans sous-entend quon oriente le lien de lentit SOCIETES vers lentit
VILLES puisque dans la ralit on dit quune socit est implante dans une ville (ou
possde un sige dans une ville). La possibilit qui consisterait orienter le lien de lentit
VILLES vers lentit SOCIETES permettrait quant elle de modliser une autre ralit qui
signifie quune ville regroupe 0, une ou plusieurs socits. Il faudra dans ce cas donner au
lien N:M un nom qui vhicule cette smantique. Dans notre exemple cest le nom Regroupe
attribu au lien qui renseigne sur cette smantique.
1.2 Diagramme de structure de donnes de BACHMAN
1.2.1 Dfinition
Un diagramme de BACHMAN (appel aussi diagramme de structures de donnes) est un modle
de donnes de type rseau gnral mais dans lequel toutes les relations entre les entits sont de type 1:
N. Nous rappelons que la reprsentation graphique dun modle de donnes sous forme de botes et de
flches a t propose justement par BACHMAN. Auparavant, on ne reprsentait un modle de
donnes que par le biais de structures de donnes plus proche du niveau physique telles que des liste
chanes et des fichiers ce qui rendait difficile ltape de conception du modle de donnes.
Lavantage du diagramme de BACHMAN est donc de permettre une reprsentation simple et
uniforme des modles de donnes base sur deux concepts : la bote (rectangle) modlisant une entit
et la flche modlisant un lien entre deux entits. Pour obtenir un tel modle, il est bien souvent
ncessaire de transformer tous les liens de type N:M en des liens 1:N. Bien entendu, le modle ne
comportera pas de lien N:M, mais peut cependant avoir plusieurs liens 1:N entre deux mmes entits
qui seront alors diffrencis par un nom (i.e. un identificateur).
1.2.2 Mthodes de transformation des liens N:M
Un lien N:M (complexe) entre deux entits peut tre transform de telle sorte que les liens
rsultants soient de type 1:N en utilisant lune des mthodes suivantes :
Chapitre 2: Les modles de donnes rseau et hirarchique
29
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
1.2.2.1 Cration dune entit dintersection
Cette mthode consiste crer une nouvelle entit appele entit dintersection qui possdera une
cl obtenue par concatnation des cls des deux entits participant au lien N:M. Considrons
lexemple suivant o nous avons deux entits A et B entre lesquelles existe un lien N:M :
La transformation de ce lien par la mthode de lentit dintersection donnerait :
Figure 2.2 : Transformation dun lien N:M par la mthode de lentit dintersection
1.2.2.2 Mthodes des entits virtuelles et des pointeurs logiques
Cette mthode consiste crer des entits virtuelles appeles aussi entits pointeurs qui sont
constitues de pointeurs et contenant autant de pointeurs que lentit pointe. Un pointeur logique doit
tre vu ce niveau comme une cl de lentit concerne.
Avec cette mthode, la transformation du lien N:M de lexemple prcdent donnerait :
Figure 2.3 : Transformation dun lien N:M par la mthode de lentit virtuelle
Les flches en pointills signifient que lentit virtuelle contient des pointeurs logiques (ou cls)
sur lentit pointe (A ou B). Cette solution a surtout pour but dviter le problme de duplication des
entits qui comme on le sait engendre de la redondance dinformation avec tous les problmes qui en
dcoulent (gaspillage de lespace mmoire, risque dincohrence, etc.). En effet, rien ne nous interdit
pour transformer le lien complexe N:M de crer une copie de chaque entit A et B (i.e. avec les mmes
attributs) mais auxquelles on donnera deux noms distincts par exemple A2 et B2.
Entit Virtuelle A
Contenant des Pointeurs sur A
Entit Virtuelle B
Contenant des Pointeurs sur B
A
1:N
B
1:N
Entit dIntersection
N : M
B
A
Autres Attributs
de lentit .........
#A . #B
1:N L2 L1 1:N
A B
Chapitre 2: Les modles de donnes rseau et hirarchique
30
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
On aura donc le modle suivant :
Figure 2.4 : Transformation dun lien N:M par duplication des entits
Les deux entits A2 et B2 seront dfinies au mme niveau que A et B et de la mme faon. Un
SGBD ne peut en aucun cas dduire par exemple que lentit A2 et une copie de lentit A ni que B2
et une copie de lentit B et ce malgr que celles-ci ont les mmes attributs. Mis part les problmes
de redondance dinformation et leurs consquences, cette solution oblige le programmeur de grer lui
mme les problmes de cohrence car toute mise jour dans A ou B devra obligatoirement tre
rpercute dans A2 ou B2 respectivement. En effet, ce travail ne peut en aucun tre fait par le SGBD
qui ignore comme on la dit plus haut que A2 est une copie de A et que B2 est une copie de B puisque
les entits sont simplement distingues par leurs noms.
Par contre dans le cas de la mthode des entits virtuelles, cest le SGBD qui met la disposition
du programmeur des instructions du LDD pour spcifier que telle entit est virtuelle cest dire
quelle a t dfinie auparavant et quon veut simplement la rutiliser pour les besoins du modle sans
la redfinir. Il devient ainsi possible dviter les problmes de duplication dinformation. Cette
technique est utilise par exemple avec les SGBD hirarchiques.
2. Le modle de donnes rseau de Codasyl
Le modle rseau propos par le Data Base Task Group (DBTG) est un modle de type
diagramme de BACHMAN. Tous les liens sont donc de type 1:N, cest dire quaucun lien complexe
N:M nest autoris. Dans ce cas, si le processus de modlisation conduit un modle de donnes
comportant des liens complexes (N:M), il faudra ncessairement pour se conformer aux spcifications
du modle rseau CODASYL, les transformer en des liens 1:N.
2.1 Principaux concepts du modle
Le modle rseau CODASYL propose deux concepts de base, les enregistrements appels
RECORD dans la terminologie CODASYL et les liens (ou associations) entre enregistrements
appels SET.
2.1.1 Lenregistrement
Un enregistrement ou RECORD est dcrit par un nom (identificateur) unique permettant de le
A
B2
LAB
1:N
B
A2
LBA
1:N
Chapitre 2: Les modles de donnes rseau et hirarchique
31
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
distinguer parmi lensemble des enregistrements du schma conceptuel et par un ensemble dattributs
chacun possdant un nom et un type (entier, rel, chane de caractres, etc.).
Lexemple suivant permet davoir une ide approximative sur la faon de dcrire un
enregistrement avec un SGBD CODASYL :
RECORD NAME IS EMPLOYE
02 Numero PICTURE 9(6)
02 Nom PICTURE A(12)
02 Nbre_Enfants PICTURE 99
02 Enfants OCCURS Nbre_Enfants TIMES
03
Prenom_Enfant
TYPE IS CHARACTER 10
03
Age_Enfant
PICTURE 99
03
Annee_Scolaire
PICTURE 99
Figure 2.5 Exemple de description dun enregistrement selon CODASYL
Les mots en gras sont des mots clefs du langage de description de donnes(LDD) offert par le
SGBD. Lenregistrement ici sappelle EMPLOYE et possde comme attributs :
un numro identifi par Numero de type numrique six (06) chiffres :PICTURE 9(6)
un nom identifi par Nom de type alphabtique 12 caractres : PICTURE A(12)
un nombre denfants identifi par Nbre_Enfants de type numrique 2 chiffres
(PICTURE 99)
de 0 Nbre_Enfants enfants (variable selon chaque employ) chaque enfant tant
caractris par les attributs :
4 un prnom identifi par Prenom_Enfant de type caractre pouvant occuper jusqu 10
au maximum
4 un ge identifi par Age_Enfant de type numrique 2 chiffres (PICTURE 99)
4 une anne scolaire identifie par Annee_Scolaire de type numrique 2 chiffres
(PICTURE 99)
2.1.2 Le Lien ou SET
Un lien entre deux entits est appel un SET dans la terminologie CODASYL. Lentit origine du
SET est dite propritaire ( ou Owner en anglais ). Cest le cas de lentit MEDECIN dans la figure
ci-dessous. Lentit sur laquelle arrive le SET (larc) est dite membre du SET ( ou Member en
anglais ). Cest le cas de lentit MALADES dans la figure ci-dessous. Un SET permet dassocier
une occurrence de lentit (ou enregistrement) propritaire une ou plusieurs occurrences de lentit
membre (car tout lien du modle est de type 1:N) alors quinversement chaque occurrence de lentit
membre ne peut tre associ quau plus une occurrence de lentit propritaire.
Chapitre 2: Les modles de donnes rseau et hirarchique
32
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Un exemple de reprsentation graphique dun SET CODASYL serait :
Figure 2.6 : Reprsentation graphique dun SET CODASYL
Dans la reprsentation graphique dun SET, il nest pas ncessaire dindiquer par une double
flche que le lien est de type 1:N puisque tous les liens sont sous entendus tre de type 1:N. On
reprsente donc simplement un SET laide dun arc orient de lentit propritaire vers lentit
membre et on le distingue par un nom. Sur la figure ci-dessus, le SET a pour nom Examine et est
orient dans le sens MEDECIN vers MALADES.
Dans le cas o la modlisation conduit des liens N:M, il faudra donc pour passer au modle
Rseau CODASYL, les transformer en des liens 1:N par lune des mthodes prsentes plus haut. Le
mcanisme daccs qui permet de passer dune occurrence de lentit propritaire aux occurrences de
lentit membre qui lui sont associes par le lien est en gnral celui dune liste circulaire ayant pour
tte de liste loccurrence de lentit Propritaire .
Un exemple de reprsentation par liste circulaire dune occurrence du SET Examine
serait comme suit :
Figure 2.7 Reprsentation dune occurrence dun SET par une liste circulaire
2.1.3 Remarques
Cette liste circulaire ne reprsente quune seule occurrence (on dit aussi ralisation) du SET ayant
pour nom Examine. Sur la figure 2.7, la tte de la liste contient loccurrence Pasteur de
lenregistrement MEDECIN qui est le Propritaire du SET. Les membres de la liste sont : Ali,
Omar,.... et enfin Kamel qui sont toutes des occurrences de lenregistrement MALADES. Cette
reprsentation est possible car chaque occurrence de lenregistrement de type MALADES (ex : Ali,
Omar, ...ou Kamel) nest associ qu une seule occurrence de lenregistrement de type MEDECIN
(ex : Pasteur) et ne peut donc apparatre que dans une seule liste circulaire. En effet, si une occurrence
de lenregistrement de type MALADES pouvait tre parcouru par plusieurs listes ayant chacune pour
tte une occurrence diffrente de MEDECIN, il faudrait un nombre variable de pointeurs rajouter
chaque occurrence de MALADES et aussi celles de MEDECIN (en tte de chaque liste). Au fond,
cette solution difficile implmenter ne vise qu modliser le fait quun malade peut tre examin par
plusieurs mdecins et quun mdecin peut examiner plusieurs malades et qui nest autre quun lien
complexe N:M. Cest donc pour des raisons lies des difficults dimplmentation quune
MALADE
MEDECIN
Examine
Pasteur

Kamel

Ali

Omar

Chapitre 2: Les modles de donnes rseau et hirarchique
33
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
association de type N:M na pas t retenue dans le modle rseau de CODASYL.
Au niveau physique, il y aura pour chaque SET autant de listes quil y a doccurrences de
lenregistrement propritaire de ce SET. On dit que chaque liste est une ralisation du lien L. Ce
sera la mme chose pour tous les autres SET existant entre les enregistrements du modle.
2.1.4 Exemple de transformation dun lien N:M
Considrons deux entits INSTITUTS et MODULES qui sont associes par un lien N:M
modlisant le fait quun module peut tre enseign dans 0, 1 ou plusieurs instituts et quinversement
un institut peut dispenser 0, 1 ou plusieurs modules. En nous limitant lexemple de 3 instituts qui
dispensent respectivement les modules suivants :
4 un institut dinformatique qui dispense les modules : INF123, M002 et P014
4 un institut de mathmatiques qui dispense le module : M002
4 un institut de physique qui dispense les modules : M002 et P014
(Les codes INF123 signifiant le module dinformatique N123, M002 signifient le module de
Mathmatiques N 002 et P014 signifiant le module de Physique N 014 )
La reprsentation laide dun diagramme des associations existant entre les occurrences
des entits INSTITUTS et MODULES donnerait :
Figure 2.8 : Diagramme des associations entre les occurrences des deux entits
La transformation du lien N:M en utilisant la mthode de lentit dintersection donnerait :
Figure 2.9 : Transformation du lien N:M entre INSTITUTS et MODULES
#Instituts et #Modules dsignent respectivement les cls des entits INSTITUTS et MODULES.
1:N
L1
1:N
L2
Entit dintersection
#Instituts . #Modules
INSTITUTS MODULES
INF 123
M 002
P 014

Physique
Mathmatiques

Informatique
Chapitre 2: Les modles de donnes rseau et hirarchique
34
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Comme nous lavons dj signal, la cl de lentit dintersection que nous avons note sur la figure
par #Instituts. #Modules sera obtenue par concatnation de ces deux cls. Sur le plan pratique, il
sagira dune entit dont la cl est compose des deux attributs : #Institut et #Module
Chaque enregistrement de lentit Instituts va tre une tte de liste pour la ralisation du lien L1
allant de lentit Instituts vers lentit dintersection. Il en sera de mme pour les enregistrements de
lentit Modules pour la ralisation du lien L2 allant de lentit Modules vers lentit dintersection.
La ralisation des liens L1 et L2 grce au mcanisme de la liste circulaire pourrait tre
schmatise comme suit :
Figure 2.10 : Reprsentation des SET L1 et L2 par liste circulaires
On remarque que chaque occurrence de lentit INSTITUTS ou MODULES est une tte de liste.
On remarque quil y a trois (03) listes ralisant le SET L1 ayant chacune pour tte une occurrence de
INSTITUTS savoir : Informatique puis Mathmatiques puis Physique. Ltablissement du
chanage des occurrences des propritaires avec les occurrences des membres respectifs est reprsente
par des flches en trait plein et les pointeurs servant parcourir chacune des listes sont reprsents
par le symbole . Ce pointeur caractrise donc sans ambigut le SET L1. IL en est de mme pour la
ralisation du SET L2 ayant pour Propritaire lentit MODULES et pour membre lentit
dintersection. Pour le SET L2, le chanage est reprsent par des flches en traits pointills et les
pointeurs par le symbole 4 qui caractrise aussi sans ambigut le SET L2.
Compte tenu du fait que sur un enregistrement peuvent arriver autant de liens quon veut et que de
ce mme enregistrement peuvent aussi partir autant de liens quon veut, le nombre de pointeurs qui
seront rajouts par le SGBD chaque occurrence de cet enregistrement sera gal : (Nombre de liens
entrants + Nombre de liens sortants). Il faut prciser que chaque pointeur sert pour grer un lien
(SET) et un seul. Par exemple, le nombre de pointeurs qui sont rajouts chaque occurrence de
lentit dintersection sera donc gal 2 puisque on a un Nombre de liens entrants gal 2 et un
Nombre de liens sortants gal 0 (ce qui donne bien 0 + 2 = 2). Par contre le nombre de pointeurs
qui sont rajouts chaque occurrence de lentit INSTITUTS (Propritaire du lien L1) ou celle de
4
4
4
Informatique
#Infor. #Inf 123
#Infor. #M002
#Infor. #P014
Inf 123
4
4
#Math. #M002
Mathmatiques
M002
4
Physique
4
#Phys. #M002
4
#Phys. #P014
P014
4
Chapitre 2: Les modles de donnes rseau et hirarchique
35
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
MODULES (Propritaire du SET L2) sera gal simplement 1 puisquon a un Nombre de liens
entrants gal 0 et un Nombre de liens sortants gal 1 (ce qui donne bien 0 + 1 = 1 et ce aussi
bien pour INSTITUTS que pour MODULE).
2.1.5 Remarques importantes
La cration dune entit dintersection a lieu dans la phase de modlisation et est impose par le fait
que le modle de donnes support par le SGBD ne permet pas de liens complexes N:M entre deux
entits. Le SGBD en lui-mme ne fait pas de distinction entre les entits et na pas distinguer si telle
ou telle entit est une entit dintersection ou pas. Ainsi, une entit dintersection peut mme avoir des
attributs qui lui sont propres en plus de sa cl obtenue par concatnation. A ce niveau, il faut prciser
que le rsultat de la phase de modlisation nest en ralit quune version sur papier du schma
conceptuel de la base de donnes et sur lequel il est videmment possible de distinguer que telle entit
est une entit dintersection. Cependant, dans la phase de description de ce schma conceptuel laide
du Langage de Description de donnes (LDD) offert par le SGBD, toutes les entits seront dcrites de
la mme faon et il ny a pas dintrt pratique de distinguer ce niveau les entits dintersection des
autres entits. Nous rappelons que le concept dentit dintersection sert essentiellement pour viter les
liens complexes de type N:M qui ne sont pas autoriss par le modle rseau tel quil a t spcifi par
le groupe CODASYL.
2.1. 6 Proprits dun schma conforme au modle rseau CODASYL
Les notions de SET (ou lien) et de RECORD (ou enregistrement) servent de support principal la
dfinition du schma dune base de donnes conforme au modle rseau propos par CODASYL. La
structure dun schma dpend troitement de lapplication qui a ncessit sa mise en place. Cependant,
il existe un certain nombre de proprits qui doivent tre respectes lors de ltablissement de tout
schma et ce indpendamment de lapplication. Ce sont les suivantes :
Dun enregistrement on peut faire partir autant de liens diffrents que lon veut
Sur un enregistrement peuvent arriver autant de liens que lon veut.
Entre deux enregistrements distincts P et M, il peut y avoir plusieurs liens diffrents
allant de P vers M et inversement.
Sur un enregistrement, il ne peut y avoir de lien pouvant boucler sur ce mme
enregistrement (lien rflexif)
Limpossibilit davoir un lien rflexif est de au fait que limplmentation physique dun lien est
faite gnralement laide dun ensemble de listes circulaires dont chacune a pour tte une
occurrence de lenregistrement propritaire du lien et dont les autres lments sont des occurrences de
lenregistrement membre qui sont lies loccurrence de ce propritaire. Dans le cas dun lien rflexif,
il sera donc difficile de distinguer parmi les occurrences composant la liste loccurrence du
propritaire (tte de liste) des occurrences du membre car elles sont toutes de mme type. Il faut ce
niveau souligner que la distinction entre un enregistrement propritaire dans un SET dun
enregistrement membre de ce mme SET se fait grce au type de lenregistrement qui est caractris
par son nom (identificateur).
Si la ralisation physique des SET peut se faire par le biais des listes circulaires, celle des
RECORD (entits ou enregistrements) se fait gnralement par le biais de fichiers classiques. Lors du
parcours dune liste circulaire ralisant un SET, le SGBD passe dun fichier (celui contenant les
occurrences du propritaire) un autre fichier (celui contenant les occurrences du membre) et
inversement. Dans un lien rflexif, cest le mme fichier qui contiendra les occurrences du propritaire
Chapitre 2: Les modles de donnes rseau et hirarchique
36
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
et celles du membre (mme type denregistrement dfini par un nom). IL sera donc trs difficile pour
ne pas dire impossible pour le SGBD de distinguer entre les occurrences du Propritaire et celles du
membre. Cest donc pour des raisons purement techniques ayant trait aux difficults de mise en uvre
au niveau physique dun lien rflexif que ce type de lien na pas t autoris dans le modle rseau
CODASYL.
Il faut cependant noter que la possibilit davoir un lien rflexif partant dun enregistrement de
type P et bouclant sur P serait trs utile au niveau de la modlisation car ce cas se rencontre trs
frquemment en pratique.
Par exemple le lien rflexif dfini sur lentit Personne pourrait modliser la ralit
suivante :
Figure 2.11 : Lien rflexif sur lentit PERSONNE
o le lien A_Pour_Enfants modlise la ralit quune Personne peut avoir zro, un ou plusieurs
enfants et le lien A_Pour_Frres modlise la ralit quune Personne peut avoir zro, un ou
plusieurs frres.
Un autre exemple serait le lien rflexif quon pourrait dfinir sur lentit Pices et qui
pourrait modliser la nomenclature dune pice :
Figure 2.12 : Lien rflexif sur lentit PIECE
o le lien Compose modlise la ralit quune PIECE peut participer la composition de zro, une
ou plusieurs autres pices et le lien Est_Compose_De modlise la ralit quune PIECE peut tre
compose partir dune ou de plusieurs autres pices (ici au minimum une pice car dans le cas dune
pice indcomposable celle-ci nest compose que delle mme).
2.2 Description dun schma avec un LDD de type CODASYL
2.2.1 Exemple illustratif
Considrons la base de donnes reprsente par le modle rseau gnral de la figure ci-dessous et
obtenu par lapplication dun processus de modlisation sans tenir compte des spcificits du modle
rseau de CODASYL.
PERSONNE
PERSONNE
PERSONNE
A_Pour_Frres
A_Pour_Enfants
PIECE
Est_Compose_De
Compose
PIECE PIECE
Chapitre 2: Les modles de donnes rseau et hirarchique
37
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
La ralit modlise par cet exemple est la suivante :
Un Fournisseur peut fournir 0, 1 ou plusieurs Produits et inversement un Produit
peut tre fourni par 0, 1 ou plusieurs Fournisseurs ;
Un Client peut commander 0, 1 ou plusieurs Produits et inversement un Produit peut
tre command par 0, 1 ou plusieurs Clients.
Figure 2.13 Exemple de modle pouvant rsulter de la phase de modlisation
Un modle sous cette forme nest pas conforme aux spcifications du modle rseau propos par le
DBTG et ce cause des liens complexes N:M quil comporte. Nous allons essayer de le transformer
en utilisant deux entits dintersection, lune que nous appellerons PRIX et qui permettra de
transformer le lien N:M entre lentit Fournisseurs et lentit Produits, et lautre que nous
appellerons COMMANDES et qui permettra de transformer le lien N:M entre lentit Clients et
lentit Produits.
Le lien N:M entre lentit FOURNISSEURS et lentit PRODUITS sera donc remplac par deux
liens de type 1:N. lun allant de lentit FOURNISSEURS vers lentit dintersection PRIX et ayant
pour nom : FOURNISSEUR_PRIX, lautre allant de lentit PRODUITS vers lentit dintersection
PRIX et ayant pour nom : PRODUIT_PRIX.
Le lien N:M entre lentit CLIENTS et lentit PRODUITS sera aussi remplac par deux liens de
type 1:N lun allant de lentit CLIENTS vers lentit dintersection COMMANDES et ayant pour
nom : COMMANDE_CLIENT, lautre allant de lentit PRODUITS vers lentit dintersection
COMMANDES et ayant pour nom : COMMANDE_PRODUIT
Ainsi, on obtient un modle rseau comportant uniquement des liens 1:N. Cest donc bien
un modle rseau CODASYL (ou aussi un diagramme de Bachman ) :
Figure 2.14 Modle rseau CODASYL aprs transformation des liens N:M
Les entits PRIX et COMMANDES sont les entits dintersection que nous avons introduit. Le
Fournisseurs Produits Clients
N: M N:M
FOURNISSEUR_PRIX
FOURNISSEURS
PRIX
COMMANDES
CLIENTS
COMMANDE_CLIENT
Produits
COMMANDE_PRODUIT
PRODUIT_PRIX
Chapitre 2: Les modles de donnes rseau et hirarchique
38
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
schma est donc compos de cinq entits qui sont : FOURNISSEURS, PRODUITS, CLIENTS,
COMMANDES et PRIX. Il comporte aussi quatre SET qui sont : FOURNISEUR_PRIX,
PRODUIT_PRIX, COMMANDE_PRODUIT et COMMANDE_CLIENT.
2.2.2 Structure dun schma
La description dun schma selon les spcifications du DBTG comprend quatre types de
dclarations :
E La dclaration du nom du schma qui servira au SGBD le distinguer parmi lensemble
des schmas grs par le SGBD ;
E Une ou plusieurs dclarations dAREA prcisant les noms des zones physiques du
support de stockage dans lesquelles seront crites les occurrences des enregistrements de
la base de donnes.
- Cette proposition consistant dclarer des AREAS au mme niveau que celui de
la dfinition logique du schma a t vivement critiqu car elle va lencontre de
lindpendance physique des donnes. Nanmoins le DBTG la justifie par le fait
quelle permet daider le SGBD mieux grer lorganisation physique des donnes
E Une ou plusieurs dclarations de type denregistrement (ou RECORD). Un type
denregistrement est dcrit de manire analogue une description denregistrement en
COBOL cest dire par un nom et un ensemble dattributs possdant chacun un type
(entier, chane de caractres, etc.) et un format ;
E Une ou plusieurs dclarations de lien (ou SET), spcifiant les associations entre les types
denregistrement dj dfinis.
2.2.3 Programme de description
Nous donnons dans ce qui suit une description la CODASYL de ce schma. Il ne sagit pas ici
de respecter scrupuleusement la syntaxe du langage de description (LDD) propos par le groupe
puisque tel nest pas notre objectif. Nous voulons surtout permettre au lecteur davoir une ide sur ce
quoi pourrait ressembler un programme de description du schma conceptuel ou logique dune base de
donnes avec un SGBD CODASYL. Une discussion du programme nous permettra de mettre en
vidence lessentiel des propositions de CODASYL.
01 SCHEMA NAME IS GESTION_VENTES
02 AREA NAME IS COMMANDES_CLIENTS
03 AREA NAME IS PRODUITS_FOURNISSEURS
04 RECORD NAME IS CLIENTS
05 PRIVACY LOCK FOR GET FIND IS 266D
06 PRIVACY LOCK FOR MODIFY, INSERT, DELETE, REMOVE, STORE IS CHEF_VENTES
07 LOCATION MODE IS CALC HASH-PROC1 USING Num_Client IN CLIENTS
08 DUPLICATES ARE NOT ALLOWED
09 WITHIN COMMANDES_CLIENTS
10 IDENTIFIER IS Num_Client IN CLIENTS
Chapitre 2: Les modles de donnes rseau et hirarchique
39
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
11 02 Num_Client PICTURE 9(6).
12 02 Nom_Client PICTURE A(12).
13 02 Adr_Client
14 03 Numro PICTURE 999.
15 03 Rue PICTURE X(15).
16 03 Code_Postal PICTURE 9(5).
17 03 Ville PICTURE A(20).
18 RECORD NAME IS FOURNISSEURS
19 LOCATION MODE IS CALC HASH-PROC2 USING Num_Fourn IN FOURNISSEURS
20 DUPLICATES ARE NOT ALLOWED
21 WITHIN PRODUITS_FOURNISSEURS
22 IDENTIFIER IS Num_Fourn IN FOURNISSEURS
23 02 Num_Fourn PICTURE 9(6)
24 02 Nom_Fourn PICTURE A(15)
25 02 Adr_Fourn PICTURE X(20)
26 02 Tlphone PICTURE 9(8)
27 RECORD NAME IS PRODUITS
28 LOCATION MODE IS CALC HASH-PROC3 USING Num_Produit IN PRODUITS
29 DUPLICATES ARE NOT ALLOWED
30 WITHIN PRODUITS_FOURNISSEURS
31 IDENTIFIER IS Num_Produit IN PRODUITS
32 02 Num_Produit PICTURE 9(4).
33 02 Nom_Produit PICTURE X(15).
34 RECORD NAME IS COMMANDES
35 LOCATION MODE IS
36 SYSTEM DEFAULT
37 WITHIN COMMANDES_CLIENTS
38 02 Quantit PICTURE 9(3)
39 02 Num_Produit IS VIRTUAL SOURCE IS Num_Produit OF OWNER OF
COMMANDE_PRODUIT
40 02 Num_Client IS VIRTUAL SOURCE IS Num_Client OF OWNER OF
COMMANDE_CLIENT
41 RECORD NAME IS PRIX
42 LOCATION MODE IS
43 SYSTEM DEFAULT
44 WITHIN PRODUITS_FOURNISSEURS
45 02 Prix_Unit PICTURE 9999V99
46 02 Num_Produit IS VIRTUAL SOURCE IS Num_Produit OF OWNER OF
PRODUIT_PRIX
47 02 Num_Fourn IS VIRTUAL SOURCE IS Num_Fourn OF OWNER OF
FOURNISSEUR_PRIX
48 SET NAME IS FOURNISSEUR_PRIX
49 ORDER IS SORTED
50 MODE IS CHAIN
51 OWNER IS FOURNISSEURS
52 MEMBER IS PRIX INSERTION IS AUTOMATIC
53 RETENTION IS MANDATORY
54 ASCENDING KEY IS Num_Fourn
55 DUPLICATES ARE NOT ALLOWED
56 SET SELECTION IS THRU FOURNISSEUR_PRIX
Chapitre 2: Les modles de donnes rseau et hirarchique
40
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
57 OWNER IDENTIFIED BY Num_Fourn IN FOURNISSEURS
58 SET NAME IS PRODUIT_PRIX
59 ORDER IS SORTED
60 OWNER IS PRODUITS
61 MEMBER IS PRIX INSERTION IS MANUAL ; RETENTION IS OPTIONAL
62 ASCENDING KEY IS Num_Produit, Prix_Unit
63 DUPLICATES ARE NOT ALLOWED
64 SET SELECTION IS THRU PRODUIT_PRIX OWNER IDENTIFIED BY Num_Produit
65 IN PRODUITS
66 SET NAME IS COMMANDE_PRODUIT
67 ORDER IS NEXT
68 MODE IS CHAIN
69 OWNER IS PRODUITS
70 MEMBER IS COMMANDES INSERTION IS MANUAL ; RETENTION IS OPTIONAL
71 DUPLICATES ARE ALLOWED
72 SET SELECTION IS THRU COMMANDE_PRODUIT OWNER IDENTIFIED BY
Num_Produit IN PRODUITS
73 SET NAME IS COMMANDE_CLIENT
74 ORDER IS NEXT
75 MODE IS CHAIN
76 OWNER IS CLIENTS
77 MEMBER IS COMMANDES INSERTION IS MANUAL ; RETENTION IS OPTIONAL
78 DUPLICATES ARE ALLOWED
79 SET SELECTION IS THRU COMMANDE_CLIENT OWNER IDENTIFIED BY
Num_Client IN CLIENTS
Figure 2.15 : Description dun schma avec un LDD CODASYL
2.2.4 Discussion du programme
Compte tenu de la structure dun schma, on remarque quun programme de description est form
de quatre sections de dclarations savoir :
2.2.4.1 Dclarations relatives aux noms du schma et des Areas
Linstruction 1 permet de dfinir le nom du schma qui sera : GESTION_VENTES
Les instructions 2 et 3 indiquent les noms des AREAS (ou zones) dans lesquelles les
enregistrements de la base de donnes vont rsider. On spcifie quon a deux AREAS lune
sappelant : COMMANDES_CLIENTS et lautre : PRODUITS_FOURNISSEURS. Il
faut cependant remarquer quon ne dfinit ce niveau que les noms logiques (i.e. des
identificateurs) des AREAS et quaucune adresse physique sur le support nest prcise. Le
travail dassociation dune adresse physique un nom dAREA sur le support de stockage
sera donc du ressort du SGBD.
2.2.4.2 Dclarations relatives aux enregistrements (RECORD)
Linstruction 4 permet de dfinir le type denregistrement ayant pour nom : CLIENTS. Les
Chapitre 2: Les modles de donnes rseau et hirarchique
41
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
instructions 5 et 6 permettent de contrler laccs ce type denregistrement. Linstruction 5
prcise que les oprations de lecture (GET, FIND ) ne peuvent tre ralises sur CLIENTS
que si le programme dapplication fournit la cl de protection qui est : 266D. Linstruction
6 quant elle permet de prciser que les oprations : MODIFY, INSERT, DELETE,
REMOVE, STORE sur CLIENTS ne pourront tre ralises que si le programme
dapplication fournit la cl de protection qui est : CHEF_VENTES.
Linstruction 7 dfinit le mode de localisation < 07 LOCATION MODE IS CALC ....>
dune occurrence dun enregistrement de type CLIENTS. Le mode de localisation spcifi
dans ce cas consiste transformer une valeur de lattribut Num_Client en une adresse sur le
support en appliquant cette valeur la procdure de transformation ayant pour nom : HASH-
PROC1 et qui est en quelque sorte une fonction de hachage. De telles fonctions sont soit
offertes par le SGBD soit crites pour le besoin de lapplication par ladministrateur de la
base de donnes. Dautres modes de localisation sont aussi possible. Ce sont :
Mode Direct ( dclar avec LOCATION MODE IS DIRECT ) : Ce mode prcise
que les occurrences dun enregistrement sont accds directement grce une adresse
dans le fichier qui les contient. Une telle adresse est appele dans la terminologie du
DBTG une cl Base de Donnes (database key). Cette dernire nest pas une adresse
physique mais peut tre vue comme une adresse symbolique dsignant un numro
dordre dune occurrence dans le fichier.
Mode VIA ( dclar avec LOCATION MODE IS VIA nom_dun_set SET ) : Ce
mode prcise que les occurrences du membre du SET dont le nom est spcifi dans
linstruction doivent tre regroupes physiquement avec loccurrence du propritaire
laquelle elles sont lies dans ce SET. Lavantage du mode VIA est la possibilit
daccder en mme temps toutes les occurrences du membre qui sont lis une
occurrence donne du propritaire. Ceci permet principalement de minimiser le
nombre daccs disque. Il faut prciser que ce mode de localisation est valable
uniquement pour les enregistrement qui sont membre dun SET et peut conduire des
structures complexes.
E Par exemple dans le schma suivant :
On peut spcifier que le mode de localisation de R2 est VIA le SET L2 et/ou que le
mode de localisation de R3 est VIA le SET L3 et/ou que le mode de localisation de
R4 est VIA le SET L4.
Ainsi, le SGBD devra tenir compte de tous ces choix qui peuvent alors conduire des
structures trs complexes puisquil sagira toujours de respecter la proximit physique
des occurrences du membre avec loccurrence dun propritaire.
L3
L2
R1 R3
R2 R4
L4
Chapitre 2: Les modles de donnes rseau et hirarchique
42
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Linstruction 8 < 08 DUPLICATES ARE NOT ALLOWED > prcise que les occurrences
de lenregistrement de type CLIENTS doivent possder des valeurs distinctes de leur
attribut Num_Client. Ceci revient dire quon nautorise pas lexistence de deux occurrences
possdant la mme valeur de lattribut Num_Client. Cette clause doit tre prcise lorsquon
a choisi un mode de localisation des occurrences consistant utiliser une fonction de
hachage tel que celui expliqu dans linstruction 7. Elle vise principalement dviter les
problmes de collisions et leur gestion puisque lapplication dune fonction de hachage
deux numros de clients identiques donnera toujours une mme adresse ce qui ncessiterait
la gestion de zones de dbordement pour prendre en compte deux clients possdant un
mme numro. Ceci va donc compliquer inutilement la gestion de la base de donnes
puisquon sait davance que le cas de deux clients possdant un mme numro nexiste pas
dans la pratique.
Linstruction 9 (WITHIN COMMANDES_CLIENTS) a pour rle dindiquer au SGBD que
toutes les occurrences de lenregistrement de type CLIENTS doivent tre stockes dans la
zone (Area) ayant pour nom COMMANDES_CLIENTS sur le support de stockage. Dans
linstruction 10 (IDENTIFER IS Num_Client ) on prcise le nom de lattribut qui constitue
la cl de lenregistrement de type CLIENTS.
Les instruction de 11 17 permettent de dfinir les attributs de lenregistrement de type
CLIENTS. Il sagit de dfinitions approximativement analogues celle quon retrouve dans
un programme COBOL (Voir le commentaire de la figure 2.5).
Les instructions 18 26 permettent de dfinir le type denregistrement FOURNISSEURS.
Linstruction 21 (WITHIN PRODUITS_FOURNISSEURS) prcise de la mme faon que
pour CLIENTS que toutes les occurrences de lenregistrement de type FOURNISSEURS
doivent tre stockes dans la zone (AREA) ayant pour nom PRODUITS_FOURNISSEURS
sur le support de stockage. On remarque que les accs aux occurrences du type
denregistrement FOURNISSEURS ne sont soumis aucun type de protection comme ctait
le cas pour CLIENTS. Le mode de localisation spcifi pour les occurrences de
FOURNISSEURS est analogue celui des CLIENTS et consiste transformer une valeur de
lattribut Num_Fourn (qui est dclare comme cl linstruction 22) en une adresse sur le
support en appliquant cette valeur la procdure de transformation ayant pour nom : HASH-
PROC2.
Les instructions 27 33 permettent de dfinir le type denregistrement PRODUITS. Le
mode de localisation spcifi pour les occurrences de ce type denregistrement consiste aussi
transformer une valeur de lattribut Num_Produit (qui est dclare comme cl
linstruction 31) en une adresse sur le support en appliquant cette valeur la procdure de
transformation ayant pour nom : HASH-PROC3. Linstruction 30 (WITHIN
PRODUITS_FOURNISSEURS) prcise aussi que toutes les occurrences de lenregistrement
de type PRODUITS doivent tre stockes dans la zone (AREA) ayant pour nom
PRODUITS_FOURNISSEURS sur le support de stockage.
Les instructions 34 40 permettent de dfinir le type denregistrement COMMANDES qui
est rappelons le une entit dintersection. On remarque quaucune distinction nest faite par
le SGBD concernant cette particularit. Le mode de localisation spcifi linstruction 36 (
36 SYSTEM DEFAULT ) signifie que le choix est laiss au SGBD quant la mthode quil
utilisera (squentielle, directe, etc.). Linstruction 37 : (37 WITHIN
COMMANDES_CLIENTS) prcise que toutes les occurrences de lenregistrement de type
COMMANDES doivent tre stockes dans la zone (Area) ayant pour nom
Chapitre 2: Les modles de donnes rseau et hirarchique
43
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
COMMANDES_CLIENTS sur le support de stockage.
Du fait que COMMANDES est une entit dintersection ayant servi transformer le
lien N:M qui existait initialement entre PRODUITS et CLIENTS, les instructions 39
et 40 permettent de lui rattacher deux attributs Num_Produit et Num_Client qui sont
rappelons-le les cls de ces entits. Afin dviter les problmes de redondance
dinformation du fait que les attributs Num_Produit et Num_Client ont dj t dfinit
dans PRODUITS et dans CLIENTS respectivement, le SGBD donne la possibilit de
les dclarer dans COMMANDES comme attributs virtuels (Num_Produit IS
VIRTUAL dans linstruction 39) en indiquant lendroit prcis o ils se trouvent
rellement (SOURCE IS Num_Produit OF OWNER OF COMMANDE_PRODUIT
dans linstruction 39) qui signifie que la valeur de lattribut Num_Produit dune
occurrence de lenregistrement COMMANDES membre du SET
COMMANDE_PRODUIT, est celle qui se trouve dans loccurrence du propritaire
(OWNER) du SET COMMANDE_PRODUIT. Comme on peut le constater, le
propritaire de ce SET est bien lenregistrement PRODUITS dans lequel se trouve
lattribut rel Num_Produit. On pourrait faire les mmes remarques pour lattribut
Num_Client dclar lui aussi comme virtuel et provenant dune autre source. Par
contre, lattribut Quantit est propre lenregistrement COMMANDES et nest pas
virtuel. Il a t rajout pour le besoin de lapplication. Ainsi, cette technique
dattributs virtuels a pour principal avantage dviter la redondance dinformation tout
en permettant denrichir le modle dans le but de pouvoir rpondre une diversit de
questions.
Les instructions 41 47 permettent de dfinir le type denregistrement PRIX qui est lui aussi
une entit dintersection au mme titre que lest COMMANDES. Les mmes remarques
faites pour COMMANDES sappliquent ici aussi concernant aussi bien le mode de
localisation des occurrences et les attributs virtuels qui sont dans ce cas : Num_Produit et
Num_Fourn. Par contre, lattribut Prix_Unit est propre lenregistrement PRIX et a t
rajout pour le besoin de lapplication.
2.2.4.3 Dclarations relatives un SET
2.2.4.3.1 Noms caractrisant un SET
Un SET est dfini par son nom qui est fourni au SGBD grce une instruction du style : SET
NAME IS Par exemple, les instructions 48, 58, 66 et 73 prcisent les noms des quatre SET de notre
schma et qui sont : FOURNISSEURS_PRIX, PRODUIT_PRIX, COMMANDE_PRODUIT,
COMMANDE_CLIENT.
On doit indiquer au SGBD le nom de lenregistrement propritaire du SET ainsi que celui de
lenregistrement membre grce aux deux instructions : < OWNER IS ...... > et < MEMBER IS
....... > respectivement. Par exemple, les instructions 51 et 52 indiquent que pour le SET
FOURNISSEURS_PRIX, lenregistrement propritaire est FOURNISSEURS < 51 OWNER IS
FOURNISSEURS > et lenregistrement membre est PRIX < 52 MEMBER IS PRIX >.
2.2.4.3.2 Ordre dinsertion des occurrences du membre dun SET
Lors de la dclaration dun SET, on doit prciser lordre dans lequel on veut maintenir les
occurrences du membre lorsquelles sont rattaches une occurrence du propritaire. Ceci se fait par
le biais dune instruction du LDD de la forme < ORDER IS ........>. Diffrents modes sont proposs
par les SGBD CODASYL dont les principaux sont :
Chapitre 2: Les modles de donnes rseau et hirarchique
44
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
E NEXT : Il sagit dinsrer la nouvelle occurrence du membre la position suivant celle de
loccurrence courante (ou active) connue bien sr par le SGBD. Il faut prciser que
loccurrence active peut tre soit de type membre (i.e. tout lment de la liste circulaire sauf
la tte de cette liste). Dans ce cas il sagira dune insertion classique dun lment dans une
liste partir dune position courante. Elle peut aussi tre de type propritaire auquel cas elle
est effectivement la tte de cette liste et la nouvelle occurrence du membre sera donc insre
en premire position relativement aux occurrences du membre qui existent dj.
Les instruction 67 et 74 du programme (ORDER IS NEXT ) permettent de
prciser au SGBD quon choisit cet ordre de rangement. Cest un ordre purement
squentiel qui ne se soucie pas dun tri ventuel des occurrences du membre selon
un quelconque critre. Ce sera donc au programmeur daller insrer lui mme
toute nouvelle occurrence du membre la position quil veut puisquil possde
les moyens techniques (instructions du DML) pour rendre active une occurrence
dun membre dun SET (un lment dune liste ralisant ce SET) ou une
occurrence du propritaire de ce SET (tte dune liste ralisant ce SET ) afin de
fixer la position dinsertion.
E FIRST : Il sagit dinsrer toute nouvelle occurrence du membre en premire position
relativement aux occurrences du membre qui existent dj. Avec ce mode, linsertion se fera
relativement loccurrence du propritaire qui constitue la tte de liste. Cette dernire
pointera donc directement sur la nouvelle occurrence du membre et le reste du chanage sera
mis jour.
E LAST : Il sagit dinsrer toute nouvelle occurrence du membre en dernire position
relativement aux occurrences du membre qui existent dj (i.e. en fin de liste).
E PRIOR : Il sagit dinsrer toute nouvelle occurrence du membre la position prcdant
celle de loccurrence active connue bien sr par le SGBD. Dans le cas o cette occurrence
est de type propritaire (tte de liste) la nouvelle occurrence du membre sera insre en
dernire position relativement aux occurrences existant dj (i.e. en fin de liste)
E SORTED : Il sagit de maintenir les occurrences du membre tries selon un critre quon
spcifie. Ce choix se fait grce la clause ORDER IS SORTED (instruction 49 et 59 par
exemple) qui permet de prciser au SGBD quon veut maintenir dans un ordre tri les
occurrences du membre. Comme dans toute opration de tri, il faut prciser lordre du tri
(croissant, dcroissant) ainsi que le ou les attributs sur lesquels on effectuera ce tri. Par
exemple linstruction : 54 ASCENDING KEY IS Num_Fourn indique au SGBD de trier
par ordre croissant selon lattribut Num_Fourn les occurrences du membres lis une
occurrence du propritaire qui est FOURNISSEURS. Lattribut de tri Num_Fourn est bien
sr celui de lenregistrement membre savoir : PRIX et pour lequel Num_Fourn a bien
t dclar comme attribut et ce mme sil est dclar virtuel. De mme linstruction : 62
ASCENDING KEY IS Num_Produit, Prix_Unit indique au SGBD de trier par ordre
croissant selon les deux attribut Num_Produit et Prix_Unit les occurrences du membre qui
sont lies une occurrence du propritaire de ce SET savoir : PRODUITS. Les deux
attributs de tri Num_Produit et Prix_Unit sont ceux dfinis dans lenregistrement membre
qui est aussi : PRIX . Il faut remarquer que chaque SET est indpendant de lautre mme
sils ont en commun lenregistrement membre PRIX. Au niveau physique, ils seront raliss
par deux ensembles de listes circulaires compltement distinctes. Cest pour cela que les
dclarations relatives un SET nont pas deffet sur celles dun autre SET.
Chapitre 2: Les modles de donnes rseau et hirarchique
45
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
2.2.4.3.3 Duplication des occurrences du membre dun SET
Lautorisation de dupliquer ou non des occurrences de lenregistrement membre dun SET dans
une liste circulaire correspondant une ralisation de ce SET doit tre spcifie grce une instruction
du LDD de la forme : DUPLICATES ARE [NOT] ALLOWED. Il sagit en fait de prciser au
SGBD si deux lments dune liste circulaire ralisant une occurrence du SET peuvent ou non avoir
des cls identiques. Ces deux lments tant deux occurrences du membre ; par exemple de PRIX si
on se rfre au SET FOURNISSEURS_PRIX ou PRODUIT_PRIX ( instructions 48 65 ), et qui
ont tous deux comme membre lenregistrement PRIX, il sagira donc de prciser au SGBD si on
autorise ou non la prsence de deux occurrences de PRIX ayant deux cls identiques et ce dans
lensemble des listes circulaires ralisant le SET en question. Dans le cas ou cette cl na pas t
prcise au niveau de la dfinition de lenregistrement membre, il sagira de la cl par dfaut de toute
entit cest dire lensemble de ses attributs ce qui est le cas pour lenregistrement membre PRIX de
notre exemple pour lequel aucune cl na t spcifie.
2.2.4.3.4 Modes dimplantation dun SET
On peut indiquer au SGBD le mode dimplantation quon dsire utiliser pour raliser un SET. Le
plus courant est celui de la liste chane (liste circulaire) que nous avons vu jusqu maintenant et qui
est gnralement le mode par dfaut. Un tel choix est indiqu par une instruction du style < MODE IS
CHAIN > comme il a t fait aux instructions 50, 68 et 75 du programme. Une autre possibilit est
celle quon appelle le mode VIA est qui consiste regrouper physiquement toutes les occurrences du
membre a proximit de loccurrence du propritaire avec lequel elles sont lies par le SET. On ne
spare donc pas lordre logique des occurrences du membre de leur ordre physique.(Voir lexplication
de LOCALISATION MODE IS VIA ..... donne plus haut ). Enfin, il est aussi possible dutiliser un
index contenant des pointeurs sur les occurrences du membre dun SET qui sont lies une occurrence
du propritaire de ce SET. Ce type dimplantation est spcifi par une instruction du style < MODE
IS INDEX >. A chaque occurrence du propritaire correspondra donc une table dindex contenant les
adresses des occurrences du membre qui lui sont associes par le SET.
2.2.4.3.5 Insertion et Rtention dans un SET
Au moment de la description dun SET au niveau du schma, on doit spcifier comment se fera
linsertion dune occurrence dun enregistrement membre de ce SET. On doit aussi spcifier le degr
de libert (ou rtention) dune occurrence dun enregistrement membre de ce SET vis vis de
loccurrence du SET (la liste circulaire) dans laquelle elle a t initialement insre.
Linsertion dune occurrence dun enregistrement membre une ralisation du SET ( une
liste circulaire) peut se faire soit explicitement grce linstruction (< INSERTION IS
MANUAL > ), soit implicitement grce linstruction ( < INSERTION IS AUTOMATIC
>. Dans le premier cas, cela signifie que linsertion sera faite explicitement par le
programmeur en utilisant une ou plusieurs instructions du langage de manipulation de
donnes (ex : linstruction CONNECT). Cest le cas des SET PRODUITS_PRIX,
COMMANDE_PRODUIT et COMMANDE_CLIENT (instructions 61, 70 et 77
respectivement). Par contre dans le second cas, cela signifie que lorsquune occurrence dun
enregistrement membre est cre pour la premire fois, le SGBD ira la placer
automatiquement dans loccurrence du SET appropri (insr dans une liste circulaire). Cest
le cas du SET FOURNISSEUR_PRIX (instruction 52 du programme).
La rtention quant elle indique le degr de libert dont dispose les occurrences du membre
dun SET. Ce degr est indiqu par lune des options suivantes : FIXED, MANDATORY
ou OPTIONAL
Chapitre 2: Les modles de donnes rseau et hirarchique
46
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
E FIXED : signifie quune fois rattach une ralisation dun SET (insr dans une
liste circulaire), une occurrence du membre de ce SET ne peut exister dans la base de
donnes autrement que rattach cette liste. Elle ne peut donc pas quitter la liste
circulaire dans laquelle elle se trouve. Cette liste est identifie par sa tte qui est une
occurrence de lenregistrement propritaire du SET.
E MANDATORY : signifie quune fois rattach une ralisation dun SET (insr dans
une liste circulaire ralisant ce SET), une occurrence du membre de ce SET ne peut
exister dans la base de donnes autrement que membre de ce SET. Dans ce cas, elle
peut seulement changer dune occurrence du Propritaire une autre mais en restant
dans le mme SET (i.e. peut seulement changer de liste circulaire parmi celles
ralisant ce SET).
E OPTIONAL : signifie que loccurrence de lenregistrement membre est libre dtre
ou non rattache une occurrence de lenregistrement Propritaire du SET. Elle peut
exister dans la base de donnes sans appartenir lune des listes circulaires ralisant
ce SET.
Les exemples suivants permettent de mieux claircir la notion de rtention dans un SET
et les options qui peuvent la caractriser :
Figure 2.16 : La notion de rtention dans un SET
VILLES
MAISONS
Est_Compose_De
Le SET Est_Compose_De sera dclar avec loption
RETENTION IS FIXED car une occurrence de MAISONS
(i.e. une maison particulire) sera toujours rattache la mme
occurrence de VILLES dans le SET Est_Compose_De (on ne
peut pas dplacer physiquement une maison dune ville vers une
autre !)
MUSEES
STATUES
Expose
Le SET Expose sera dclar avec loption RETENTION IS
MANDATORY car une occurrence de STATUES (i.e. une
statue particulire) peut tre dplace dun muse un autre pour
y tre expose par exemple. Elle peut donc changer doccurrence
du propritaire MUSEES mais la statue reste lie dans le mme
SET Expose avec MUSEES (on peut dplacer physiquement
une statue dun muse vers un autre !)
LIVRES
Emprunte
EMPRUNTEURS
Le SET Emprunte sera dclar avec loption RETENTION IS
OPTIONAL car un livre peut tre emprunt par un emprunteur
(tudiant, enseignant, etc.) qui le restitue par la suite et ce livre
ne nest pas de nouveau emprunt. Donc il figure dans la B.D.
sans appartenir une occurrence du lien Emprunte (i.e. une
des listes circulaires ralisant ce lien).
Chapitre 2: Les modles de donnes rseau et hirarchique
47
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
2.3 Notion de sous schma dans le modle rseau
2.3.1 Caractristiques gnrales
Un sous schma ou vue est un sous ensemble du schma conceptuel. Il correspond au niveau
externe de description dune base de donnes et dont le rle est de permettre aux programmes
dapplication de ne voir que la partie de la base de donnes dont ils ont besoin. La dfinition dun sous
schma partir du schma conceptuel de la base de donnes obit un ensemble de rgles qui varient
dun SGBD un autre. Nanmoins, en se rfrant aux propositions du DBTG, on peut numrer la
liste non exhaustive de rgles suivantes :
On peut dfinir un nombre quelconque de sous schmas pour un schma conceptuel donn
un sous schma peut tre partag par plusieurs programmes dapplication
dans la description dun sous schma, on peut ne pas dclarer :
une ou plusieurs AREA
un ou plusieurs enregistrements (Record)
un ou plusieurs SET
un ou plusieurs attributs dun enregistrement
Dans un sous schma, on peut renommer une AREA, un enregistrement, un SET ou un
attribut. Ceci permet par exemple dutiliser des synonymes pour les noms dclars dans le
schma (voir le programme de description plus loin).
Lordre de dclaration des attributs dun enregistrement qui a t suivi dans la description du
schma peut ne pas tre respect dans le sous schma
Le type dun attribut peut tre chang
Un sous schma sera donc dcrit grce un programme en utilisant le langage de description de
donnes offert par le SGBD.
2.3.2 Exemple de description dun sous schma
Considrons le sous schma suivant obtenu partir du schma conceptuel de la figure 2.14 et dans
lequel nous avons gard uniquement les enregistrements (Records) : CLIENTS, COMMANDES et
PRODUITS ainsi que les SETS : COMMANDE_CLIENT et COMMANDE_PRODUIT
Figure 2.17 : Exemple de sous-schma
Nous donnons ci-aprs lallure du programme de description de ce sous schma selon la
philosophie du groupe CODASYL. Ce programme est propos dans le but dexpliquer cette
philosophie et il ne sagit donc pas dun programme respectant la lettre la syntaxe du LDD propos
PRODUITS
COMMANDE_PRODUIT
COMMANDES
CLIENTS
COMMANDE_CLIENT
Chapitre 2: Les modles de donnes rseau et hirarchique
48
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
par le groupe comme une extension au langage COBOL. Nous tenons souligner que le plus
important est de comprendre la philosophie du passage dun schma conceptuel un sous schma dans
le cas du modle rseau propos par le DBTG et que nous avons synthtis travers les rgles
numres plus haut.
Les lignes du programme ont t numrotes L1, L2, ... pour quil ny ait pas de confusion avec les
numros de niveau qui apparaissent dans la section de dclaration des RECORD.
(L1) SUBSCHEMA NAME IS VUE1 OF SCHEMA NAME GESTION_VENTES
(L2) RENAMING SECTION
(L3) DATA NAME Num_Client IN SCHEMA IS CHANGED TO Numro
(L4) SET NAME COMMANDE_PRODUIT IN SCHEMA IS CHANGED TO
PROD_COMMANDES
(L5) RECORD SECTION
(L6) 01 CLIENTS
(L7) 02 Numro PICTURE 9(6).
(L8) 02 Nom_Client PICTURE A(12)
(L9) 01 PRODUITS
(L10) 02 Num_Produit PICTURE 9(4).
(L11) 01 COMMANDES
(L12) 02 Quantit PICTURE 9(3)
(L13) 02 Num_Produit PICTURE 9(4).
(L14) 02 Num_Client PICTURE 9(6).
(L15) SET SECTION
(L16) COPY PROD_COMMANDES.
(L17) COPY COMMANDE_CLIENT.
(L18) END.
Figure 2.18 : Description dun sous schma avec un LDD CODASYL
2.4 Langage de manipulation de donnes dans un modle rseau
Lors de la description du schma conceptuel, un certain nombre de contraintes seront spcifies
telles que le mode dinsertion dans un SET qui peut tre automatique ou manuel, le degr de libert ou
rtention des occurrences dun enregistrement membre dans un SET. Ces contraintes ont pour but de
permettre au programmeur de dtecter facilement les erreurs mais aussi damliorer la cohrence de la
base de donnes. En effet, lorsquon prcise par exemple lors de la dclaration dun SET que la
rtention est de type FIXED, linsertion dune occurrence de lenregistrement membre de ce SET dans
la base de donnes rendra celle-ci incohrente tant que cette occurrence naura pas t rattach une
occurrence de lenregistrement propritaire de ce SET (i.e. insre dans une liste circulaire ralisant ce
SET). Les contraintes imposes sur le schma vont donc permettre au SGBD dautoriser ou non une
opration sur la base de donnes, de dclencher automatiquement dautres oprations pour maintenir la
cohrence de la base.
Avant dintroduire la liste des oprations qui nous paraissent suffisantes pour comprendre la
philosophie gnrale du langage de manipulation de donnes dun SGBD rseau, il est ncessaire de
prciser que la communication entre les programmes dapplications et un SGBD rseau se fait
principalement par le biais dune zone dchange appele User Working Area (UWA). Dans cette
zone, un certain nombre de variables globales sont prdfinies et rendues accessibles aux programmes
afin de minimiser le nombre de paramtres passer lors des appels au SGBD. Deux sortes de variables
sont prdfinies :
Chapitre 2: Les modles de donnes rseau et hirarchique
49
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Variables de type enregistrement : chaque enregistrement dclar dans le schma
correspond une variable de mme nom qui sert de zone dchange entre le programme et
la base de donnes. Avant dtre crite dans la base, une occurrence dun enregistrement
doit dabord tre prpare dans cette zone (initialisation de ses attributs). De mme
quune occurrence dun enregistrement est dabord lue dans cette zone pour pouvoir tre
traite par le programme.
Variables de type POINTEUR : ce sont des variables qui contiennent des adresses
doccurrences denregistrements dans la base de donnes. Chaque pointeur sert donc
mmoriser ladresse de la dernire occurrence dun enregistrement laquelle le
programme a eu accs. Tous ces pointeurs sont mis jour en permanence par le SGBD.
Les trois types de pointeurs les plus importants sont :
Un pointeur courant associ au programme : Cest un pointeur qui dsigne toujours
ladresse de la dernire occurrence de lenregistrement laquelle le programme a eu
accs quelque soit le type de lenregistrement. Cette adresse peut donc tre celle de
loccurrence dun enregistrement propritaire dans un SET ou bien celle dun
enregistrement membre dans un SET ;
Des pointeurs courants associs aux enregistrements : Il en existe un par
enregistrement. Pour un enregistrement donn, ce pointeur repre toujours le dernire
occurrence de cet enregistrement laquelle le programme a eu accs ;
Des pointeurs courants associs aux Sets : Il en existe un par SET. Pour chaque
SET, ce pointeur repre la dernire occurrence laquelle le programme a eu accs.
Elle peut tre soit une occurrence de lenregistrement propritaire du SET, soit une
occurrence de lenregistrement membre du SET;
2.4.1 Oprations principales du LMD dun SGBD rseau
Les oprations principales du LMD sont les suivantes :
E FIND :
cette opration est la plus importante. Elle permet au programmeur de naviguer dans la
base de donnes en tenant compte de sa structure (i.e. au grs des chemins daccs). Elle
permet de localiser ou se positionner sur une occurrence dun enregistrement sans la
dlivrer au programme. Les deux formes les plus caractristiques de cette opration sont :
Recherche directe dune occurrence dun enregistrement :
Recherche dune occurrence dont on connat ladresse et quon a mmorise
dans une variable du programme :
FIND < Nom dun Enregistrement > DB-KEY IS < Nom dune Variable >
Recherche dune occurrence dun enregistrement dont la localisation se fait par
une fonction de hachage (spcifie lors de la dclaration du schma) :
FIND ANY < Nom dun Enregistrement >
Dans le cas ou on a autoris la duplication des occurrences (DUPLICATES ARE
Chapitre 2: Les modles de donnes rseau et hirarchique
50
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
ALLOWED), les autres occurrences seront obtenues par :
FIND DUPLICATE < Nom dun Enregistrement >
- Cette opration entrane la mise jour du pointeur courant associ
lenregistrement en question
Parcours dune ralisation dun SET (une liste circulaire):
Comme chaque SET est associ un pointeur courant qui repre loccurrence dun
enregistrement membre ou bien celle dun propritaire de ce SET, les oprations pour
parcourir une ralisation dun SET (une liste circulaire) sont :
Recherche dune occurrence de lenregistrement propritaire (recherche de la
tte de liste) :
FIND OWNER WITHIN < Nom dun SET >
Recherche de la premire occurrence de lenregistrement Membre :
FIND FIRST < Nom dun Enregistrement> WITHIN < Nom dun SET >
Recherche de loccurrence suivante de lenregistrement Membre :
FIND NEXT < Nom dun Enregistrement> WITHIN < Nom dun SET >
Recherche de la premire occurrence de lenregistrement Membre dont certains
attributs vrifient un critre donn :
FIND < Nom dun Enregistrement > WITHIN < Nom dun SET >
USING < Liste Attributs >
E GET :
cette commande permet au programme de lire loccurrence courante dun enregistrement
et dont ladresse se trouve dans la variable de type pointeur courant associ cet
enregistrement. Loccurrence sera lue dans la zone dchange identifie par la variable
globale associe lenregistrement en question (voir lexplication du rle de ces variables
donne plus haut)
le format de cette commande est gnralement :
GET < Nom dun Enregistrement>
Par exemple GET FOURNISSEURS va permettre de lire loccurrence de
lenregistrement FOURNISSEURS dont ladresse est indique par le pointeur
courant associ cet enregistrement .
E STORE :
cette commande permet au programme dinsrer une nouvelle occurrence dun
enregistrement dans la base. Elle ncessite la prparation de loccurrence dans la zone
Chapitre 2: Les modles de donnes rseau et hirarchique
51
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
dchange identifie par la variable globale associe lenregistrement en question.
Loccurrence sera insre ladresse se trouvant dans la variable de type pointeur courant
associ cet enregistrement.
le format de cette commande est gnralement :
STORE < Nom dun Enregistrement>
Par exemple STORE FOURNISSEURS va permettre dinsrer loccurrence de
lenregistrement FOURNISSEURS ladresse contenue dans la variable de type
pointeur courant associ cet enregistrement .
E MODIFY :
cette commande permet au programme de modifier une occurrence dun enregistrement
se trouvant dj dans la base. Modifier une occurrence signifie changer la valeur dun ou
de plusieurs attributs de cette occurrence. Cette opration ncessite dabord la
prparation de la version modifie de loccurrence et ceci dans la zone dchange
identifie par la variable globale associe lenregistrement en question. Il faudra ensuite
initialiser la variable de type pointeur courant associ au programme avec ladresse de
loccurrence modifier puis excuter lopration proprement dite.
le format de cette commande est gnralement :
MODIFIY < Nom dun Enregistrement >
Par exemple MODIFY PRODUIT va permettre de remplacer loccurrence de
lenregistrement PRODUIT dont ladresse est contenue dans la variable de type
pointeur courant associ au programme avec loccurrence prpar dans la zone
dchange est identifie par la variable globale associe lenregistrement en
question.
E ERASE :
cette commande permet de supprimer loccurrence dun enregistrement dont ladresse se
trouve dans la variable de type pointeur courant associ au programme. Si cette
occurrence est propritaire dans un ou plusieurs SET dont la rtention est de type FIXED,
il y aura suppression de toutes les occurrences de lenregistrement membre de chaque
SET. Dans le cas o cette occurrence est propritaire dans un ou plusieurs SET dont la
rtention est optionnelle (OPTIONAL), il y aura dconnexion des occurrences de
lenregistrement membre de chacun des SET (les occurrences ne forment plus une liste
circulaire puisque le propritaire qui en est la tte est supprim). Enfin si loccurrence
supprimer est celle dun enregistrement membre dans un ou plusieurs SET, il y aura
dconnexion de cette occurrence de toutes les occurrences ou ralisations des SET ( listes
circulaires) o elle apparat (mise jour du chanage dans chaque liste circulaire ralisant
chacun des ces SET).
le format de cette commande est gnralement :
ERASE < Nom dun Enregistrement>
Par exemple ERASE FOURNISSEURS va permettre de supprimer loccurrence
Chapitre 2: Les modles de donnes rseau et hirarchique
52
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
courante de lenregistrement FOURNISSEURS dont ladresse est contenue dans la
variable de type pointeur courant associ cet enregistrement en satisfaisant les
contraintes prcises ci-dessus.
E CONNECT :
cette commande permet dinsrer manuellement loccurrence dun enregistrement se
trouvant dj dans la base de donnes comme membre dans une ralisation ou occurrence
dun SET (insertion dun lment dans une liste circulaire). Pour cela, il faudra au
pralable choisir loccurrence du SET dans laquelle on veut faire linsertion. Ceci devra
tre fait en initialisant le pointeur courant associ ce SET soit avec ladresse dune
occurrence de lenregistrement propritaire soit avec ladresse de loccurrence de
lenregistrement membre. Lune ou lautre de ces adresses permet de dsigner sans
ambigut une seule occurrence de ce SET(i.e. une seule liste circulaire). La deuxime
opration faire est dinitialiser le pointeur courant associ au programme avec ladresse
de loccurrence de lenregistrement quon veut insrer dans la liste circulaire puis
excuter lopration de connexion (i.e. tablir le chanage). La connexion se fera bien sr
en respectant les dclarations relatives au SET(ordre respecter, rtention, etc.).
le format de cette commande est gnralement :
CONNECT < Nom dun Enregistrement > TO < Nom dun SET >
Par exemple CONNECT COMMANDES TO COMMANDE_CLIENT va
permettre dinsrer loccurrence de lenregistrement COMMANDES dont ladresse
est contenue dans la variable de type pointeur courant associ au programme (et non
lenregistrement COMMANDES !) dans loccurrence courante du SET
COMMANDE_CLIENT (liste circulaire) dont on connat soit ladresse dune
occurrence du propritaire (tte de cette liste) soit ladresse dune occurrence du
membre (un des lments composant cette liste). Cette adresse est contenue dans la
variable de type pointeur courant associ au SET COMMANDE_CLIENT.
- La commande CONNECT est valable uniquement pour un SET pour lequel on a
dclar dans le schma que le mode dinsertion est manuel. Dans le cas dun SET
dclar avec un mode dinsertion automatique, cest le SGBD qui doit connecter
automatiquement une occurrence du membre une occurrence du propritaire.
Pour que le SGBD puisse retrouver loccurrence de ce propritaire, on doit le lui
spcifier au niveau du schma grce la clause (Voir aussi le programme de
description) :
SET SELECTION IS THRU <Nom dun SET> OWNER IDENTIFIED BY ......
E DISCONNECT :
cette commande permet de supprimer logiquement loccurrence dun enregistrement se
trouvant dj dans la base de donnes comme membre dans une ralisation ou
occurrence dun SET (suppression dun lment dune liste circulaire sans le supprimer
physiquement de la base de donnes) . Pour la suppression logique, il nest pas ncessaire
de choisir au pralable loccurrence du SET dans laquelle on veut faire la suppression car
on sait que loccurrence supprimer nappartient qu une seule liste ralisant le SET. Il
suffit donc dinitialiser le pointeur courant associ au programme avec ladresse de
loccurrence de lenregistrement quon veut supprimer puis excuter lopration de
Chapitre 2: Les modles de donnes rseau et hirarchique
53
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
dconnexion (i.e. met jour le chanage). La dconnexion nest pas autorise si la
rtention du SET a t dclare fixe (RETENTION IS FIXED).
le format de cette commande est gnralement :
DISCONNECT < Nom dun Enregistrement > FROM < Nom dun SET >
Par exemple DISCONNECT PRODUIT FROM COMMANDE_PRODUIT va
permettre de supprimer loccurrence de lenregistrement PRODUIT dont ladresse est
contenue dans la variable de type pointeur courant associ au programme de la liste
circulaire ralisant le SET COMMANDE_PRODUIT et laquelle elle appartient.
2.4.2 Remarques
Toutes les oprations que nous venons de voir, vont servir de support pour lcriture dun
programme dapplication qui est gnralement crit en COBOL. Le plus important retenir ce nest
pas la structure dun programme ni la syntaxe exacte du langage. Cest plutt de comprendre laspect
navigationnel du LMD dun SGBD rseau. Comme nous pouvons le constater lcriture dun
programme tient compte des chemins daccs et le programmeur connat tout moment lendroit
prcis o il se trouve dans la base grce aux diffrents pointeurs qui sont comme nous lavons dit, mis
jour en permanence par le SGBD.
3. Le modle hirarchique
3.1 Prsentation gnrale
Afin de bien faire ressortir les caractristiques essentielles du modle hirarchique nous utiliserons
dans la suite de notre prsentation une terminologie trs proche de celle du SGBD IMS dvelopp par
IBM vers les annes 1968 et bas sur ce type de modle de donnes.
Les lments de base du modle hirarchique sont les enregistrements logiques appels Segments
dans IMS. Un segment est dfini par un nom et un ensemble dattributs appels Fields dans IMS et
constitue lunit dchange entre la base de donnes et les programmes dapplication. Cest
lquivalent du RECORD vu avec le modle rseau.
La notion de lien ou SET telle que nous lavons vue dans le modle rseau nexiste pas. Un lien
entre deux segments du modle hirarchique nest donc pas dfini explicitement par des instructions
du langage de dfinition de donnes de manire part comme ce ft le cas dans le modle rseau.
Dans le modle hirarchique seule existe la relation PARENT-ENFANT qui est spcifie au moment
de la description dun segment en indiquant pour un segment donn le nom de son segment PARENT
sil en possde.
3.2 Caractristiques principales dun modle hirarchique
Un modle hirarchique est un modle de type diagramme de structures de donnes ou de Bachman
dans lequel :
Tous les liens entre les entits (segments) sont de type 1:N
Sur chaque entit ou segment narrive quun seul lien (arc)
De chaque entit ou segment peuvent partir autant de lien (arcs) quon veut
Il existe une entit ou segment particulier appel racine sur lequel narrive aucun lien
Chapitre 2: Les modles de donnes rseau et hirarchique
54
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
(arc).
Les exemples suivants vont aider savoir comment distinguer un modle conforme au modle
hirarchique dun autre qui ne lest pas :
Ce modle nest pas conforme au modle hirarchique cause
des deux arcs qui arrivent sur le segment D
Ce modle nest pas conforme au modle hirarchique car il ne
possde pas de segment Racine sur lequel narrive aucun arc.
Ce modle est conforme au modle hirarchique car il possde un
segment Racine qui est C et sur chaque segment narrive quun
seul arc.
Ce modle nest pas conforme au modle hirarchique cause
des deux arcs qui arrivent sur le segment E
Figure 2.19 : Exemples de modles hirarchiques
3.3 Les liens N:M dans un modle hirarchique
De part sa dfinition, le modle hirarchique naccepte pas de lien N:M entre deux entits ni de
structure en rseau. Donc si la modlisation produit un modle de donnes dans lequel existe un ou
plusieurs lien N:M, ou bien une ou plusieurs entits sur lesquelles arrivent plus dun lien (arc), il
faudra le transformer pour le conformer aux caractristiques du modle hirarchique.
La transformation dun lien N:M dans le cadre du modle hirarchique repose essentiellement sur
la duplication des entits et la cration dentit dintersection.
3.3.1 Transformation par duplication des entits
Considrons lexemple suivant du lien N:M entre deux entits ETUDIANTS et MODULES :
Figure 2.20 : Transformation dun lien N:M par duplication des entits
D
F
C
E
D
C
E
A
B
G
D
F
C
E
ETUDIANTS
MODULES
N : M
ETUDIANTS
MODULES
1:N
ETUDIANTS
MODULES
1:N
Chapitre 2: Les modles de donnes rseau et hirarchique
55
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
La duplication des entits consiste transformer le lien N:M en deux liens 1:N en crant des
copies des entits impliques dans le lien. Dans lexemple ci-dessus, on a transform le lien N:M en
deux liens 1:N lun allant de lentits ETUDIANT vers lentit MODULES et lautre allant de lentits
MODULES vers lentit ETUDIANTS. Pour ce faire, cela a ncessit de dupliquer les deux entits
afin de pouvoir reprsenter les deux liens 1:N en restant conforme avec le modle hirarchique. Au
niveau physique, on aura un ensemble darbres ralisant le premier lien 1:N dont la racine est
ETUDIANTS et un autre ensemble darbres ralisant le second lien 1:N dont la racine est MODULES.
Figure 2.21 : Arbres ralisant les liens 1:N entre les deux entits
Comme on le voit, cette mthode engendre une redondance dinformation avec toutes les
consquences qui sen suivent (perte despace, risques dincohrence des donnes, ...)
3.3.2 Transformation par cration dentits dintersection
Il est aussi possible de transformer un lien N:M entre deux entits en deux liens 1:N grce la
cration dune nouvelle entit dite entit dintersection. On obtient gnralement un rseau qui devra
tre de nouveau transform en arborescence par duplication dentit.
Reprenons lexemple du lien N:M entre les deux entits ETUDIANTS et MODULES :
Cration dune entit
dintersection
le modle obtenu est un modle
Rseau
Duplication de lentit
On obtient deux modles
chacun avec une racine
dintersection
hirarchiques
(2 PDB )
Figure 2.22 : Transformation d'un lien N:M par cration dentits dintersection
E1
MOD1 MOD2 MOD4
E2
MOD1 MOD7
E3
MOD3 MOD5
E2
MOD1
E1 E2
MOD2
E1 E3
MOD3
E2
MOD4
E3
MOD5
1:N
MODULES ETUDIANTS
N_ET N_MOD
1:N
1:N
ETUDIANTS
N_ET N_MOD
1:N
MODULES
N_ET N_MOD
Chapitre 2: Les modles de donnes rseau et hirarchique
56
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Afin dviter la duplication des occurrences des entits dans les deux bases physiques, on peut
utiliser la techniquedite des entits virtuelles. Celle-ci consiste dfinir rellement dans lune des
PDB lentit dintersection et la dclarer comme entit virtuelle dans lautre PDB (Voir le
programme de description de lexemple illustratif). On aura le schma suivant :
Figure 2.23 : Utilisation de la technique de lentit virtuelle
La flche en pointills allant de MODULES vers lentit dintersection indique que cette dernire
est un fils logique de MODULES. Elle sera dclare en tant que tel au moment de la description du
PDB contenant uniquement lentit MODULES comme entit (segment) rel.
La flche en pointills gras allant de lentit dintersection vers lentit MODULES indique que
cette dernire est un parent logique de lentit dintersection. Elle sera dclare en tant que tel au
moment de la description du PDB compos de lentit ETUDIANTS et de lentit dintersection.
3.4 Schma conceptuel dune Base de donnes hirarchique
Une base de donnes hirarchique peut tre vue au niveau conceptuel comme un ensemble darbres
dont chacun est compos dentits ou segments et de liens de type 1:N et respectant les
caractristiques du modle hirarchique nonces plus haut. Chaque arbre appel aussi un PDB
(Physical Data Base) dans IMS sera dcrit indpendamment grce un programme de description
appel une DBD (Data Base Description program) en utilisant le langage de description de donnes
offert par le SGBD.
Ainsi, le schma conceptuel dune base de donnes hirarchique peut comporter une ou plusieurs
PDB distinctes, dont chacune sera dcrite par son propre programme de description ou DBD.
3.5 Description dun schma dans le cas dun SGBD Hirarchique
3.5.1 Elments dcrire pour un schma
Compte tenu de la structure du schma conceptuel dune base de donnes hirarchique, sa
description si on se rfre la terminologie du SGBD IMS va comprendre pour chaque PDB
composant le schma :
La dclaration du nom du PDB qui servira au SGBD de la distinguer parmi toutes les PDB
une ou plusieurs dclarations de segments, chaque segment tant caractris par son nom, ses
attributs (ou FIELDS) et le nom de son segment PARENT.
MODULES ETUDIANTS
N_ET N_MOD
Chapitre 2: Les modles de donnes rseau et hirarchique
57
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
3.5.2 Exemple illustratif
Si on considre la base de donnes hirarchique de la figure 2.24, celle-ci est compose de deux
(02) PDB (Physical Data Base) . La premire PDB est compose des segments : DEPARTEMENTS,
EMPLOYES, ENFANTS et VEHICULES. La seconde PDB est compose des deux segments :
VILLES et ECOLES.
Pour le besoin de lapplication, il a t jug utile de rajouter un arc allant du segment ECOLES de
la seconde PDB vers le segment ENFANTS de la premire PDB. Ce lien permettra par exemple de
rpondre une question du style : Quels sont les Enfants inscrits dans une cole X. Cependant, on
remarque quil nest pas possible de rajouter un tel lien directement parce que on aurait dans ce cas
une contradiction avec les spcifications du modle hirarchique puisque le segment ENFANTS de la
premire PDB possderait alors deux liens (arcs) entrants : lun provenant du segment EMPLOYES
de la mme PDB et lautre du segment ECOLES de la seconde PDB et on aurait alors non plus un
modle hirarchique mais plutt un modle rseau.
Une premire solution consisterait dupliquer le segment ENFANTS en le redfinissant dans la
seconde PDB. Cette solution engendre une redondance de linformation avec toutes les consquences
quon connat. La deuxime solution est celle de lutilisation du concept de segment virtuel qui
consiste dfinir dans la seconde PDB, le segment ENFANTS appartenant la premire PDB, non
pas comme fils rel du segment ECOLES mais comme fils logique ou virtuel en sachant quil est
dfini explicitement dans une autre PDB. On devra aussi prciser au moment de la description du
segment ENFANTS quil possde un PARENT LOGIQUE qui est le segment ECOLES dfini dans
une autre PDB. Ce lien est matrialis sur la figure par une flche en trait pointill.
Le schma conceptuel de notre base de donnes serait donc le suivant :
Figure 2.24 : Schma conceptuel dune B.D. Hirarchique compos de deux PDB
VEHICULES
DEPARTEMENTS
EMPLOYES
ENFANTS
VILLES
ECOLES
PDB N 1 PDB N 2
Chapitre 2: Les modles de donnes rseau et hirarchique
58
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
3.5.3 Programmes de description du schma
Nous donnons dans ce qui suit une description du schma base sur le langage de description de
donnes propos par le SGBD IMS. Il ne sagit pas de respecter scrupuleusement la syntaxe du
langage mais de permettre au lecteur davoir une ide sur ce quoi pourrait ressembler un programme
de description du schma conceptuel ou logique dune base de donnes hirarchique tout en faisant
apparatre les lments cls dun tel programme.
3.5.3.1 Programme de description de la premire PDB
01 DBD NAME = ENTREPRISE
02 SEGM NAME = DEPARTEMENT, BYTES = 26
03 FIELD NAME = (NOMDPT, SEQ), BYTES = 16, START = 1
04 FIELD NAME = SPECIALITE , BYTES = 8, START = 17
05 FIELD NAME = NUMDPT , BYTES = 2, START = 25
06 SEGM NAME = EMPLOYES, BYTES=45, PARENT = DEPARTEMENT
07 FIELD NAME = (NUMEMP, SEQ), BYTES = 4, START = 1
08 FIELD NAME = NOMEMP , BYTES = 16, START = 5
10 FIELD NAME = ADRESSE , BYTES = 25, START = 21
11 SEGM NAME = ENFANTS, BYTES = 12,
PARENTS = ( ( EMPLOYES ) , ( ECOLES,
VIRTUAL, PDB = VILLE_ECOLE ))
12 FIELD NAME = PRENOM, BYTES = 8, START = 1
13 FIELD NAME = AGE , BYTES = 2, START = 9
14 FIELD NAME = ANNEE_SCOLAIRE , BYTES = 2, START = 11
15 SEGM NAME = VEHICULE, BYTES = 11, PARENT = DEPARTEMENT
16 FIELD NAME = TYPE_VEHICULE, BYTES = 2, START = 1
17 FIELD NAME = MATRICULE , BYTES = 9, START = 3
18 END
Figure 2.25 (a) : Description du PDB n 1 avec le LDD du SGBD IMS
3.5.3.2 Programme de description de la seconde PDB
01 DBD NAME = VILLE_ECOLE
02 SEGM NAME = VILLES, BYTES = 37
03 FIELD NAME = (NOMVIL, SEQ), BYTES = 16, START = 1
04 FIELD NAME = WILAYA , BYTES = 16, START = 17
05 FIELD NAME = CODE_POSTAL , BYTES = 5, START = 33
06 SEGM NAME = ECOLES, BYTES = 20, PARENT = VILLES
07 FIELD NAME = (NOM_ECOLE, SEQ), BYTES = 20, START = 1
08 LCHILD NAME = ( ENFANTS, PDB = ENTREPRISE )
09 END
figure 2.25(b) : Description du PDB n 2 avec le LDD du SGBD IMS
Chapitre 2: Les modles de donnes rseau et hirarchique
59
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
3.5.4 Discussion des programmes
Comme notre base de donnes hirarchique est compose de deux PDB, elles sont donc dcrites
indpendamment chacune par un programme de description ou DBD (Data Base Description).
3.5.4.1 Attribution dun nom une PDB
Chaque PDB est identifie par son nom. Ce nom est fourni au SGBD grce linstruction :
< DBD NAME =......>
Par exemple, linstruction suivante figurant dans le premier programme :
01 DBD NAME = ENTREPRISE

et celle figurant dans le deuxime programme :
01 DBD NAME = VILLE_ECOLE
ont pour rle de donner comme nom la premire PDB : ENTREPRISE et la seconde PDB :
VILLE_ECOLE.
3.5.4.2 Description dun segment
La description dun segment revient attribuer un nom au segment, prciser ses attributs (ou
FIELD) et leurs caractristiques et prciser aussi le nom de son segment PARENT. Ceci est possible
car rappelons-le, avec le modle hirarchique, sur un segment autre que la racine, il ne peut y arriver
quune seule flche (ou lien). Ainsi le segment PARENT de nimporte quel segment dune PDB est
connu sans ambigut.
Si on se rfre au programme de description de la premire PDB, on peut faire les commentaires
suivants :
linstruction 02 dfinit le segment racine (DEPARTEMENT) de cette PDB en prcisant
que le segment est compos dattributs (FIELD) occupant 26 octets (BYTES = 26). A ce
niveau le programmeur est cens savoir combien occupe un caractre alphanumrique sur
la machine (ex : un octet), un entier (ex : 2 ou 4 octets) etc. On remarque cette lacune
travers ce type de LDD et qui consiste mlanger au niveau de la description logique de
la base de donnes des paramtres trs techniques et de bas niveau.
les instruction 02 05 dfinissent les attributs (FIELD) du segment DEPARTEMENT.
Ce sont :
NOMDPT occupant 16 octets (BYTES = 16) et commenant partir de loctet
numro 1 par rapport au dbut du segment ( START = 1 ). Le paramtre SEQ
indique la squentialit des occurrences du segment. Il sagit ici dordonner ces
occurrences selon un ordre croissant de lattribut NOMDPT.
SPECIALITE occupant 8 octets (BYTES = 8) et commenant partir de loctet
numro 17 par rapport au dbut du segment ( START = 17 ).
NUMDPT occupant 2 octets (BYTES = 2) et commenant partir de loctet
Chapitre 2: Les modles de donnes rseau et hirarchique
60
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
numro 25 par rapport au dbut du segment ( START = 25 ).
les instruction 06 10 dfinissent de la mme manire le segment EMPLOYES ayant
pour attributs NUMEMP, NOMEMP et ADRESSE et pour segment PARENT : le
segment DEPARTEMENT.
les instruction 11 14 dfinissent de la mme manire le segment ENFANTS ayant pour
attributs PRENOM et AGE. et pour segment PARENT : le segment EMPLOYES.
On sait que le segment ENFANTS a un seul parent physique dans sa PDB
ayant pour nom ENTREPRISE . Cest le segment : EMPLOYES. Le
segment ENFANTS possde aussi un deuxime parent dans la seconde
PDB ayant pour nom VILLE_ECOLE. Ce parent est le segment ECOLES
et nest quun parent logique ou virtuel.
La clause : PARENTS = ( ( EMPLOYES ), ( ECOLES, VIRTUAL,
PDB = VILLE_ECOLE )) de linstruction 11 spcifie que le parent rel ou
physique du segment ENFANTS est le segment EMPLOYES, et que le
segment ECOLES est un parent virtuel ou logique se trouvant dans la PDB
ayant pour nom VILLE_ECOLE.
Les instruction 15 17 dfinissent de la mme manire le segment VEHICULES ayant
pour attributs TYPE_VEHICULE et MATRICULE et pour segment PARENT : le
segment DEPARTEMENT.
Lexamen du programme de description de la seconde PDB, nous permet de faire les commentaires
suivants :
Les mme remarques faites au sujet de la description des segments et de leurs attributs
pour le premier programme sont valables ici aussi. La seule instruction qui doit tre
commente est linstruction :
< 08 LCHILD NAME = ( ENFANTS, PDB = ENTREPRISE ) >
Le rle de cette instruction est de prciser que le segment ECOLES possde un segment
fils logique (LCHILD signifiant LOGICAL CHILD) qui se trouve dans une autre PDB
savoir la PDB ayant pour nom : ENTREPRISE.
Remarquons aussi que la notion de fils physique nexiste pas dans le modle hirarchique. On na
pas la possibilit au moment de la description dun segment donn de prciser quels sont ses segments
fils physiques sil en possde. Seule existe donc la possibilit de dfinir un fils logique et dont
lavantage est dviter les problmes de duplication physique de segments avec tous les problmes de
redondance qui sen suivent, mais aussi de voir logiquement une base de donnes hirarchique sous
forme dun rseau. Sur le plan pratique, cette possibilit permet de rpondre un plus grand nombre
de question surtout celles dont la rponse ncessite lutilisation de plusieurs PDB distinctes.
3.6. Implantation physique dune base de donnes hirarchique
Une base de donnes hirarchique peut tre vue au niveau physique comme un ensemble de
ralisation ou doccurrences de chaque PDB. Chaque occurrence nest quun arbre au sens
informatique du terme dont chaque nud est valu par une occurrence dun segment qui compose la
Chapitre 2: Les modles de donnes rseau et hirarchique
61
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
PDB laquelle appartient ce segment.
Il existe diffrentes structures de donnes pour reprsenter une telle base de donnes. Celles qui
sont utilises dans la plupart des SGBD hirarchiques sont : la structure squentielle et la structure
de liste.
3.6.1 structure squentielle
Cette mthode consiste construire des enregistrements de longueur variable raison dun
enregistrement par occurrence darbre. En effet chaque arbre peut tre transforme en son quivalent
linaire grce un algorithme bien connu de parcours dun arbre qui est le parcours en Prordre.
Nous rappelons cet algorithme quon peut exprimer simplement sous une forme rcursive comme suit :
Prordre (Nud)
Dbut
Lister Nud
Pour chaque fils n de Nud en partant de la gauche faire
Prordre ( n )
Fin Pour
Fin
Si on considre le modle hirarchique ci-dessous compos des segments(ou entits) A,
B, C et D et dont une occurrence ou ralisation est donne en exemple, le parcours en
Prordre de cette occurrence donnerait :
a1 b1 d1 d2 b2 d3 b3 d4 d5 c1 c2
figure 2.26 : Parcours en Prordre dune ralisation dun modle hirarchique
Chacune des listes de segments obtenus ainsi va constituer un enregistrement de longueur variable.
Afin de reconnatre la structure dun enregistrement et la nature des segments qui le composent,
chaque segment est prcd dun entte qui donne sa longueur et son type par rfrence au schma
hirarchique (les PDB). Ces enregistrements sont rangs conscutivement et forment un fichier
squentiel. Linconvnient de cette structure est quelle ne permet pas de slectionner rapidement la
racine dune arborescence, puis lintrieur dune arborescence un nud quelconque. Ceci pourrait
beaucoup faciliter les rponses aux questions susceptibles dtre poses la base de donnes.
A
B C
D
d3
b2
d4
b3
d5
a1
c1 c2
d1 d2
b1
Chapitre 2: Les modles de donnes rseau et hirarchique
62
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
3.6.2 Structure de liste
Cette mthode consiste considrer que chaque nud dune arborescence est un lment dun liste
chane, lordre des nuds tant toujours celui donn par application de lalgorithme du Prordre.
Cette mthode permet de sparer lordre logique des occurrences des segments de leur ordre physique.
Elle prsente plusieurs inconvnients. Par exemple, en cas de recherche dun lment en fin de liste, il
faudra parcourir tous les lments de la liste. Pour acclrer la recherche, on introduit en pratique
plusieurs types de pointeurs tels que :
Pointeur sur le pre : pour chaque nud, ce pointeur pointe vers le pre de ce nud
Pointeur sur le fils : pour chaque nud, ce pointeur pointe vers le premier fils gauche. On
peut utiliser autant de pointeurs fils diffrents quil y a de liens hirarchiques diffrents dans
le schma.
Pointeur frre : pointe sur le nud suivant de mme type (occurrence du mme segment)
La reprsentation sous forme de liste chane de loccurrence de larbre de la figure 2.26 obtenue
plus haut par le Prordre et qui est : a1 b1 d1 d2 b2 d3 b3 d4 d5 c1 c2 donnerait :
figure 2.27 : Reprsentation sous forme de liste chane dune occurrence de larbre
Les pointeurs utiliss ont respectivement les significations suivantes :
ce pointeur est un pointeur vers le frre droit de type Racine (pas de rfrence au pre)
ce pointeur est un pointeur vers le pre
4 ce pointeur est un pointeur vers le frre droit de mme type (ayant le mme pre)
O ce pointeur est un pointeur vers le premier fils gauche relatif au lien entre B et D
ce pointeur est un pointeur vers le premier fils gauche relatif au lien entre A et C
ce pointeur est un pointeur vers le premier fils gauche relatif au lien entre A et B
a1


c1
4
c2

/
b1
O 4
b2
O 4
b3

O
/
d1
4
d2

/
d4
4
d5

/
d3

/
Chapitre 2: Les modles de donnes rseau et hirarchique
63
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
3.7 Notion de sous schma dans le modle hirarchique
Nous avons vu quune base de donnes hirarchique peut tre compose dune ou de plusieurs
PDB dont lensemble sera assimil au schma conceptuel de cette base de donnes. Dfinir une vue ou
un sous schma sur un tel schma conceptuel va revenir dfinir pour chaque PDB le sous ensemble
de segments que lutilisateur est autoris voire. Cest ainsi quune vue ou sous schma dans le cadre
du modle hirarchique peut tre considr comme un ensemble de sous schmas chacun se rapportant
une PDB. De tels sous schmas sont appels dans IMS des PCB pour Program Communication
Block et dont les rgles de construction sont globalement les suivantes :
Un PCB tant un sous ensemble dune PDB, il sera dfini en masquant un ou plusieurs
segments de ce PBD. Dans ce cas tous les segments fils dun segment masqu doivent aussi
tre masqus.
Le segment racine dun PCB doit tre le mme que celui de la PDB laquelle il se rapporte.
Cette contrainte se comprend naturellement partir de la prcdente car si on masque le
segment racine dune PDB cest tous les segments de la PDB qui devront aussi tre masqus
et ceci na vraiment pas dintrt. Cette contrainte nexiste pas dans le cas du modle rseau.
On peut masquer nimporte quel attribut (ou FIELD) dun segment. Il faut remarquer que
cette possibilit nexistait pas dans les premires versions du SGBD o il fallait inclure tous
les champs dun segment devant composer un PCB.
On peut dfinir plusieurs PCB pour une mme PDB. En effet, une PDB tant vue comme
une arborescence de segments, le nombre de PCB quon pourra construire sera identique aux
nombre de sous arbres quon peut driver de cette PDB.
Un mme PCB peut tre utilis par plusieurs programmes dapplication
Deux PCB distincts peuvent comporter des segments en commun
Un programme dapplication peut voir la base de donnes travers un ou plusieurs PCB
A titre dexemple, nous allons dfinir partir du schma conceptuel de la figure 2.24, le sous-
schma (ou vue) suivant:
Figure 2.28 : Un exemple de sous schma
qui constitue donc ce quon a appel un PCB. Le programme de description de ce PCB en utilisant
le LDD du SGBD IMS aurait peu prs lallure suivante :
DEPARTEMENTS
EMPLOYES
ENFANTS
Chapitre 2: Les modles de donnes rseau et hirarchique
64
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
01 PCB DBDNAME = ENTREPRISE
02 SENSEG NAME = DEPARTEMENT, PROCOPT = G
03 SENSEG NAME = EMPLOYES, PARENT = DEPARTEMENT, PROCOPT = GI
04 SENFLD NAME = NUMEMP
05 SENFLD NAME = NOMEMP
06 SENGEG NAME = ENFANTS, PARENTS = EMPLOYES, PROCOPT = GIRD
07 SENFLD NAME = PRENOM
08 SENFLD NAME = AGE
09 PSBGEN LANG = COBOL, PSBNAME = VUE1
Figure 2.29 : Dfinition dun sous schma avec le LDD du SGBD IMS
Les segments composants un PCB sont appels dans IMS des segments sensitifs (ou sensibles) et
sont dclars laide du mot cl SENSEG (Sensitive Segment) dans le programme. Le terme sensitif
(ou sensible) caractrise donc tout segment quon dsire rendre accessible un programme
dapplication.
Les instructions 02, 03 et 06 du programme ont pour rle de dclarer les segments :
DEPARTEMENTS (qui est la racine de larbre!), EMPLOYES et ENFANTS comme
tant des segments sensitifs (donc visibles par le programme lapplication).
La clause PROCOPT (Processing Options) permet de spcifier les types
doprations quon autorise sur le segment. Les oprations possibles sont : Get
et/ou Insert et/ou Replace et/ou Delete. Par exemple, pour le segment
DEPARTEMENTS on autorise uniquement des oprations de lecture
(PROCOPT = G), pour le segment EMPLOYES on autorise des oprations de
lecture et dinsertion (PROCOPT = GI), et pour le segment ENFANTS on
autorise des oprations de lecture, dinsertion, de modification et de suppression
(PROCOPT = GIRD).
Dans certaines versions du SGBD, ce style de protection peut mme tre
spcifi au niveau des attributs ou Fields dun segment permettant ainsi de
renforcer les contrles daccs aux donnes de la base.
Dans le cas o on dsire rendre accessibles un programme dapplication seulement certains
attributs (ou FIELD) dun segment sensitif, ils suffira de les dclarer eux aussi comme attributs
sensitifs grce au mot cl SENFLD (Sensitive Field).
Les instructions 04 et 05 du programme ont pour rle de dclarer les attributs :
NUMEMP et NOMEMP du segment EMPLOYES comme tant des attributs sensitifs.
Par consquent, le programme dapplication ne peut voir que ces deux attributs du
segment EMPLOYES. Les mme remarques peuvent tre faites au sujet des attributs
PRENOM et AGE du segment ENFANTS qui sont dclars sensitifs (instructions 07 et
08 du programme). Par contre pour le segment DEPARTEMENTS, aucun attribut nest
dclar sensitif et dans ce cas, le SGBD considre par dfaut que tous les attributs de ce
segment sont accessibles aux programme (sensitifs).
Nous avons vu quun programme dapplication peut voir la base de donnes travers
un ou plusieurs PCB. Lensemble de ces PCB constitue selon la terminologie du
Chapitre 2: Les modles de donnes rseau et hirarchique
65
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
SGBD IMS un Program Spcification Bloc ou PSB qui correspond effectivement la
notion de sous schma prsente dans les autres types de SGBD (relationnel, rseau).
Cest ainsi que le SGBD distingue les PSB entre eux (et non pas les PCB!) grce un
nom qui sera attribu chaque PSB.
Linstruction : [ 09 PSBGEN LANG = COBOL, PSBNAME = VUE1 ] prcise
que le programme lapplication utilisant ce sous schma est crit en COBOL et que le
nom du sous schma est : VUE1. Par contre linstruction : [ 01 PCB DBDNAME
= ENTREPRISE ] pour rle dindiquer le dbut de la dclaration dun PCB et
dindiquer quelle DBD se rapporte ce PCB. Dans notre cas cest la DBD ayant pour
nom ENTREPRISE correspondant la premire PDB composant le schma conceptuel
de notre base donnes et qui a t dcrite par le programme de description du 3.5.3.1
Une vue nest en fait quun sous arbre de segments partant ncessairement de la racine. La question
qui vient lesprit est : Comment peut on cacher un segment appartenant un sous arbre ?. Par
exemple dans le sous arbre donn plus haut comment peut on cacher le segment EMPLOYES afin de
nautoriser le programme dapplication qu voir les segments DEPARTEMENTS et ENFANTS. Le
SGBD oblige dclarer dans un PCB tous les segments qui le compose. Par contre, pour ceux quon
dsire cacher, il suffira de les dclarer en fixant le paramtre : PROCOPT = K (Key sensitivity). Ceci
signifie que le SGBD va ncessairement utiliser la cl du segment cach (EMPLOYES) pour toutes
les oprations daccs quil fera la base de donnes mais ne dlivrera en aucun lutilisateur des
information sur le segment cach.
3.8 La manipulation de donnes dans un modle hirarchique
Le langage de manipulation de donnes offert part un SGBD hirarchique est essentiellement bas
sur des oprations telle que les suivantes :
E Retrouver un enregistrement dont le type a t spcifi. Cette opration est
particulirement utilise pour accder la racine dune arborescence connaissant la valeur
de la cl dun enregistrement. Dans IMS, une telle opration est ralise grce une
instruction GET UNIQUE (GU).
E Se dplacer dans une arborescence en utilisant une fonction de type successeur ou suivant
dun nud. Cette opration se base sur la mthode de parcours en prordre de
larborescence. Cest une opration de recherche purement squentielle qui consiste donc
explorer la liste des nuds telle quelle est produite par lalgorithme du prordre. Dans
IMS, une telle opration est ralise grce linstruction GET NEXT (GN).
Lexcution dune telle opration sur loccurrence de larbre de la figure 2.26
(dont le parcours selon la mthode du prordre est : a1 b1 d1 d2 b2 d3 b3
d4 d5 c1 c2) dans le cas o le nud courant tait b1 donnera comme rsultat
d1. Lexcution de la mme instruction une deuxime fois va donner comme
rsultat d2.
e : Expliquer comment vous mettriez en uvre lexcution de cette instruction
en utilisant la reprsentation sous forme de liste chane avec tous les types de
pointeurs qui y sont dfinis ?
E Se dplacer dans une arborescence en utilisant une fonction de type successeur ou suivant
Chapitre 2: Les modles de donnes rseau et hirarchique
66
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
dun nud mais en se limitant uniquement des nuds qui ont le mme pre. Cette
opration se base aussi sur la mthode de parcours en prordre de larborescence. Dans
IMS, une telle opration est ralise grce linstruction GET NEXT WITHIN
PARENT.
Lexcution de GET NEXT WITHIN PARENT sur le mme exemple dans le
cas o le nud courant tait b1 donnera comme rsultat b2. Lexcution de la
mme instruction une deuxime fois va donner comme rsultat NIL. Ceci
signifie que b2 est le dernier lment de la liste dont le pre est a1.
e : Mme questions que plus haut
E Insrer une nouvelle occurrence dun nud (ou segment), supprimer une occurrence dun
nud, remplacer une occurrence.. Dans IMS, de telles opration sont ralises grce aux
instruction INSERT, DELETE et REPLACE.
Toutes ces oprations ou instructions vont servir lcriture dun programme dapplication. Elles
seront en gnral invoques partir dun langage de programmation (PL/1, COBOL, Assembleur, ...)
qui servira de support (langage hte) lcriture des programmes dapplication.
4 Conclusion
Les modles rseaux et hirarchiques ont t lorigine de la premire gnration de SGBD connus
comme tant relativement rigides et complexes mettre en uvre. Ceci est d au fait que ces SGBD
ont t dvelopps par des programmeurs pour tre utiliss principalement par des programmeurs.
Ils sont dits navigationnels car on doit dcrire le chemin daccs utiliser pour trouver une donne
dans la base de donnes. Le terme navigationnel caractrise bien ces SGBD puisque la base de
donnes est perue comme une Mer dans laquelle on doit naviguer pour atteindre des les qui
sont reprsentes par les fichiers denregistrements en utilisant des ponts qui sont reprsents par
les liens entre les entits et qui permettent de passer dune le lautre.
Les SGBD navigationnels sont verbeux cest dire quils contiennent beaucoup de mots rservs
que le programmeur devra apprendre pour tre mme de dcrire et manipuler les donnes de sa base.
A titre indicatif, un SGBD CODASYL peut contenir jusqu 300 mots rservs alors quun SGBD
relationnel ne possderait quune trentaine (30) de mots rservs en moyenne.
Lavantage du modle rseau par rapport au modle hirarchique est quil ne restreint pas le
nombre de liaisons qui peuvent arriver ou partir dun nud. Un modle hirarchique nest en fait
quun cas particulier de modle rseau mais la rciproque nest pas vraie.
Un SGBD CODASYL offre un langage de description de donnes (LDD) et un langage de
manipulation de donnes (LMD) spars. Cette sparation entre les deux langages encourage un
travail en deux phases : Conception de la base de donnes (mise en place du schma conceptuel et des
sous schmas) puis exploitation de celle-ci (criture des programmes dapplication ).
Les SGBD navigationnels manipulent un enregistrement la fois alors quun SGBD relationnel
manipulerait plutt une relation la fois. Une relation nest en fait quun ensemble de tuples dont
chacun pourrait tre assimil un enregistrement que manipule un SGBD navigationnel. Or, il faut
souligner quavec un SGBD relationnel, une seule instruction peut modifier plusieurs tuples la fois
rpondant des critres alors quavec un SGBD navigationnel, il faudrait crire un petit programme
Chapitre 2: Les modles de donnes rseau et hirarchique
67
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
pour arriver faire le mme travail.
Enfin la supriorit des SGBD relationnels par rapport aux SGBD navigationnels est actuellement
communment reconnue. Cependant, certains grands distributeurs de SGBD navigationnels comme la
socit CULLINET avec son SGBD rseau IDMS/R ou la socit CINCOM avec son SGBD TIS,
continuent promouvoir leurs produits en y intgrant les concepts du relationnel. Ces socits
justifient leur approche par le fait que les meilleurs SGBD seront ceux qui combineront le
navigationnel avec le relationnel.
Chapitre 2: Les modles de donnes rseau et hirarchique
68
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Exercices sur le Chapitre 2
Chapitre 2: Les modles de donnes rseau et hirarchique
69
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Exercice 1:
Identifier parmi les modles de donnes suivants ceux qui ne sont pas conformes aux spcifications
du modles rseau Codasyl :
A
B
C D
A
B
C D
B
A
C
A
B
D
B
A
C
A
A
A
Chapitre 2: Les modles de donnes rseau et hirarchique
70
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Exercice 2:
Identifier parmi les modles de donnes suivants ceux qui ne sont pas conformes aux spcifications
du modles hirarchique :
A
B
C D
A
B
C D
B
A
C
A
B
D
B
A
E
D
C
B
A E
D C
A
B D
Chapitre 2: Les modles de donnes rseau et hirarchique
71
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Exercice 3:
Parmi les modles de donnes suivants, Transformer ceux que ne sont pas conformes aux
spcifications du modle rseau CODASYL de faon les rendre conformes :
Exercice 4:
Prciser pour chacun des Sets du modle de donnes suivant :
1) lentit propritaire et lentit membre.
2) le type de rtention que vous choisirez pour lenregistrement membre dans un SET
3) Dans le cas ou la rtention choisie pour les Sets est comme suit :
Regroupe : RETENTION IS MANDATORY
Utilise : RETENTION IS OPTIONAL
Emploie : RETENTION IS MANDATORY
PRODUITS
VILLES
SOCIETES
ETUDIANT
MODULE
ENSEIGNANT
MODULE
ENSEIGNANT
ETUDIANT
VILLES
Habite_Par
ECOLES
Contient
VEHICULES
DEPARTEMENTS
Emploie
EMPLOYES
Utilise
Pre_De
ENFANTS
Accueille
Regroupe
Chapitre 2: Les modles de donnes rseau et hirarchique
72
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Pre_De : RETENTION IS FIXED
Accueille : RETENTION IS OPTIONAL
Contient : RETENTION IS FIXED
Habite_Par : RETENTION IS MANDATORY
Expliquer ce qui se passe si on avait supprimer une occurrence de chacun des
enregistrements suivants :
- VILLES
- ENFANTS
- VEHICULES
- ECOLES
- DEPARTEMENTS
- EMPLOYES
Exercice 5 :
Est-ce que la transformation du lien N:M entre les deux entits MODULE et ETUDIANT peut tre
faite simplement en le remplaant par deux liens L1 et L2 de type 1: N . Justifier votre rponse en
raisonnant sur une reprsentation par liste circulaire de quelques occurrences de ces entits.
Exercice 6:
Soit le modle rseau CODASYL suivant :
Emploie
ENSEIGNANTS
Encadre
Enseigne
MODULES
ETUDIANTS
Suivi-Par
INSTITUS
DEPARTEMENTS
Contient
Dispense
Contient
ETUDIANT
MODULE
ETUDIANT
MODULE
L1 L2
Chapitre 2: Les modles de donnes rseau et hirarchique
73
Dr. Brahim BELATTAR - LISA - Dpt dinformatique - Facult des sciences de lIngnieur - Univ. de Batna - 05000 - Algrie
Proposer plusieurs sous schmas valides qu'on pourrait dfinir partir de ce schma et Proposer
plusieurs sous schmas valides qu'on pourrait dfinir partir de ce schma et prcisant le type de
questions possibles avec chaque sous schma.
Exercice 7 :
Soit le modle hirarchique suivant :
Ce schma permet-il de rpondre chacune des questions suivantes .
- Trouver la liste des enseignants connaissant le dpartement
- Trouver la liste des modules dispenss dans un institut
- Trouver l'institut auquel est rattach un tudiant
- Trouver la liste des modules enseigns dans un dpartement
Proposer plusieurs sous schmas valides qu'on pourrait dfinir partir de ce schma et prciser le
type de questions possibles avec chaque sous schma.
Exercice 8:
La notion dAREA dans un SGBD de type CODASYL permet de prciser pour chaque
enregistrement le nom dune zone sur le support de stockage ou on dsire stocker les occurrences de
cet enregistrement. Cette notion est-elle aussi utilise pour le stockage des occurrences dun SET
(lensemble des liste circulaires ralisant un SET) ?
Enseigne
ENSEIGNANTS
Emploie
MODULES
ETUDIANTS
Suivi-Par
INSTITUS
DEPARTEMENTS
Contient