• No results found

3.   Prostředky pro vývoj databázového IS

3.1.   Relační model dat

V dnešní době je nejpoužívanější relační model dat (RMD). Myšlenka RMD byla poprvé představena v roce 1970 Dr. Edgarem F. Coddem. Důvodem pro vytvoření nového modelu byla skutečnost, že ostatní databázové modely měly celou řadu závažných nedostatků, jako třeba velká redundance dat, nízká integrita dat. Jelikož byl F. Codd matematik, svůj nový model založil na dvou matematických disciplínách – teorie množin a predikátové logice prvního řádu.

Relačním modelem se nazývá, protože hlavním stavebním prvkem jsou relace a dále pak vztahy mezi nimi. Datové struktury se modelují pomocí schématu relace R(A1:D1,…,An:Dn). Index u A a D se nazývá arita R. Schéma relace nám udává jméno relace a množinu A atributů relace A = {A1:D1,…,An:Dn}. Každá relace je složena z uspořádaných n-tic = záznamů a ty se skládají z atributů. Každý atribut relace je tvořen dvojicí jméno atributu Ai a jeho doménou Di (množina hodnot). Záznam je identifikován v relaci pomocí unikátního atributu (primárního klíče) nebo kombinací atributů [3].

Důležitou definicí je definice schéma relační databáze. Schéma relační databáze je dvojice <R,IO>, kde R je množina schémat a IO je množina integritní omezení.

Relační databáze pro dané schéma je množina relací se schématem daným v R, které vyhovují všem integritním omezením z množiny IO [3].

Jedním z hlavních integritních omezení v relačním modelu dat je již zmiňovaný primární klíč. Další z důležitých IO se nazývá referenční integrita. Atribut, kterého se referenční integrita týká, se nazývá cizí klíč. Jde o atribut, který pomáhá realizovat vazbu dvou relací. Jeho hodnota musí být obsažena v primárním klíči svázané relace.

Na začátku této kapitoly bylo řečeno, že RMD je založen na matematických základech. Dr. Codd nahlížel na relace jako na množiny. Proto lze využít pro práci s relacemi množinové operace. Relační model nám poskytuje dva jazykové prostředky - relační kalkul a relační algebru. Relační algebra je množina operací, jejichž použití na relace vrací opět relaci. Minimální množinu operací tvoří:

• Sjednocení

• Kartézský součin

• Rozdíl

• Selekce

• Projekce

• Přejmenování

Jako dotazovací jazyk lze vhodně využít jazyk logiky. V RMD je definován n-ticový relační kalkul (NRK) srovnatelný s relační algebrou. NRK nahlíží na relace jako na n-tice (řádek tabulky). Tento jazyk využívá pro tvorbu dotazu predikátové symboly – jména relací ze schématu databáze a binární porovnávací predikáty (<, >, =, ≤, ≥, ≠).

Dále využívá logické spojky jako and, or, ┐, a také kvantifikátory . Později se objevil doménový relační kalkul DRK. DRK pracuje s hodnotami jednotlivých n-tic.

Oba jazyky jsou založeny na predikátové logice 1. řádu.

Výhody tohoto modelu jsou oproti hierarchickému a síťovému:

¾ obsahuje víceúrovňovou integritu (relace, atributy, vztahy)

¾ logická a fyzická nezávislost dat databázové aplikace

¾ konzistence a přesnost dat

¾ snadné získávání dat 3.1.1. Normální formy

Pro stanovení relací a vztahů je nutné podrobit naši vznikající databázi

normalizaci. Normalizace je sada pravidel sloužící pro transformaci modelu do fyzického uspořádání tabulek a relací v databázi. Po správném provedení procesu normalizace odstraníme redundantní data, omezíme složitosti (rozložíme složité relace) a zabráníme tzv. aktualizačním anomáliím (např. při smazání všech knih autora nesmíme přijít o data o autorovi). Z toho důvodu uvedeme v této podkapitole základní normální formy. Prostředky normalizace do požadované NF jsou algoritmy dekompozice a syntézy, o kterých budeme hovořit v další kapitole.

