Vous êtes sur la page 1sur 50

III : La base de donnes de l'AS400 :

3.1 Introduction
La base de donnes de lAS400 sappelle DB2/400 ; elle fait partie intgrante de lOS/400 . Cest une base de donnes relationnelle . lle est base sur deu! t"pes dob#ets $ les fi%&iers p&"si'ues 'ui sont l'ui(alent des tables ) et les fi%&iers logi'ues 'ui sont l'ui(alent des (ues et des #ointures . On peut a%%der * %es fi%&iers de diffrentes +ani,res $ - par progra++e ./01)COBOL)2A3A)CL )C et%45 - par S6L - par des outils sp%ifi'ues de lOS400 %o++e le 67 /8 'ui per+et de gnrer fa%ile+ent des rapports . Les +anipulations des fi%&iers peu(ent 9tre %ontr:les par des triggers . Les a%%,s %on%urrents au! +9+es fi%&iers sont bien entendu grs .gestion de (errous et%45 Les tables peu(ent 9tre inde!es . Contraire+ent * %e 'ui se passe a(e% dautres bases de donnes )il ne!iste 'uune seule instan%e de DB2 sur le s"st,+e OS400 .elle porte dans larbores%en%e le no+ S;<C=20 5 . 0our grer lindpendan%e des ob#ets.tables)(ues)pro%dures e+bar'ues et%45 %rs par les diffrents utilisateurs ) DB2 .tout %o++e dautres DB 5 utilise des > espa%es de no++age ? appels > s%&+as ? . 0rati'ue+ent un s%&+a %orrespond * une librairie de 6S8S .C&a'ue utilisateur de notre s"st,+e poss,de don% un s%&+a 'ui lui est propre . Lors'uil fait appel * ob#et de son propre s%&+a lutilisateur utilise la no+en%lature @o+Ob#et . !e+ple $ sele%t A fro+ %lients5 . Los'uil fait appel * un ob#et dun autre s%&+a il utilise la no+en%lature $ @o+DuS%&+a.@o+Ob#et. !e+ple $ sele%t A fro+ 2000B.CLC @DS 5 . La gestion de DB2/400 se ralise ais+ent grE%e * loutil C< @a(igator .

3.2 Cration d'une table :

3.2.1 Cration des champs

On en%ode ensuite toutes les %olonnes a(e% leur t"pe et leurs sp%ifi%its %o++e par e!e+ple une gnration auto+ati'ue de (aleurs nu+ri'ues .Le t"pe d%i+al %on(ient parti%uli,re+ent au! (aleurs nu+ri'ues %ar il %adre bien a(e% le for+at pa%Fed de%i+al de lOS400 .

DC 4 On obtient finale+ent les %&a+ps sui(ants $

3.2.2 Contraintes de cl $

3.2.3 Contraintes de vrification

3.2.4 Vrification SQL


On peut grE%e au +enu %onte!tuel asso%i * la table %re (isionner l'ui(alent S6L des oprations ralises %i-dessus $

3.2.5 Contenu de la table


Le +enu %onte!tuel offre la possibilit de (oir le %ontenu de la table ou de lditer $

3.2. !"uivalence #ichier $ %able


La %ration de la table %lient en +ode S6L a engendr la %ration dun fi%&ier p&"si'ue +ono-+e+bre dans la librairie portant le +9+e no+ 'ue le s%&+a . en fait un s%&+a G une librairie5 .

3.2.& 'utres tables


De la +9+e +ani,re ) nous %rons les tables sui(antes $ 0roduits $

=a%tures $

Dtail $

Le for+at den%odage des dates est AAAA-HH-22 . !e+ple $ 200I-02-20 Les %&a+ps boolens dans DB2/400 sont reprsents par des %&a+ps de t"pe %ara%t,re et de longueur B .La (aleur =ALS est reprsente par le %ara%t,re J0 .Kro5 et la (aleur D/7 par le %ara%t,re JB .

3.3 Contraintes dintgrit rfrentielle:


On peut ) lors de la %ration dune table ou apr,s sa %ration i+poser des %ontraintes relationnelles .(oir %ours de S6L5 entre une table et une table du +9+e s%&+a ou dun s%&+a diffrent .

Les diffrentes a%tions possibles sont $ suppression $ o @OACDCO@ %ontr:le lors du COHHCD .#ournalisation obligatoire5 o / SD/CCD %ontr:le i++diat .#ournalisation fa%ultati(e5 o CASCAD entraLne la suppression des enregistre+ents dpendants dans a%&ats .#ournalisation obligatoire5 o S D@7LL entraLne la +ise * blan% des %ls trang,res dans a%&ats.#ournalisation obligatoire5 o S DD=D entraLne la +odifi%ation des %ls trang,res * leur (aleur par dfaut..#ournalisation obligatoire5

+ise * #our $

o @OACDCO@ %ontr:le lors du COHHCD .#ournalisation obligatoire5 o / SD/CCD %ontr:le i++diat .#ournalisation fa%ultati(e5

3.4 finition d'une contrainte !ulti"Cl


On sou&aite e+p9%&er 'ue le +9+e produit soit enregistr deu! fois sur la +9+e fa%ture . Cl faut don% for%er luni%it du %ouple @u+ero de =a%ture M @u+ero de 0roduit dans la table dtail $

3.# $nration auto%ati&ue du sc'%a relationnel de la base de donnes :

3.# (ara%trage des tables :


Le +enu %onte!tuel > Des%ription ? asso%i * %&a%une des tables per+et den affiner le fon%tionne+ent ; %e 'ui per+et nota++ent d(iter de dte%ter au plus t:t de gra(es d"sfon%tionne+ents $

3.5.1 Description gnrale :

3.5.2 'llocation de l(espace dis"ue )

@o+bre initial de lignes $ @o+bre de re%ords initiale+ent rser(s pour la table dans lespa%e dis'ue. Cn%r+entation du no+bre de lignes $ @o+bre de lignes a#outes lors de %&a'ue in%r+entation de lespa%e dis'ue allou en %as de dpasse+ent de lespa%e initial . @o+bre +a!i+al din%r+ents $ sans %o++entaire . Delle 'uelle est para+tre %i-dessus ) la table %lients pourra don% %ontenir au +a!i+u+ $ B00 N< A <0 G O<0 lignes . Ce &ui )er%et de sto))er un )rogra%%e &ui boucle et re%)lit la table de %ani*re inte%)esti+e , Si ce )ara%trage nest )as effectu - la))lication fauti+e sera sto))e lors&ue le &uota dis&ue allou au )ro)ritaire de la table sera atteint ..out nou+el acc*s au s/st*%e sera alors gra+e%ent )erturb .

