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
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