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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

P R O G R A M U J E M E<br />

Malé ve¾ké databázy II. / 6. èas<br />

Dobrá správa! Práve vyšla MySQL verzia 4.0!!! Teda zatia¾ iba v alfa release, preto treba<br />

s ostrým <strong>na</strong>sadením ešte poèka . A èo je v nej nové?<br />

l Optimalizácia MYSQL kódu prináša zvýšenie rýchlosti hlavne v oblasti: viacnásobné Inserty,<br />

vyh¾adávanie, vytváranie fulltextových indexov, ako aj COUNT(DISTINCT)<br />

l Transakcie a zamykanie tabuliek <strong>na</strong> úrovni riadkov sú implicitnou súèas ou databázového<br />

stroja (systém InnoDB)<br />

l MySQL podporuje zabezpeèenú komunikáciu medzi klientom a serverom <strong>na</strong> úrovni protokolu<br />

SSL, èo z<strong>na</strong>mená možnos umiestni DBS server aj mimo zabezpeèenej zóny (<strong>na</strong>príklad<br />

geograficky pred firewall)<br />

l Úpravy <strong>na</strong> triedenie nemeckých jazykových sád<br />

l Podpora autoinkrementácie `a<br />

la SYBASE (IDENTITY) a import databáz vrátane TRUNCA-<br />

TE TABLE (ako v Oracle)<br />

l Podpora Unionov (spojenie viacerých Selectov)<br />

Zároveò autori oz<strong>na</strong>mujú, že sa pripravuje verzia 4.1, ktorá bude obsahova aj subselekty,<br />

uložené procedúry a ïalšie zlepšenia. Túto verziu môžeme oèakáva až zaèiatkom<br />

budúceho roka. Vrá me sa k <strong>na</strong>šej teórii.<br />

ZOPAKOVANIE. Vieme, èo je entita, domé<strong>na</strong> a relácia. Vieme, že každá relácia<br />

obsahuje entitu, ktorá má konkrétne atribúty. Poznáme aj vz ahy medzi entitami, ich kardi<strong>na</strong>litu<br />

a parcialitu, vieme ich prípadne dekomponova . Dokážeme <strong>na</strong>kresli E – R diagram,<br />

z ktorého vytvoríme relaènú schému. Nakoniec definujeme tabu¾ky a príkazy SQL <strong>na</strong> prácu<br />

s nimi. Tentoraz si povieme nieèo o funkènej závislosti a vysvetlíme si normalizáciu relácií.<br />

FUNKÈNÁ ZÁVISLOS . Aby sme sa vyhli zložitej matematike, iba povieme, že<br />

funkèná závislos je tvrdenie o reálnom svete. Napríklad plat zamest<strong>na</strong>nca závisí od toho,<br />

akú funkciu vykonáva, teda plat závisí od funkcie, zapisujeme FUNKCIA – PLAT. Druhým<br />

príkladom je ce<strong>na</strong> cestovného, ktorá závisí od dåžky precestovanej trasy, teda DÅŽKA_TRASY<br />

– CENA_CESTOVNÉHO. Podobných príkladov by sme <strong>na</strong>šli v reálnom živote nieko¾ko.<br />

ŠTUDIJNÝ PRÍKLAD. V predošlej èasti sme si povedali nieèo o troch úrovniach<br />

návrhu – konceptuálnej, logickej a implementaènej. Aby sme si to trochu objasnili a doplnili<br />

o nové z<strong>na</strong>losti prakticky, vytvoríme si tento študijný príklad:<br />

V nemenovanej štátnej inštitúcii je archív hudobných cédeèiek. Sleè<strong>na</strong> referentka (ktorá<br />

je <strong>na</strong>ša kamarátka, lebo je ve¾mi fajn) sa v tom už nevyzná, a tak sme jej s¾úbili, že pre òu<br />

vytvoríme program, ktorý jej bude tieto cédeèká evidova . Keïže sa iba archivujú a sú iba<br />

po jednom kuse z každého, nie je potrebné rieši výpožièky, náklady ani niè podobné.<br />

Na prvý poh¾ad sa zdá táto úloha ve¾mi triviál<strong>na</strong>. Ale pozrime sa <strong>na</strong> to postupne.<br />

KONCEPTUÁLNA ÚROVEÒ. No, entitu by sme mali.<br />

Pomenujeme ju CD. A èo budeme o nej evidova ? Hádam názov,<br />

meno kapely, názov vydavate¾a a zoz<strong>na</strong>m pesnièiek. Takže vytvoríme<br />

reláciu s požadovanými atribútmi, tak ako je to <strong>na</strong> obr. 1.<br />

Táto relaèná schéma je jednoduchá, však? Ale ešte sme ne<strong>sk</strong>onèili.<br />

V <strong>sk</strong>utoènosti sme iba <strong>na</strong> zaèiatku. Máme síce pekný<br />

diagram pre náš projekt, ale cítime, že to ešte nie je to pravé orechové.<br />

Nastal èas zaobera sa normalizáciou.<br />

NORMÁLNE FORMY. Normalizácia je èinnos , ktorá<br />

Obr. 1<br />

vedie k dobre <strong>na</strong>vrhnutým tabu¾kám. Princípy normalizácie definoval<br />

už E. F. Codd a nie je to suchá teória. Boli overené praxou<br />

a za tie dlhé roky tvorby databázových aplikácií sa vypracovali urèité postupy tvorby tabuliek,<br />

ktoré sa <strong>na</strong>zývajú normálne formy. Najèastejšie sa používajú prvé tri normálne formy,<br />

ale existujú aj ïalšie, ako si spomenieme ne<strong>sk</strong>ôr.<br />

Vrá me sa k nášmu príkladu a pokraèujme cestou normalizácie. (Pre tých <strong>sk</strong>ôr <strong>na</strong>rodených:<br />

Prosím neasociova so 70. rokmi!)<br />

PRVÁ NORMÁLNA FORMA (1NF). O relácii (tabu¾ka) hovoríme, že je v prvej<br />

normálnej forme, ak sú všetky jej atribúty atomické, t. j. ïalej nedelite¾né. Inými slovami,<br />

každý atribút relácie môže ma iba jednu hodnotu, teda nemôže by jeho hodnotou<br />

ïalšia relácia.<br />

Pozrime sa ešte raz <strong>na</strong> <strong>na</strong>šu tabu¾ku. Vidíme, že nespåòa ani prvú normálnu formu, lebo<br />

atribút Pesnièky nedosahuje iba jednu hodnotu, ale môže ich ma viac – pod¾a poètu <strong>sk</strong>ladieb<br />

<strong>na</strong> konkrétnom cédeèku. Predstavme si, že by <strong>na</strong>ša kamarátka zrazu<br />

potrebovala zisti , <strong>na</strong> ktorom di<strong>sk</strong>u sa <strong>na</strong>chádza urèitá <strong>sk</strong>ladba. Keby<br />

sme ponechali tabu¾ku v tejto forme, mali by sme pri tvorbe selektu,<br />

ktorý by vyh¾adal konkrétnu <strong>sk</strong>ladbu, asi z<strong>na</strong>èné problémy.<br />

Tušíme, že atribút Pesnièky obsahuje ïalšie atribúty, ako názov<br />

alebo dåžka <strong>sk</strong>ladby. To z<strong>na</strong>mená, že by to mohla by samostatná<br />

entita s týmito dvoma atribútmi. Preto vykonáme rozloženie <strong>na</strong><br />

dve samostatné entity, ktoré budú tvori dve samostatné tabu¾ky<br />

(obr. è. 2).<br />

Obr. 2<br />

Teraz sú Nazov_Skladby a Dlzka_Skladby atribúty entity PESNICKA, takže dátový<br />

model je v prvej normálnej forme (1NF). Naneš astie ešte nemáme opísané vz ahy medzi<br />

oboma entitami. Na to potrebujeme zadefinova akýsi unikátny identifikátor.<br />

UNIKÁTNY IDENTIFIKÁTOR. Každá entita potrebuje ma svoj identifikátor.<br />

Môžeme ho <strong>na</strong>zva aj ID. Bude to nový atribút entity, ktorý bude ma tieto vlastnosti:<br />

l Bude unikátny v celej tabu¾ke, opisujúcej danú entitu. To z<strong>na</strong>mená, že sa v celej<br />

tabu¾ke nenájdu dva riadky, ktoré by mali rov<strong>na</strong>kú hodnotu tohto atribútu.<br />

l Jeho hodnota nesmie by prázd<strong>na</strong> (NULL) po celý èas existencie tabu¾ky.<br />

l Už raz zadaná hodnota tohto identifikátora sa nesmie v danom riadku tabu¾ky nikdy<br />

zmeni po dobu existencie tabu¾ky.<br />

My už v podstate tento<br />

identifikátor poznáme. Je<br />

ním nám dobre známy primárny<br />

k¾úè. Vra me sa k zaèiatkom<br />

seriálu a zopakujme<br />

si jeho podstatu. Základom<br />

úspechu je správne zvoli primárny<br />

k¾úè. Zaèiatoèníci robia<br />

èasto chybu v tom, že za<br />

Obr. 3<br />

primárny k¾úè vyberú <strong>na</strong>pr.<br />

priezvi<strong>sk</strong>o. My však vieme, že existujú ¾udia, ktorí majú rov<strong>na</strong>ké priezvi<strong>sk</strong>o. Existuje pravidlo,<br />

ktoré hovorí, že primárny k¾úè by mal by èo <strong>na</strong>jmenší. Preto je ve¾mi vhodné zvoli<br />

ako primárny k¾úè èíslo.<br />

Primárny k¾úè môže by zložený aj z viacerých atribútov – to závisí od konkrétnej aplikácie.<br />

Upravíme diagramy tak, že do každej entity vložíme identifikátor, ktorý bude primárnym<br />

k¾úèom tabu¾ky (obr. è. 3). Primárne k¾úèe budeme oz<strong>na</strong>èova s príponou ID a<br />

v diagrame budú zvýraznené podèiarknutím.<br />

Aby bola schéma<br />

úplná, musíme <strong>na</strong>definova<br />

relaèné<br />

vz ahy. Ak to chceme<br />

vyjadri slovne,<br />

môžeme poveda ,<br />

že <strong>na</strong> jednom cédeèku<br />

môže by jed<strong>na</strong><br />

alebo viac pesni-<br />

Obr. 4<br />

èiek. Z teórie o vz a-<br />

hoch je zrejmé, že v <strong>na</strong>šom prípade ide o vz ah 1: n. Tento vz ah zakreslíme pomocou vidlièky,<br />

tak ako je to <strong>na</strong> obr. è. 4. Prvá normál<strong>na</strong> forma je kompletná.<br />

DRUHÁ NORMÁLNA FORMA (2NF). Tabu¾ka je v druhej normálnej forme,<br />

ak je v prvej normálnej forme a <strong>na</strong>vyše každý atribút, ktorý nie je primárnym k¾úèom, je<br />

od primárneho k¾úèa úplne závislý.<br />

Obr. 5<br />

Obr. 6<br />

Pozrime sa <strong>na</strong> náš dátový model. V tabu¾ke CD je atribút Kapela, ktorý urèite nie je závislý<br />

od primárneho k¾úèa CD_ID, lebo sa môže <strong>na</strong>chádza <strong>na</strong> rôznych di<strong>sk</strong>och. Èo vlastne<br />

atribút Kapela opisuje? Opisuje hudobnú <strong>sk</strong>upinu alebo všeobecnejšie umelca. A umelec<br />

je už samostatná entita so svojimi atribútmi. Preto vykonáme znova dekompozíciu<br />

schémy, kde vyjmeme atribút Kapela a <strong>na</strong>hradíme ho novou entitou s atribútmi<br />

Umelec_ID ako primárnym k¾úèom a Meno_Umelca ako ïalším atribútom (obr. è. 5).<br />

Aké budú vz ahy medzi entitami CD, PESNICKA a UMELEC? Pre jednoduchos predpokladajme,<br />

že jeden umelec môže <strong>na</strong>spieva viac pesnièiek, ale každá pesnièka je <strong>na</strong>spievaná<br />

iba jedným umelcom. V takom prípade ide o vz ah 1: n, ktorý zadefinujeme „vidlièkou“<br />

(obr. è. 6).<br />

12/2001 PC REVUE 151

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

Saved successfully!

Ooh no, something went wrong!