Před vlastním uvedením normálních forem je nezbytné definovat několik důležitých pojmů.

Klíč K schématu R(A) je minimální podmnožina atributů z A jejichž hodnoty budou jednoznačně určovat k-tice relace R*. R* se označuje konkrétní relace.[5]

Jednoznačná identifikace - každá n-tice relace je hodnotami atributů tvořících K jednoznačně identifikovatelná.

Množina K je minimální pokud z ní nelze odebrat žádný atribut, aniž by to narušilo identifikační vlastnost. Říkáme, že K je minimální množina. Přidáme-li atribut k množině K její identifikační vlastnost se zachová, ale nelze ji považovat za minimální množinu.

Nechť X, Y jsou atributy relace R. Pak atribut Y je funkčně závislý na atributu X, pokud v čase existuje ke každé hodnotě atributu Y nejvýše jedna hodnota atributu X.

Funkční závislost atributu Y na atributu X budeme zapisovat X Y.

Z funkční závislosti lze odvodit několik pravidel. Říká se jim Armstrongova pravidla [5]. Nechť X, Y, Z jsou podmnožinou A. Potom platí:

1. Y je podmnožinou X, pak X Y – triviální funkční závislost 2. jestliže X Y a Y Z, pak X Z – tranzitivní závislost 3. jestliže X Y a X Z, pak X YZ – kompozice 4. jestliže X YZ pak X Y a X Z – dekompozice

Atribut B je silně funkčně závislý na atributu X, když je na něm funkčně závislý a zároveň neexistuje žádná podmnožina X´ složeného atributu X taková, že Y funkčně závisí na X´ (podmnožina X).

Nechť X, Y, Z jsou atributy relace R. Pokud Y je funkčně závislý na X a Z je funkčně závislý na Y a zároveň platí, že X funkčně nezávisí na Y, pak Z je tranzitivně závislý na X.

Pro schéma relace R(A), kde A={C,D,X}, X=A-C-D, C->>D je multizávislost nad A, jestliže pro každou přípustnou relaci R* platí R*=R*[C,D]*R*[C,X]. Je-li X prázdná množina, nazývá se multizávislost C->>D triviální. Říkáme, že D multizávisí na C.[5]

1NF - každá komponenta (atribut) je atomická = dále nedělitelná. Prakticky to znamená odstranit vícesložkové a vícehodnotové atributy. Vícesložkový atribut obsahuje dvě, nebo více součástí – řeší se rozdělením atributu na více samostatných atributů. Vícehodnotový atribut je složený z několika hodnot toho samého typu – řeší se rozdělením jedné relace na dvě.

2NF - relace R je ve 2NF, když je v 1NF a když každý atribut, který nepatří k žádnému klíči relace R, silně funkčně závisí na každém klíči relace R. V řádku relace se nesmí objevit atribut, který by byl závislý pouze na části primárního klíče. Z toho vyplývá, že pokud má relace jako primární klíč jenom jeden atribut, je automaticky splněna 2NF. Splněním 3NF se automaticky relace dostává do 2NF, proto se většinou 2NF neuvádí.

3NF - každý neklíčový atribut schématu R není tranzitivně funkčně závislý na žádném klíči schématu. To znamená, že neklíčový atribut je závislý na primárním klíči přes jiný neklíčový atribut (neklíčové atributy jsou vzájemně nezávislé).[5].

BCNF - relace se nachází v BCNF, jestliže pro každou netriviální závislost X Y platí, že X obsahuje klíč schématu R. Tato definice nám v podstatě říká, že mezi kandidátními klíči nesmí být žádná funkční závislost. Pokud je schéma v BCNF je automaticky ve 3NF.[5]

4NF - schéma relace R(A) je ve 4NF, jestliže je v BCNF a multizávislost nad A je triviální. Tato definice se dá formulovat také takto: relace je ve 4NF pokud je v BCNF a všechny vícehodnotové závislosti jsou zároveň funkčními závislostmi z kandidátních klíčů.[5]

