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:

    1. 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.
    2. Csak azokkal a funkcionális függőségekkel foglalkozunk, amelyekben a projektált séma attribútumai szerepelnek
  • Exponenciális algoritmus:

    1. Minden attribútumhalmazra számítsuk ki -t
    2. Asjuk hozzá a függőségeinkhez -t minden -ra -ből
    3. Dobjuk ki -t, ha is teljesül, mert az -ból minden esetben következik.
    4. Végül csak azokat a funkcionális függőségeket használjuk, amelyekben csak a projektált attribútumok szerepelnek.

Források