3.5.3 *estion des verrouilla+es )


On peut a%%,der * une table de trois +ani,res diffrentes $

-+ode le%ture seule -+ode %riture seule -+ode +ise * #our n %as da%%,s %on%urrents ) on pr(oit lors de la %ration du fi%&ier ) un te+ps dattente +a!i+u+ pour les progra++es en attente .par dfaut ;0 se%5. !e+ple $ Soient deu! progra++es pg+B et pg+2 a%%dant au +9+e fi%&ier et au +9+e re%ord de %e fi%&ier . pg+B et pg+2 a%%,dent tous deu! en +ode +ise * #our .Dout enregistre+ent lu * des fins de +ise * #our est (errouill. Don% si pg+B a%%,de le pre+ier * un re%ord donn ) il (errouille %elui-%i et e+p9%&e pg+2 d" a%%der . Ber %as $ pg+B ne lib,re pas le re%ord a(ant le te+ps dattente +a!i+u+ $ pg+2 (a rester blo'u )pendant le te+ps dattente +a!i+u+ )au ni(eau de linstru%tion de le%ture a(ant de d%len%&er une e!%eption .Cette e!%eption ) si elle nest pas inter%epte ) plantera pg+2 . n 2A3A ) on utilise les %lauses tr" et %at%& pour grer %es e!%eptions . 2,+e %as $ pg+B lib,re le re%ord a(ant le te+ps dattente +a!i+u+ $ au +o+ent de la +ise * #our et de la libration du re%ord par pg+B ) pg+2 a%%,de au re%ord en +ise * #our et (errouille * son tour le re%ord .