5NF - relace je v 5NF pokud je ve 4NF a není možné do ní přidat další atribut

nebo skupinu atributů aniž by se vlivem skrytých závislostí rozpadla na několik dílčích relací.

3.1.2. Metoda dekompozice a syntézy

Dekompozice je jedna z metod jak celkové relační schéma rozdělit na schémata, která jsou všechna v BCNF. Pro dekompozice relačních schémat databáze se využívá strategie shora-dolů. Algoritmus dekompozice je velmi jednoduchý, nahrazuje jedno relační schéma dvěma [5].

Dekompozice schématu relace R(A) znamená, rozložit je ve dvě schémata R1(X) a R2(Y), tak, že X Y = A. Odpovídající dekompozice instance schématu R* znamená provést R*[X] a R*[Y]. Pak R1=R*[X] a R2=R*[Y].[3]

Řekneme, že schéma relace je R(A) má bezeztrátovou dekompozici vzhledem k množinám atributů X a Y, jestliže R(A)=R1(X)*R2(Y), tj. každá relace R* dekomponovaná do projekcí R1* a R2* může být rekonstruovaná z těchto projekcí pomocí operace přirozené spojení. Bezztrátová dekompozice se obdrží na základě následující věty. [3]

Mějme schéma relace R(A, B, C), kde A, B, C jsou navzájem disjunktní množiny atributů, a platí funkční závislost B C. Rozložíme-li R na schémata R1(B, C) a R2 (A, B), je takto provedená dekompozice bezeztrátová. [3]

Algoritmus syntézy byl představen v roce 1976 doktorem Bernsteninem. Na syntézu lze nahlížet jako na jistý případ dekompozice, rozdíl je pouze ve strategii.

Syntéza využívá strategii zdola-nahoru. Schéma vytváříme syntézou přímo z funkčních závislostí. [5]

Před popsáním algoritmu syntézy je potřeb definovat několik pojmů.

Množina všech funkčních závislostí odvoditelných z F se nazývá uzávěr F a označuje se F+. Uzávěr F+ získáme použitím Armstrongových pravidel. Závislost, která má na pravé straně jeden atribut se nazývá elementární funkční závislost.[5]

Pokrytí množiny funkčních závislostí F je množina funkčních závislostí G, taková, že F+=G+. Je-li F´množina elementárních závislostí, která vznikne z F

dekompozicí jejích neelementárních závislostí, platí F´+ =F+. Vznikne tak pokrytí, které se nazývá kanonické.[5]

Nechť F je množina funkčních závislostí nad množinou atributů A schématu relace R(A). Potom postupujeme v následujících krocích:

1. Vytvoříme minimální pokrytí G

2. Závislosti z G se roztřídí do skupin tak, že v každé skupině jsou závislosti se stejnou levou stranou. Atributy závislostí každé skupiny tvoří schéma jedné relace, vzniklé syntézou (syntézované schéma). Atributy levé strany tvoří klíč syntézovaného schématu.

3. Pokud jsou atributy, které se nevyskytují v žádné funkční závislosti F musíme je umístit do schématu samostatné relace. Ovšem tak, aby byly součástí klíče původního schématu R. Matematicky se to vyjádří takto: Nechť X je množina atributů, které se nevyskytují v G. Pak k nim připojíme atributy Y takové, aby XY tvořily klíč schématu R. Výsledné schéma připojíme k celkovému schématu R.

4. Jsou-li v takto vzniklých schématech schémata s funkčně ekvivalentními klíči, je vhodné je sloučit v jedno. Vychází se z úvahy, že obě schémata zřejmě popisují jeden objekt. Sloučení ovšem může vést k eventuálním tranzitivitám, které je nutné odstranit.[5]

Absolvováním těchto kroků dostaneme výsledné schéma R={Ri(Ai, Fi) 1≤i≤n, pro n≥1}

Related documents