Adatbázis tervezés
A relációs adatmodell tervezése
-
Megtehetnénk, hogy valamennyi adatot egyetlen relációba tennénk:
- A felhasználó szempontjából kényelmes
- Sok "felesleges" adat van benne nem jó tárolási hatékonyság, az adatbázist ellentmondásossá teheti
-
valahogy a felhasználási eset fogalmait, kapcsolatait modellezni kell
-
De még így is előfordulhat, hogy nem lesz elég "ügyes" a modellezés még mindig lehetnek felesleges adatok konkrét előfordulásnál.
-
Redundancia:
- Adott egy reláció. Ha valamely attribútum értékét ki tudjuk az attribútumok értékeiből "következtetni" a relációt redundásnak nevezzük
Funkcionális függőségek
egy relációra vonatkozó megszorítás, miszerint ha két sor megegyezik összes attribútumán, attribútumain is megg kell, hogy egyezenek.
- Jelölés: attribútom halmazokat, attribútumokat jelöl.
- Jelölés: attribútum halmaz helyett -t írunk.
Jobboldalak szétvágása / dekompozíció
- akkor és csak akkor teljesül relációra, ha is teljesül -en
- Baloldalak szétvágására nincs általános szabály
- Általában funkcionális feltételek jobboldalán egyetlen attribútum szerepel majd
Relációk kulcsai
- szuperkulcs relációra, ha funkcionálisan meghatározza attribútumait.
- kulcs -en, ha szuperkulcs, de egyetlen valódi részhalmaza sem szuperkulcs.
Armstrong axiómák I
- (A1) Reflexivitás: ha , akkor . Az ilyen függőségeket triviális függőségnek nevezzük.
- (A2) Bővítés: ha teljesül, akkor tetszőleges -ra teljesül
- (A3) Tranzitivitás: ha és , akkor
Lezárás
- Adott funkcionális függőségeknek egy halmaza: bizonyos attribútumértékből esetleg milyen más attribútum értékeket kephatunk?
- Adott reláció és funkcionális függőségek egy halmaza mellett, lezártja: jelölésben az összes olyan attribútum halmaza, amira következik -ből
Algoritmus
- Kiindulás:
- Indukció: Olyan funkcionális függőségeket keresünk, melyeknek a baloldalára már benne van -ban. Ha ilyen, -t hozzáadjuk -hoz.
- Ha -hoz már nem lehet további attribútumot adni vége.
Ez az algoritmus helyes, azaz tényleg -t számítja ki.
Az összes következmény funkcionális függőség megtalálása
-
Motiváció: "normalizálás", melynek során egy relációsémát több sémára bonthatunk szét.
-
Alapötlet:
- Induljunk ki a megadott funkcionális függőségekből és keressük meg az összes nem triviális funkcionális függőséget, ami a megadott funkcionális függőségekből következik.
- Csak azokkal a funkcionális függőségekkel foglalkozunk, amelyekben a projektált séma attribútumai szerepelnek
-
Exponenciális algoritmus:
- Minden attribútumhalmazra számítsuk ki -t
- Asjuk hozzá a függőségeinkhez -t minden -ra -ből
- Dobjuk ki -t, ha is teljesül, mert az -ból minden esetben következik.
- Végül csak azokat a funkcionális függőségeket használjuk, amelyekben csak a projektált attribútumok szerepelnek.