07.06.2015 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!