50 likes | 136 Views
11. Relaatiotietokannan suunnittelualgoritmit ja lisäriippuvuudet. Tällä kurssilla käsitellään kirjan luvusta 11 ainoastaan algoritmi 11.1 häviöttömän liitoksen testaamiseksi dekompositiossa sekä lyhyesti myös neljäs ja viides normaalimuoto.
E N D
11. Relaatiotietokannan suunnittelualgoritmit ja lisäriippuvuudet • Tällä kurssilla käsitellään kirjan luvusta 11 ainoastaan algoritmi 11.1 häviöttömän liitoksen testaamiseksi dekompositiossa sekä lyhyesti myös neljäs ja viides normaalimuoto. 11.1.3 Dekomposition häviöttömän ( ei-additiivisen ) liitoksen ominaisuus • Suoritettaessa dekompositio D taululle R ositteisiin { R1, R2, ..., Rm } pitää varmistua, että taulun R tietosisältö pystytään tarkalleen palauttamaan eli rekonstruoimaan soveltamalla luonnollisia liitoksia dekompositiossa muodostuneiden uusien, kooltaan pienempien taulujen välille. • Formaalisesti määriteltynä dekompositio D säilyttää taululle R häviöttömän liitoksen ominaisuuden, mikäli mille tahansa relaation R lailliselle tilalle olla voimassa: * ( πR1 ( r ), ..., πRm ( r ) ) = r • Toteutuessaan häviöttömänliitoksen ominaisuus takaa, ettei dekompositio tuota valetuplia relaatioon R, kun sitä kootaan D:n osatauluista luonnollisilla liitoksilla.
Häviöttömän liitoksen toteutumista voidaan testata algoritmisesti. Yleiskäyttöisin testausalgoritmeista on seuraavassa esiteltävä algoritmi 11.1, joka ei ota kantaa siihen, moneenko osaan alkuperäinen taulu R hajoaa dekomposition D yhteydessä. Algoritmi 11.1: Häviöttömän liitoksen toteutumisen testaus Syötetiedot: Normalisoinnin kohteena oleva relaatio R, sille suoritettu dekompositio D = { R1, R2, ..., Rm } sekä funktionaalisen riippuvuuksien joukko F relaatiossa R 1. Perustetaan matriisi S, jossa on yhtä monta riviä kuin D:ssä on tauluja ja yhtä monta saraketta kuin relaatiossa R on attribuutteja. Sarakkeet nimetään R:n attribuuttien mukaisesti. 2. Alustetaan jokainen matriisin positio S[i, j] alkuarvolla bij. 3. Toista jokaista matriisin riviä i kohti Toista jokaista matriisin saraketta j kohti Jos dekomposition D relaatiossa Ri esiintyy attribuutti j, vaihdetaan paikan S[i, j] sisällöksi aj.
4. Toista niin pitkään, kunnes silmukan suorituksen aikana ei enää tapahdu muutoksia matriisissa S: Toista F:n jokaista funktionaalista riippuvuutta X --> Y kohti Toista jokaista S:n riviä kohti, joilla on sarakkeissa samat symbolit X:n attribuuteilla Vaihda Y:hyn kuuluvien attribuuttien symbolit vastaamaan toisiaan näillä riveillä. Jos jollain kyseisistä riveistä esiintyy symbolia a, kopioidaan se samalla kaikkien muiden tarkasteltavien rivien samaan sarakkeeseen. Ellei a:ta esiinny millään rivillä Y:n attribuuteilla, yhdenmukaistetaan sarakkeen arvot jonkin rivin bij-arvon mukaisesti kaikilla tutkittavilla riveillä. 5. Jos jokin matriisin riveistä sisältää ainoastaan a-symboleita, on normalisoinnin tulokseksi saatu dekompositio D toteuttanut häviöttömän liitoksen kriteerin, muulloin ei. • Tarkastellaan kirjan esimerkkiä 11.1. Todetaan, että esimerkissä 10.3 esitetyn EMP_PROJ-relaation dekompositio esimerkin 10.5 mukaisiin ositteisiin EMP_PROJ1 ja EMP_LOCS ei tuota häviötöntä liitosta, kun taas dekompositio tauluiksi EMP, PROJECT ja WORKS_ON tuottaa sellaisen.
11.3.3 Neljäs normaalimuoto • Neljäs normaalimuoto liittyy yksistään pääavaimen osasta riippuvien moniarvoisten riippuvuuksien purkamiseen. • Tällainen tilanne saattaa syntyä, jos samaan relaatiotauluun yritetään sijoittaa kaksi lukumääräsuhteeltaan 1:N olevaa liittymää. • Tarkastellaan kirjan esimerkkiä 11.5, jossa työntekijän tietoihin on yhdistetty tiedot projekteista, joissa hän työskentelee sekä tiedot hänen perheenjäsenistään. • Relaatio on kylläkin 3NF:n mukainen, mutta sen toteutus on kovin kömpelö, sillä pakottaa lisäämään jokaista työntekijää kohti kerralla useita tuplia, jos työntekijä alkaa työskennellä uudessa projektissa, tai hänen perheenjäsentensä lukumäärä kasvaa. • Tilanne purkautuu normalisoimalla relaatio 4NF:n mukaiseksi erottelemalla työntekijän projektit ja perheenjäsenet eri tauluihinsa. • Relaatio on 4NF:n mukainen tarkalleen silloin, kun kaikki siinä esiintyvät sekä funktionaaliset ja moniarvoiset riippuvuudet määräytyvät yksinomaan superavaimesta X -->> Y.
11.4 Liitosriippuvuudet ja viides normaalimuoto • Viidettä normaalimuotoa tarkastellaan lähinnä astetta 3 ja sitä korkeampaa astetta olevien relaatioiden yhteydessä. • Käytännössä normalisointia 5NF:ään sovelletaan erittäin harvoin. • Tarkastellaan esimerkkinä tavarantoimitusrelaatiota toimittajan, osan ja projektin välillä. Oletetaan, että jos toimittaja t pystyy toimittamaan osaa o, osaa o tarvitaan projektissa p, ja toimittaja t toimittaa jotain osaa projektille p, niin silloin projektille p ostetaan o ( ainakin ) toimittajalta t. • Tarkastellaan lopuksi kirjan esimerkkejä 11.4c ja 11.4d.