Dlai dattente +a!i+al $ te+ps dattente de la table globale a(ant un ti+e-out . Dlai dattente de ligne +a!i+al $ te+ps dattente dun re%ord de la table a(ant ti+e-out .

3.0 1ues :
Si les tables sappuient sur des ob#ets appels fi%&iers p&"sis'ues ) les (ues )elles) sappuient sur des ob#ets appels fi%&iers logi'ues . lles per+ettent de %rer des inde! suppl+entaires pour la%%,s * une table . lles ne renfer+ent 'ue des infor+ations sur les %&a+ps * affi%&er et sur leur inde!ation ; elles ne %ontiennent au%une donne p&"si'ue .

3. .1 Vues simples $

3. .2 ,ointures )

@ous pou(ons gale+ent %rer des %&a+ps %al%uls grE%e au bouton =O/H7L oprer des regroupe+ents grE%e * loption 1/O70 B8.3oir Cours5.

ou en%ore

nfin ldition S6L per+et dapporter les derni,res +odifi%ations au %ode S6L gnr auto+ati'ue+ent .

3.2 3ournalisation :
7n #ournal est un ob#et dans le'uel sont prises en %o+pte toutes les +odifi%ations apportes * une ou plusieurs tables . LPutilisation du #ournal per+et au s"st,+e de garder une tra%e $ - des >i+ages apr,s? .option par dfaut5..A=D /5 - des >i+ages a(ant? et >i+ages apr,s? .BODQ5 La fon%tion #ournal repose sur lPutilisation de 2 t"pes dPob#ets.

- Le #ournal .t"pe $ A2/@5 - Le r%epteur de #ournal .t"pe $ A2/@/C35 La #ournalisation est obligatoire pour la gestion de %ertaines %ontraintes dintgrit .(oir %idessus5 ou la +ise en Ru(re de transa%tions.(oir %&apitres sui(ants5 .

3.4 (rocdures e%bar&ues :


Les pro%dures e+bar'ues per+ettent da%%lrer de +ani,re asseK i+portante la gestion des re'u9tes S6L . Celles-%i sont i+plantes une fois pour toutes au ni(eau de la DB elle-+9+e et il suffit dappeler la pro%dure 'ui les en%apsule pour les +ettre en Ru(re . Le trafi% (ers le ser(eur S6L est don% grande+ent allg . Dans une 'uipe de progra++eurs %ette te%&ni'ue per+et gale+ent de dlguer le tra(ail de gestion de la DB au > sp%ialiste +aison ? et de %onfrer dautres tE%&es .gestion de site Seb par e!e+ple5 au! autres progra++eurs .

3.-.1 .rocdures modifiant la /0 )

3.-.2 .rocdures accdant 1 la /0 en lecture )

3.5 Acc*s direct au6 scri)ts S7L :

Cette option per+et d%rire dire%te+ent des instru%tions S6L sans passer par les assistants grap&i'ues . lle per+et gale+ent de sau(egarder en lo%al puis de r%uprer les s%ripts dits .Dans les illustrations 'ui sui(ent nous utilisons %et outil pour +ettre en Ru(re lune des pro%dures e+bar'ues %res %i-desss .

3.10 L'utilitaire 789:; :


Le 6uer" est un utilitaire oprant dans len(ironne+ent OS400 .Cl per+et de gnrer des progra++es dinterrogation de fi%&iers p&"si'ues ou logi'ues .si+ples ou #oints5 ; %es progra++es produisent des rapports r%apitulatifs * l%ran ) * li+pri+ante ou dans un fi%&ier p&"si'ue . Exemple 1 : vue du fichier client S/T6/8 $

!9<8 : =>3?

Exemple 2 : total des factures

=>5?

!9<8: =>3?: +oir a+ant @no% du &uer/ A +uefactB

96cution du &uer/ : /7@6/8 37 CLC /7@6/8 37 =ACD /e+ar'ue $ 0our les 'ueries gnrant un fi%&ier p&"si'ue ) il faut dabord effa%er le fi%&iers gnr par les e!%utions pr%dentes du 'uer" . !odification dun &uer/ : S/T6/8 U=4V (ara%trage d'un &uer/ : a5@ous %rons le 'uer" WCLC3A/2W interrogeant le fi%&ier %lients par la pro%dure &abituelle . b5@ous sle%tionnons les re%ords par lPinter+diaire de (ariables . : no+XdeX(ariable5

%5 @ous a%%dons au 'uer" CLC3A/2 (ia le pg+ CL CLCLC3A/ sui(ant $ PGM PARM(&NOM &PRENOM) DCL VAR(&NOM) TYPE(*CHAR) LEN(10) DCL VAR(&PRENOM) TYPE(*CHAR) LEN(10) DCL VAR(&GUIL) TYPE(*CHAR) LEN(1) VALUE(X'7D') DCL VAR(&NTOT) TYPE(*CHAR) LEN(12) DCL VAR(&PTOT) TYPE(*CHAR) LEN(12) CHGVAR VAR(&NTOT) VALUE(&GUIL *TCAT &NOM *TCAT &GUIL) CHGVAR VAR(&PTOT) VALUE(&GUIL *TCAT &PRENOM *TCAT &GUIL) STRQMQRY QMQRY(CLIVAR2) AL QRYD!N(*YES) " QM!ORM(*QMQRY) SETVAR((NR &NTOT) (PR &PTOT)) ENDPGM /6 $ ALS6/8D=@.A8 S5 GV per+ettre la re%&er%&e du 'uer" par+i %eu! %rs (ia lPutilitaire 67 /8. 6H=O/H.A6H6/85 GGV +ise en for+e du rsultat sui(ant les indi%ations du 'uer" original . d5Lan%e+ent du pg+ CL $ CALL CLCLC3A/ 0A/H.PD70O@DP YP /CCP5

3.11 Les Inde6

3.12 Les .riggers

3.12.1 Exemple de trigger sur insertion

3.12.2 !2emple de tri++er sur modification avec lancement d(e2ception SQL


On dsire e+p9%&er une &ausse des pri! de plus de B00 Z .

ACDC3 / A==CCQA1 COD S6L DA@S LO@1L D C@SD/7CDCO@S S6L COH0L D / $

ACDC3 / L [ C7DCO@ 7tilisation $ A3A@D $

A0/ S $

Vous aimerez peut-être aussi