Normalizacija Iztok Savnik, FAMNIT
Problem redundance Redundantnost je vzrok za vrsto problemov relacijskih podatkovnih baz: redundantni podatki, anomalije pri insert/delete/update. Integritetne omejitve -- funkcijske odvisnosti --uporabimo za ident. anomalij ter popravke shem. Osnovna tehnika: dekompozicija Npr. zamenjava ABCD z AB in BCD, ali ACD in ABD. Dekompozicijo je potrebno uporabljati previdno: Obstaja razlog za dekompozicijo relacije? Obstaja kakšen problem, ki ga lahko povzroči dekompozicija?
Funkcijske odvisnosti Funkcijska odvisnost X Y velja na relaciji R če, za vsako veljavno instanco r sheme R: t1 r, t2 r, π X (t1) = (t2) π (t1) = π Y Y (t2) za dani n-terici relacije r, če se ujemata v vrednosti X, potem se morata ujemati tudi v vrednosti Y. Morajo izvirati iz pomena aplikacije. Za dano relacijo r1 nad shemo R, lahko preverimo ali velja FO f, ne moremo pa reči da f velja nad R! K je kandidatni ključ R; pomeni, da K π X Seveda, za K ni potrebno, da je minimalna množica. R
Zgled Relacija za zaposlene plačane na uro Zap_Ura: Zap_Ura (dst, ime, delez, ocena, placilo, ure) Notacija: shemo relacije bomo označevali kar s seznamom atributov: DIZOPU To je množica atributov {D,I,Z,O,P,U}. Včasih se bomo sklicevali na atribute relacije kar z imenom relacije npr. Zap_Ure za DIZOPU Nekatere f.odvisnosti v relaciji Zap_Ura: dst je ključ: D DIZOPU ocena določa placilo: O P
Zgled Postavke Problemi zaradi O P: Anomalija pri popravljanju: Lahko popravimo P v eni sami n-terici DIZOPU? Anomalija pri vstavljanju: Kaj v primeru, da vstavimo novo n-terico in ne poznamo urne postavka za dano oceno? Anomalija pri brisanju: Če zbrišemo vse zapise ocene 5 potem izgubimo tudi podatek o urni postavki za to oceno! Zap_ura2 Bodo 2 manjši tabeli boljši?
Armstrongovi aksiomi Za dano množico FO, lahko izpeljemo dodatne FO: dst oid, oid delez implicira dst delez FO f je izpeljana iz množice FO F, če f velja vedno ko velja vsaka odvisnost iz F. F + = zaprtje F, je množica vseh FO, ki logično sledijo iz F. Armstrongovi aksiomi (X, Y, Z so množice atributov): Refleksivnost: Če X Y, potem Y X Dodajanje: Če X Y, potem XZ YZ za vsak Z Tranzitivnost: Če X Y in Y Z, potem X Z To so potrebna (uglašena) in zadostna (polna) pravila za sklepanje s FO!
Dodatna pravila za sklepanje Dodatna pravila, ki sledijo iz AA: Unija: Če X Y in X Z, potem X YZ Dekompozicija: Če X YZ, potem X Y in X Z Zgled: Pogodba(pid,bid,jid,oid,did,kol,vred) pid ID pogodbe bid ID dobavitelja jid ID projekta oid ID oddelka did ID produkta kol količina vred vrednost
Sklepanje Primer: Pogodba(pid,bid,jid,oid,did,kol,vred) P je ključ: P PBJODKV Projekt nabavi vsak produkt z eno pogodbo: JD P Oddelek kupi največ en produkt od dobavitelja: BO D JD P, P PBJODKV implicira JD PBJODKV BO D implicira BJO JD BJO JD, JD PBJODKV implicira BJO PBJODKV
Primeri sklepanja R=(A,B,C,G,H,I) F={ A B, A C, CG H, CG I, B H } 1. A H? (A B, B H, +A3 ) 2. CG HI? ( CG H, CG I, +A2, CG CGH, +A2, CGH HI, +A3, CG HI ) 3. AG I? (A C, +A2, AG CG, CG I, +A3, AG I )
Sklepanje Računanje zaprtja množice FO je potratno kompleksnost je eksponentna na št. atributov. Tipično, želimo preveriti ali dana FO X Y je v zaprtju množice FO F. Učinkovit algoritem: Zaprtje množice atributov X glede na F = X Množica atributov A tako, da je X A element. Linearen algoritem za izračun. X Preveri ali je Y v. F +
Sklepanje Problem članstva FO X A v F. Primer: F = {A B, B C, C D E } A E? Algoritmi: A E v? E v A+ F+? Rešitev: A+ = ABC A E ni v A+
Primer izračuna X+ F={AD E,AE C,AG E,BE AC,C BD,CEG A, DE BG,E G} (AC)+ = ABCDEG (BC)+ = BCD (D)+ = D
Normalne oblike Ali je restrukturiranje relacijskih baz potrebno? Relacija je v določeni normalni obliki: Izognemo se nekaterim problemom. Normalna oblika določa lastnosti shem. Normalne oblike povedo ali je potrebno relacijo restrukturirati. Vloga FO za določanje redundance (restrukturiranje). Relacija R = (A,B,C ) Ni FO: V tem primeru ni redundance. A B: Več n-teric ima lahko isto vrednost A in zaradi FO tudi isto vrednost atributa B.
Normalne oblike 1NO: vrednosti vseh atributov v R so enostavne 2NO: 1NO + vsi atributi so odvisni od ključa obstaja odvisnost X A kjer X vsebuje ključ in je A poljuben atribut iz R 3NO in BCNO
Boyce-Coddova normalna oblika (BCNO) R na kateri velja množica FO F je v BCNO, če za vse X A iz F+ velja bodisi: A X (trivialna FO), ali X vsebuje ključ R. Z drugimi besedami, R je v BCNO, če so vse netrivialne odvisnosti v bistvu odvisnosti od ključa. Nobena odvisnost v R ne more biti predvidena z uporabo FO. Če imamo dve n-terici, ki se ujemata v vrednosti X ne moremo sklepati glede vrednosti A na osnovi vrednosti v eni n-terici. Če je relacija v BCNO potem morajo takšni pari n-teric biti identični, saj je X ključ. X Y A x y1 a x y2?
Tretja normalna oblika (3NO) R na kateri velja množica. FO F je v 3NF, če za vse X A iz F+ velja bodisi: A X (trivialna FO), X vsebuje ključ R, ali A je del nekega ključa R. Minimalnost ključa je bistvena pri tretjem pogoju! Če je R v BCNO potem je očitno tudi v 3NO. Če je R v 3NO, potem je možna redundanca. 3NO je kompromis, ko ni možno doseči BCNO. Dekompozicija z breizgubnim stikom ter dekompozicija, ki ohranjajo FO, v relacije 3NO je vedno možna.
Kaj doseže 3NO? 3NO je kršena z X A, potem velja: X je podmnožica nekega ključa K. Pari (X, A) vsebujejo redundantne podatke. X ni prava podmnožica nekega ključa. Obstaja veriga FO K X A, kar pomeni da ne moremo povezovati vrednost X z vrednostjo K ne da bi povezovali vrednost A z vrednostjo X. Čeprav je relacija v 3NO, lahko nastanejo problemi. 3NO je kompromis relativno na BCNF.
Več-vrednostne odvisnosti Naj bo R relacijska shema ter X in Y podmnožica R Skupina atributov X je več-vrednostno povezana z drugo skupino atributov Y kot tudi z Z=R-XY Za vsako vrednost X ne obstaja asociacija med Y in Z Več-vrednostna odvisnost X Y velja, če za vsak par t 1 in t 2 iz r(r) velja: t 1 [X] = t 2 [X] potem obstaja t 3 tako da t 3 [XY] = t 1 [XY] in t 3 [XZ] = t 2 [XZ]
Več-vrednostne odvisnosti Predmet se izvaja vsak teden na določen dan Če se predmet izvaja en dan v tednu potem se izvaja tudi vse ostale tedne na isti dan Ni asociacije med dnevom in datumom t 1 [C] = t 2 [C] potem obstaja t 3 [CW] = t 1 [CW] in t 3 [CD] = t 2 [CD] Lahko bi en predmet izvajali tudi dva dneva v tednu
Četrta normalna oblika Prejšnjo relacjo lahko razcepimo na dve relaciji: Course-Weekday in Course-Datum S stikom dobimo originalno relacijo brez izgube informacije Četrta normalna oblika: Vsaka odvisnost X Y je talšna, da je X nek superključ X Y je pravzaprav funkcijska odvisnost Relacija ne vsebuje netrivialnih MVD 4NO je prava posplošitev BCNO Dekompozicija v 4NO
Dekompozicija relacijske sheme Dana je relacija R (A1... An). Dekompozicija R pomeni zamenjavo R z dvemi ali več relacijami za katere velja: Shema vsake relacije vsebuje podmnožico atributov R ter ni nobenih dodatnih atributov, in Vsak atribut R se pojavi vsaj enkrat v neki novi relaciji. Intuitivno dekompozicija R pomeni shranjevanje instanc relacijskih shem, ki so bile izbrane med dekompozicijo namesto z instanco R. Primer: shemo DIZOPU razcepimo v DIZOU in OP.
Primer dekompozicije Zaposleni( Z,I,T,O,M,U,P ) Z ITOMUP, MU P, P M 3NF Zaposleni( Z,I,T,O,M,U ) Naslovi(M,U,P) BCNO Zaposleni( Z,I,T,O,M,U ) Naslovi(M,U) Poste(P,M)
Problemi z dekompozicijo Trije potencialni problemi: Nekatera vprašanja postanejo bolj zahtevna. Vprašanja, ki potrebujejo stike. Včasih iz instanc shem po dekompoziciji ni mogoče restavrirati originalno relacijo. Informacija se izgubi pri dekompoziciji. Preverjanje nekaterih odvisnosti zahteva stik večih instanc nastalih pri dekompoziciji. Tradeoff: Problemi vs. Redundantnost.
Dekompozicija z brezizgubnim stikom Dekompozicija R v X in Y je brezizgubna za množico FO F, če velja za vsako instanco r, ki zadošča F: π X (r) π Y (r) = r Vedno je res, da r π X (r) π Y (r) V splošnem obratno ne velja. Če velja potem je dekompozicija breizgubna. Definicijo lahko razširimo na 3 ali več relacij. Pomembno je, da so dekompozicije, ki se uporabljajo za odpravo redundance, breizgubne! Izognemo se problemu 2.
Brezizgubni stik Dekompozicija R v X in Y je brezizgubna za F če in samo če zaprtje F vsebuje: X Y X, ali X Y Y Dekompozicija R v UV in R-V je brezizgubna, če velja odvisnost U V. A B C 1 2 3 4 5 6 7 2 8 A B C 1 2 3 4 5 6 7 2 8 1 2 8 7 2 3 A B 1 2 4 5 7 2 B C 2 3 5 6 2 8
Dekompozicije Obstajajo tudi dekompozicije: ki ohranjajo FO v BCNO v 3NO Algoritmi za dekompozicije. BCNO in 3NO oblika se pogosto uporablja za načrtovanje in optimizacijo podatkovnih baz.
Dekompozicija v BCNO Recimo, da R ni v BCNO X R in A R X A krši BCNO v R Razcepi R V R-A in XA Če R-A ali XA ni v BCNO ponovi prvi korak Lastnosti algoritma Vsaka op. razcepi relacijo alg. se zaključi Brezizgubni stik (ker velja vsaj odvisnost X A) Koraki alg. tvorijo drevo (rekonstrukcija)
BCNO in ohranitev odvisnosti Včasih ne obstaja dekompozicija v BCNO Primer: SBD SB D, D B Ne moremo razcepiti v BCNO in obdržati SB D
Dekompozicija v 3NO Prejšnji algoritem bi lahko uporabili tudi za dekompozicijo z brez-izgubnim stikom v 3NO Ta pristop ne zagotavlja ohranitev odvisnosti Enostavna razširitev algoritma omogoča dekompozicijo z brez-izgubnim stikom in z ohranitvijo odvisnosti
Minimalno pokritje množice FO Minimalno pokritje množice F je G za katero velja: Vsaka FO je oblike X A kjer A R Zaprtje F + = G + Če iz G odvzamemo kakšno odvisnost ali atribut iz odvisnosti potem F + G + Minimalno pokritje F je minimalno v naslednjem smislu: Vsaka odvisnost X A ima najmanjši možen X F ne vsebuje redundantne odvisnosti
Algoritem za iskanje min.pokritja 1)Daj FO v standardno obliko 2)Minimiziraj leve strani FO Preveri vsak atribut iz leve strani FO iz F; če ostane F + enak potem ga lahko odstranimo 3)Odstrani redundantne FO Preveri, če F + ostane enak v primeru, da odstranimo eno odvisnost Vrstni red procesiranja FO vpliva na rezultat! Lahko imamo množico rezultatov
Dekompozicija v 3NO + ohranitev odvisnosti F je minimalno pokritje R; R 1, R 2,...,R n je brez-izgubna dekompozicija R; R i so v 3NO; F i so projekcije F na R i Določi množico odvisnosti, ki niso bile ohranjene oz. niso v uniji F i Za vsako odvisnost X A iz množice kreiraj relacijo XA Odvisnosti so očitno ohranjene Optimizacija: združimo X A i v X A 1,A 2,...A k
Povzetek Obstajajo tudi dekompozicije: v BCNO, v 3NO in dekompozicija, ki ohranja FO. Če je relacija v BCNO, potem nima redundanc, ki jih je mogoče odkriti z FO. Zagotavljanje, da so relacije v BCNO je dobra hevristika. Če relacija ni v BCNO poskušamo narediti dekompozicijo v relacije, ki so v BCNO. Ohranitev FO. Breizgubna dekompozicija. Dekompozicija v 3NO. Dekompozicija včasih poslabša performanse poizvedb nad podatkovno bazo.