170 likes | 366 Views
Adatbázisok gyakorlat. 5. gyakorlat. Adatmodellezés III/IV – Funkcionális függés, redundancia. Normalizálás. Funkcionális függés. Legyen R(A 1 ,...,A n ) egy relációséma, és P, Q az {A 1 ,...,A n } attribútumhalmaz részhalmazai.
E N D
Adatbázisok gyakorlat 5. gyakorlat Adatmodellezés III/IV – Funkcionális függés, redundancia. Normalizálás
Funkcionális függés • Legyen R(A1,...,An) egy relációséma, és P, Q az {A1,...,An} attribútumhalmaz részhalmazai. • P-től funkcionálisan függ Q (jelölésben P → Q), ha bármely R feletti T tábla esetén valahányszor két sor megegyezik P-n, akkor megegyezik Q-n is,vagyis bármely ti ∈ T és tj ∈ T esetén ti(P) = tj(P) => ti(Q) = tj(Q) Pl.: {EHA} → {Név, Lakcím} Antal Gábor
Funkcionális függés • A funkcionális függés a séma tulajdonsága • Elnevezések: • A P → Q függést triviálisnak nevezzük, ha Q ⊆ P, ellenkező esetben nem triviális. • A P → Q függést teljesen nemtriviálisnak nevezzük, ha Q ∩ P = 0. • A gyakorlatban általában teljesen nemtriviális függőségeket adunk meg. Antal Gábor
Redundancia • Akkora beszélünk róla, ha valamilyen adato(ka)t többszörösen tárolunk el. • Előző példában pl. Név, Lakcím feleslegesen volt többször tárolva • Probléma: • Lakcímváltozás esetén mindenhol át kellene írni az új címre (hibák, felesleges erőforrás) • Tárigény növekedés • Adott séma dekompozíciójával megszüntethető (azaz több sémára bontjuk a sémát) Antal Gábor
Redundancia • Az adatok • összesítése • módosítása • törlése • tárolása esetén nem szerencsés a redundancia • Emiatt szigorúbb formai szabályokat kell bevezetnünk a relációsémákra: • 1NF – 2NF – 3NF ( – BCNF – 4NF) • Mindig célszerű, de nem mindig kötelező Antal Gábor
1. Normálforma • Egy relációséma 1NF-ben van, ha az attribútumok értéktartománya csak egyszerű (atomi) adatokból áll (nem tartalmaz például listát vagy struktúrát). • Mivel az 1NF feltétel teljesülését már a relációs modell definíciójánál kikötöttük, ezért az 1NF-re hozást lényegében az E-K modellről relációs modellre történő átalakításnál elvégeztük (lásd: előző óra/összetett és többértékű attribútumok leképezése). Antal Gábor
2. Normálforma • Teljes függés: Legyen R(A) relációséma, X,Y ⊆ A, és X→Y. Azt mondjuk, hogy X-től teljesen függ Y, ha X-ből bármely attribútumot elhagyva a függőség már nem teljesül, vagyis bármely X1 ⊂ X esetén X1→Y már nem igaz. • 2. Normálforma def.: Egy relációséma 2NF-ben van, ha minden másodlagos attribútum teljesen függ bármely kulcstól. Antal Gábor
2. Normálforma • Vagyis: Ha egy kulcs több attribútumból áll, és ezen attribútumok közül néhányat “letakarok”, majd pedig így nem tudok minden sort egyértelműen megkülönböztetni, sérül a 2NF. → Vannak másodlagos attribútumok, amik nem a teljes kulcstól, hanem annak csak egyes részeitől függenek. • A séma akkor nincs 2NF-ben, ha egy kulcs részhalmazától függ (egy vagy több) másodlagos attribútum Antal Gábor
Következmények • Ha minden kulcs egy attribútumból áll, akkor a séma 2NF-ben van. • Ha a sémában nincs másodlagos attribútum, akkor 2NF-ben van. Antal Gábor
2. Normálformára hozás • A sémát felbontjuk Heath tétele szerint, a normálformát sértő függőség mentén. • Ha valamely K kulcsra L ⊂ K és L→B (itt B legyen az összes L-től függő attribútum halmaza), akkor a sémát felbontjuk az L→B függőség szerint. Legyen C = A – (L U B), ekkor az R(A) sémát az R1(C U L) és R2(L U B) sémákkal helyettesítjük. Heath tétele alapján a felbontás hűséges. Antal Gábor
2. Normálformára hozás példa Tétel (árukód, számla.sorszám, árunév, egységár, mennyiség) • Függőségek: • f1: {számla.sorszám, árukód} → {egységár, mennyiség} • f2: {árukód} → {árunév} • Az árunév másodlagos attribútum nem teljesen függ a kulcstól → Nincs 2NF-ben • A gondot okozó függés (f2: {árukód} → {árunév}) mentén felbontjuk a sémát két másik sémára. Tétel (árukód, számla.sorszám, egységár, mennyiség) Áru (árukód, árunév) Antal Gábor
2. Normálformára hozás példa VIZSGATELJESÍTÉS(kurzuskód, kurzus_neve, dátum, jegy) • Függőségek: • f1: {kurzuskód} → {kurzus_neve} • f2: {kurzuskód, dátum} → {jegy} • A kurzus_neve másodlagos attribútum nem teljesen függ a kulcstól → Nincs 2NF-ben • A gondot okozó függés (f2: {kurzuskód} → {kurzus_neve}) mentén felbontjuk a sémát két másik sémára. Kurzus(kurzuskód, kurzus_neve) Teljesítés(jegy, dátum, kurzuskód) Antal Gábor
3. Normálforma • Tranzitív függés • Tranzitív függés: Legyen X, Z ⊆ A, és X → Z. Azt mondjuk, hogy X-től tranzitívan függ Z, ha van olyan Y ⊆ A, amelyre X → Y és Y → Z, de X nem függ Y-tól, és az Y → Z függés teljesen nemtriviális • 3.NF: Egy relációséma 3NF-ben van, ha minden másodlagos attribútuma közvetlenül függ bármely kulcstól. • Következmény: Ha a sémában nincs másodlagos attribútum, akkor 3NF-ben van. Másodlagos attribútum Másodlagos attribútum Kulcs Antal Gábor
3. Normálforma • A sémát felbontjuk a normálformát sértő függőség mentén • Ha másodlagos attribútumok egy B halmazára és valamely K kulcsra K→Y→B tranzitív függés fennáll, akkor a sémát felbontjuk Heath tétele szerint az Y→B függés mentén. Antal Gábor
3. Normálformára hozás • Számla (sorszám, dátum, vevőkód, vevőnév, vevőcím) • {sorszám} → {vevőkód} → {vevőnév, vevőcím} Számla (sorszám, dátum, vevőkód) Vevő (vevőkód, vevőnév, vevőcím) • Vagyis, felbontást végeztünk a {sorszám} → {vevőkód} → {vevőnév, vevőcím} függőség szerint. Antal Gábor
Feladat • Egy áramszolgáltató nyilvántartja az ügyfeleit, valamint azok fogyasztását, a számlázás végett. Hozza az ÁRAM relációsémát 1NF, 2NF, 3NF normálformára! Jelölje be minden egyes sémában a kulcsokat és a függéseket! ÁRAM( ünév, vóra_száma, szavatosság, mérés_kezd, mérés_vége, ücím), • ahol ünév, az ügyfél neve, mérés_kezd és mérés_vége a mérés kezdetén és végén leolvasott érték, ücím, az ügyfél lakcíme (város, utca, házszám, irsz). Antal Gábor
Megjegyzések • Feladatgyűjtemény: • pub/Adatbazisok/feladatok_v1.1.pdf • Adatbázisok. Előadás jegyzet, • www.inf.u-szeged.hu/~katona, • pub/Adatbázisok/ • Cser Lajos diái alapján Antal Gábor