Untitled - Vitajte na stránkach www.einsty.hostujem.sk
Untitled - Vitajte na stránkach www.einsty.hostujem.sk
Untitled - Vitajte na stránkach www.einsty.hostujem.sk
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
P R O G R A M U J E M E<br />
druhej strane vz ahu. Takže ak sa dobre pozrieme <strong>na</strong> obr. è. 7, z ktorého pri implementácii<br />
vychádzame, musíme vloži :<br />
l ståpec Vydavatel_ID do tabu¾ky CD<br />
l ståpec CD_ID do tabu¾ky PESNICKA<br />
l ståpec Umelec_ID do tabu¾ky PESNICKA<br />
Obr. 7<br />
Ešte stále však nie sme v druhej normálnej forme. Preèo? Pretože atribút Vydavatel<br />
je podobný problém ako atribút Kapela. Preto dekomponujeme atribút Vydavatel <strong>na</strong> samostatnú<br />
entitu s jej parametrami, tak ako je to <strong>na</strong> obrázku è. 7. Koneène máme náš dátový<br />
model v druhej normálnej forme.<br />
TRETIA NORMÁLNA FORMA. O relácii hovoríme, že je v tretej normálnej<br />
forme, ak je v druhej normálnej forme a zároveò všetky jej atribúty, ktoré netvoria primárny<br />
k¾úè, sú od seba nezávislé. Keby existoval atribút, ktorý je závislý od iného atribútu,<br />
musíme ho presunú do novej entity.<br />
Ak sa pozrieme <strong>na</strong> náš dátový model a predpokladáme, že nás už bližšie nezaujímajú<br />
ïalšie informácie o vydavate¾stve, môžeme poveda , že všetky atribúty v jednotlivých<br />
entitách sú od seba <strong>na</strong>vzájom nezávislé. (Ak by nás zaujímala aj presná adresa vydavate¾stva,<br />
museli by sme v zmysle prvej normálnej formy rozpracova nové atribúty entity<br />
VYDAVATEL, ako ulica, mesto, PSÈ a iné.) Takže môžeme poveda , že tento dátový model<br />
spåòa túto podmienku a je v tretej normálnej forme.<br />
Logická úroveò návrhu<br />
Teraz máme kompletný logický návrh dátového modelu. Zhròme si zásady postupu:<br />
l identifikácia a modelovanie entít<br />
l identifikácia a modelovanie vz ahov medzi entitami<br />
l identifikácia a modelovanie atribútov<br />
l identifikácia a stanovenie identifikátorov (primárnych k¾úèov) pre každú entitu<br />
l normalizácia<br />
Dátový model, ktorý sme vytvorili, je <strong>sk</strong>utoène jednoduchý. Zatia¾ je to všetko v teoretickej<br />
rovine. Aby bol náš projekt aj funkèný, musíme pokroèi do implementaènej úrovne.<br />
IMPLEMENTAÈNÁ ÚROVEÒ. Ako už vieme, v tejto úrovni pripravujeme dátový<br />
model <strong>na</strong> konkrétne technické prostriedky. Po túto úroveò bola èinnos pre všetky<br />
druhy serverov SQL rov<strong>na</strong>ká. Implementácia je vlastne preklad dátového modelu do konkrétneho<br />
jazyka SQL. Teraz pristúpime <strong>na</strong> základe doterajších <strong>sk</strong>úseností k implementácii<br />
dátového modelu <strong>na</strong> server MySQL.<br />
Aby sme sa nedopustili chýb, opíšme si základné pravidlá implementácie:<br />
1. Entity sa stávajú tabu¾kami vo fyzickej databáze.<br />
2. Atribúty sa stávajú ståpcami v tabu¾ke. Musíme zvoli príslušný dátový typ pre každý<br />
ståpec.<br />
3. Unikátne identifikátory sa stávajú primárnymi k¾úèmi v tabu¾ke.<br />
4. Vz ahy sú modelované ako cudzie k¾úèe. (Objasníme ne<strong>sk</strong>ôr.)<br />
Ak budemem aplikova tieto pravidlá, dostaneme opis fyzickej databázy, ako je to v<br />
tejto tabu¾ke:<br />
Fyzická implementácia dátového modelu<br />
Tabu¾ka Ståpec Dátový typ Poznámka<br />
CD CD_ID INT primárny k¾úè<br />
Nazov_CD<br />
VARCHAR(50)<br />
PESNICKA Piesen_ID INT primárny k¾úè<br />
Nazov_Skladby VARCHAR(50)<br />
Dlzka_Skladby<br />
TIME<br />
UMELEC Umelec_ID INT primárny k¾úè<br />
Meno_Umelca<br />
VARCHAR(50)<br />
VYDAVATEL Vydavatel_ID INT primárny k¾úè<br />
Nazov_Vydavatela VARCHAR(50)<br />
V tabu¾ke è. 8 sú definované kroky 1 až 3 implementácie. Všimnime si, že sme primárne<br />
k¾úèe deklarovali ako INT – my už vieme preèo. Ståpec Dlzka_Skladby bude uchováva<br />
èasové informácie o dåžke každej <strong>sk</strong>ladby. Aj keï nepredpokladáme, že by sme niekedy<br />
pracovali s týmto èasovým údajom, predsa sme ho deklarovali ako dátový typ TIME.<br />
Ale spokojne sme ho mohli deklarova aj typu VARCHAR. Ostatné ståpce sme deklarovali<br />
typu VARCHAR s maximálnou dåžkou 50 z<strong>na</strong>kov, èo by mohlo vyhovova .<br />
Ešte sme neimplementovali vz ahy. Tie sa definujú ako pridanie cudzích k¾úèov do<br />
tabu¾ky, ku ktorej vz ah smeruje. Cudzí k¾úè – foreign key – je primárny k¾úè tabu¾ky <strong>na</strong><br />
Jednoducho povedané, kópiu primárneho k¾úèa každej tabu¾ky presunieme v smere<br />
„vidlièky vz ahu“ do druhej tabu¾ky. Takto vytvoríme úplnú implementáciu dátového modelu:<br />
Úplná implementácia dátového modelu<br />
Tabu¾ka Ståpec Dátový typ Poznámka<br />
CD CD_ID INT primárny k¾úè<br />
Nazov_CD<br />
VARCHAR(50)<br />
Vydavatel_ID INT cudzí k¾úè<br />
PESNICKA Piesen_ID INT primárny k¾úè<br />
Nazov_Skladby VARCHAR(50)<br />
Dlzka_Skladby TIME<br />
CD_ID INT cudzí k¾úè<br />
Umelec_ID INT cudzí k¾úè<br />
UMELEC Umelec_ID INT primárny k¾úè<br />
Meno_Umelca VARCHAR(50)<br />
VYDAVATEL Vydavatel_ID INT primárny k¾úè<br />
Nazov_Vydavatela VARCHAR(50)<br />
Teraz máme kompletnú schému fyzickej databázy. Aby to bolo úplné, pomenujme<br />
túto databázu ARCHIV.<br />
Nakoniec zostáva už len <strong>na</strong>písa <strong>sk</strong>ript v jazyku SQL, ktorý zabezpeèí vytvorenie databázy<br />
ARCHIV s príslušnými tabu¾kami <strong>na</strong> serveri MySQL (výpis è. 10).<br />
Create Table CD (CD_ID INT NOT NULL,<br />
NAZOV_CD VARCHAR(50),<br />
VYDAVATEL_ID INT,<br />
Primary Key (CD_ID));<br />
Create Table PESNICKA PIESEN_ID INT NOT NULL,<br />
NAZOV_SKLADBY VARCHAR(50),<br />
DLZKA_SKLADBYC<br />
CD_ID INT,<br />
UMELEC_ID INT,<br />
Primary Key (PIESEN_ID));<br />
Create Table UMELEC (UMELEC_ID INT NOT NULL,<br />
MENO_UMELCA VARCHAR(50),<br />
Primary Key (UMELEC_ID));<br />
Create Table VYDAVATEL (VYDAVATEL_ID INT NOT NULL,<br />
NAZOV_VYDAVATELA VARCHAR(50),<br />
Primary Key (VYDAVATEL_ID));<br />
Samozrejme, nesmieme zabudnú <strong>na</strong>jprv vytvori databázu ARCHIV, <strong>na</strong>príklad cez<br />
program mysqladmin.<br />
OSTATNÉ NORMÁLNE FORMY. Aby nás neza<strong>sk</strong>oèila informácia, že existujú<br />
aj iné normálne formy, tak si ich iba spomenieme. Za tre ou normálnou formou <strong>na</strong>sleduje<br />
tzv. Boyce/Coddova normál<strong>na</strong> forma. Je to urèitá variácia tretej formy. Používa sa<br />
iba pri reláciách s viacerými kandidátnymi k¾úèmi.<br />
Ešte existuje štvrtá normál<strong>na</strong> forma, ktorej základom je zákaz spojovania nezávislej<br />
opakovanej <strong>sk</strong>upiny, a koneène piata normál<strong>na</strong> forma, ktorá sa týka tzv. spojenej závislosti.<br />
Ale to už je vysoká škola teórie databáz a v praxi vystaèíme s prvými tromi normálnymi<br />
formami.<br />
Sme <strong>na</strong> konci s teoretickým výkladom, aby som vás dlhšie nenudil. Prosím, vezmite si<br />
túto teóriu k srdcu a vyhnete sa zbytoèným problémom. Tí, èo si myslia, že sú to len zbytoèné<br />
blbosti (aj ja som bol taký!!!), mi dajú za pravdu ne<strong>sk</strong>ôr.<br />
Teraz už len zostáva <strong>na</strong>vrhnú správne technologické okolie, aby sme nemuseli núti<br />
<strong>na</strong>šu kamarátku pracova v príkazovom riadku, a takto sa vraciame od teórie k praxi – k<br />
<strong>na</strong>vrhovaniu pekného oknoidného prostredia.<br />
Nabudúce budeme pokraèova tam, kde sme pred týmto intermezzom <strong>sk</strong>onèili.<br />
Ukážeme si, ako dostaneme údaje z databázy <strong>na</strong> serveri SQL <strong>na</strong>pr. do Excelu. Že to nejde?<br />
Veï uvidíme...<br />
Miroslav Oravec<br />
152 PC REVUE 12/2001