Felhasználói eszközök

Eszközök a webhelyen


ab:rel-modell

3. Relációs adatmodellek

A relációs adatmodell a matematikai alapját a reláció jelenti. A reláció kétdimenziós táblázatos adathalmazt jelent. Ez alapján egy komplex adatbázis-kezelő nyelv került kifejlesztésre, amelyet SQL-nek (Structured Query Language=Struktúrált Lekérdező Nyelv) neveztek el. Ennek segítségével nemcsak lekérdezéseket, hanem különböző adatbázis kezelési műveleteket is lehet végrehajtani. Az SQL nyelv be van illesztve programozási nyelvekbe, fejlesztő környezetbe, és egyszerű, hatékony, jól használható eszközt jelent az adatbázis-kezelési feladatok megoldására.

A relációs modellnek jól meghatározott elmélete van, amelynek alapjait E. F. Codd dolgozta ki a 60-es évek végén – a 70-es évek elején. Az elmélet bázisát a halmazelméletből veszi, magukat a táblában tárolt adatokat halmazként definiálja, és így az adatokon végzett műveleteket is halmazműveleteknek felelnek meg.

3.1 Relációs adatmodell tulajdonságai

A táblázatokra vonatkozóan több alapkövetelményeket szoktak megkövetelni:

  • Minden egyes táblázathoz tartozik egy azonosító
  • A sorok és oszlopok metszetében található adatok egyértékűek (atomiak). Adatcsoportokat, tömböket nem tartalmazhatnak.
  • Az oszlopokban található adatok azonos jellegűek, és egy előre definiált halmazból származnak
  • Minden egyes oszlopnak egyedi neve van
  • A táblázat minden sorában ugyanannyi adat található
  • A táblázatban nem lehet két azonos sor
  • A sorok és az oszlopok sorrendje nem lényeges

A reláció fogálmát a következő képen lehet megfogalmazni.

Definíció. Adva van n attribútum A1 ,A2 , …, An és azok dóménje (értéktartománya) D1 , D2 , …, Dn . Akkor a R(A1 ,A2 , …, An ) relációra úgy tekinthetünk, mint (< d1 , d2 , …, dn >) rendezett halmazára, ahol dk ∈ Dk (k=1,2,…,n).

Ez azt jelenti, hogy a relációkra igaz a következő tulajdonság: R(A1 ,A2 , …, An ) ⊂ (D1 x D2 x … x Dn ),

ahol D1 x D2 x … x Dn – Descartes-szorzat.

Egy adatbázis több összekapcsolt relációból áll. Egy relációnak egy táblázat felel meg. Ha a relációnak m eleme ( sorok) van és az <d1 , d2 , …, dn> elemek a D1, D2, … , Dn attribútumok értékei, akkor a relációnak n·m tábla felel meg.

A tábla sorait előfordulásoknak nevezzük. Az előfordulások rekordoknak felelnek meg. A reláció számosságát az összes előfordulás száma adja meg. A reláció oszlopait attribútumoknak nevezzük. Minden egyes attribútumhoz tartozik egy tartomány. Ez az attribútumhoz tartozó halmaz, amely meghatározza, hogy az adott oszlop milyen értékeket tartalmazhat. Ezeket a halmazokat attribútum-halmazoknak nevezik.

A reláció nevét és a reláció attribútumainak halmazát együtt relációsémának nevezzük.

Például, a Dolgozó reláció sémája a következőképpen adható meg:

Dolgozó(A dolgozó törzsszáma, A dolgozó neve, A dolgozó születési helye, A dolgozó születési ideje)

Annak ellenére, hogy az attribútumok halmazt alkotnak (és az elemeinek sorrendje lényegtelen), amikor meghatározzuk a relációsémát, akkor a lista felsorolásával egy sorrendet is rögzítünk. Ilyen esetben az ABKR általában ezt a sorrendet szokta alkalmazni a táblázat megjelenítésekor is.

Egy adatbázis relációsémáinak összességét relációs adatbázissémának nevezzük.

A reláció attribútumainak száma határozza meg a reláció fokát. Az AB két típusú relációkat tartalmazhat, amelyek adatbázis-kezelési szempontból lényegesek. Az alap reláció olyan reláció, amely az adatbázisban a többi relációtól függetlenül létezik. A származtatott reláció (nézet) más relációkból való konstruálással keletkezik.

Például az adatbázisban tárolt Dolgozó relációból származtathatunk egy új relációt Dolgozónő névvel, amely a Dolgozó relációból csak a nő-dolgozókat fogja tartalmazni.

A relációs modell egyik fontos alaptulajdonsága, hogy a táblázat sorai és oszlopai metszetében található adatok elemiek, ami azt jelenti, hogy egyszerűbb elemekre nem bonthatók fel. Az attribútum halmaz elemeinek eleve egyszerű típusúaknak kell lenniük, hogy ezt a tulajdonságot biztosítani lehessen. De előfordulhat, hogy egy előfordulásnál valamely attribútumnak több különböző értéke van, ami nem elemi adat. Az egyetlen lehetőség, hogy azt elemi adatokká átalakítsuk, az adott előfordulás összes többi értékét annyiszor megsokszorozzuk, amennyi különböző érték tartozik a többértékű attribútumhoz. Így néhány új előfordulást konstruálunk, amelyek az eredetitől csak egyetlen attribútum értékeiben különböznek. De ez azt is jelenti, hogy a táblánkban (és ez által az AB-ban) növekszik a redundancia. Ennek ellenére a modell egyszerűsége, elméleti megalapozottsága, valamint a relációs adatbázisok egyszerű feldolgozhatósága miatt azok ma a legelterjedtebb a gyakorlatban. A redundancia csökkentésére bizonyos elméleti eljárást is kifejlesztettek.

3.2 Kapcsolatok a relációs modellben

A kapcsolatokat maguk a táblázatok tartalmazzák. Az alábbiakban ennek a megvalósítási technikáit mutatjuk be. Háromféle kapcsolat típust alkalmazhatunk:

  • egy-egy
  • egy-sok
  • sok-sok

A relációs modellben mindegyiket különbözőképpen lehet megvalósítani.

Egy-egy kapcsolat. Ilyenkor csupán szükséges, hogy a kapcsolatban részt vevő két egyed közül az egyiket reprezentáló tulajdonságok közül kiválasszunk egy kulcsot. Ezután a másik egyedhez tartozó táblázatban egy olyan attribútumot kell definiálnunk, amelynek a lehetséges értékei az előzőleg kiválasztott kulcsmező értékeit vehetik fel.

Egy-sok kapcsolat esetében hasonlóan járhatunk el. Ugyanis, ha annak az egyednek a szempontjából vizsgáljuk a kapcsolatot, amelynek előfordulásaihoz egy másik egyed előfordulás tartozik, pontosan ugyanazt a helyzetet kapjuk, mint az első esetben. Ebben az esetben tehát csak arra kell ügyelnünk, hogy a fenti technika egy irányban működik.

Példa. Nézzük most meg, hogyan nézhetnek ki a Dolgozó és a Kifizetés egyedek táblázatai, amennyiben a köztük lévő kapcsolatot is reprezentáljuk:

Dolgozó

A dolgozó törzsszámaA dolgozó NeveA dolgozó születési helyeA dolgozó születési ideje
T234578Kiss IstvánEger1968. 12. 11.
T456734Nagy JózsefBudapest1972. 01. 30.
T429877Kovács JánosSzeged1967. 05. 12.

Kifizetés

A kifizetés azonosítójaA kifizetés dátumaA kifizetett nettó összegA dolgozó törzsszáma
K23756 1999. 10. 01.120000 T234578
K23757 1999. 11. 01.89000 T234578
K237581999. 10. 01.167000 T429877

Sok-sok kapcsolat a legbonyolultabb kapcsolatfajta. Sajnos ezt már nem lehet olyan egyszerű módon megadni, mint az egy-egy és egy-sok kapcsolatokat. Mivel mindkét egyed irányából nézve több előfordulás tartozhat egy előforduláshoz, egyetlen lehetőség, hogy az egymáshoz kapcsolódó előfordulásokat külön összepárosítjuk. Erre alkalmas lehet egy speciális reláció (kapcsolótábla), amely két attribútumból áll. Az egyik attribútum az egyik egyed, a másik a másik egyed egy kulcsának lehetséges értékeit veheti fel értékül. Az összetartozó előfordulásokat a hozzájuk tartozó kulcsértékeknek a kapcsolótáblában való összepárosításával adjuk meg.

Példa. Vizsgáljuk most meg a Dolgozó és a Téma relációk kapcsolatának ábrázolását a relációs modellben. Segítségül egy Dolgozótéma nevű új táblát definiálunk, amely a kapcsolat megadására való. Feltételezzük, hogy a Dolgozó tábla ugyanaz, mint az előző példánál.

Téma

A téma azonosítójaA munka kezdeteBefejezési határidőTémavezető neve
T251998. 06. 01.1999. 12. 31.Nagy Ádám
T261999. 01. 01.2000. 06. 01.Mekk Elek
T271999. 03. 01.2002. 12. 31.Remek Jenő

Dolgozótéma

A téma azonosítójaA dolgozó törzsszáma
T25T234578
T25T456734
T25T429877
T26T456734
T26T429877
T27T456734

3.3 Funkcionális függöségek

A relációs modell egyik legfontosabb fogalma a funkcionális függöség. Segítségével a táblázat attribútumai között összefüggéseket vizsgálhatunk. Egy funkcionális függöség azt jelenti, hogy a relációban valamely attribútumokon vett értékek meghatározzák más attribútumok értékeit. Segítségével csökkenthető a modell redundanciája, ugyanis a funkcionális függöségben lévő attribútumokat külön relációkba szervezhetjük, anélkül hogy ezzel bármilyen információt elveszítenénk.

Definíció. Legyen R(A1 ,A2 , …, An ) egy relációséma, és P, Q az {A1 ,A2 , …, 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 ha ti (P) = tj (P) akkor ti (Q) = tj (Q).

Példa. Tekintsük most ismét a Dolgozótéma relációt, és tegyük fel, hogy ezúttal a következő módon terveztük meg:

Dolgozótéma

A dolgozó törzsszámaTéma azonosítójaTémavezető neve
T234578T25Nagy Ádám
T456734T25Nagy Ádám
T429877T25Nagy Ádám
T456734T26Mekk Elek
T429877T26Mekk Elek
T429877T27Remek Jenő

Láthatjuk, hogy ha a Téma azonosítója oszlop értékei megegyeznek, akkor a Témavezető oszlop értékei is megegyeznek. Így a fenti definíció alapján teljesül a

Téma azonosítója → Témavezető funkcionális függöség. Azt is könnyen felfedezhetjük, hogy a függöség egyfajta redundanciát jelent, ugyanis felesleges háromszor leírni, hogy a T25 azonosítóval rendelkező dolgozónak a projekt vezetője Nagy Ádám.

Gyakorlati szempontból fontos az a kérdés, hogy, ha ismerünk bizonyos függőségeket, akkor ezekből kikövetkeztethetünk-e újabb függőségeket. Amennyiben igen, akkor a következtetési szabály alkalmazásával egy függőséghalmazból újabb függőségeket vezethetünk le.

3.4 Armstrong-axiómák

Az Armstrong-axiómák segítségével a már meglévő függőségekből új függőségek származtathatók. Az Armstrong-axiómák a következők:

  • Tranzitivitás
  • Reflexivitás
  • Egyesítési szabály
  • Szétvághatósági szabály
  • Bővítési szabály

Tranzitivitás. Ha X→Y és Y→Z, akkor X→Z. Az egyik legegyszerűbb következtetési szabály azt mondja ki, hogy ha az attribútum-halmazokra teljesülnek az Ha X→Y és Y→Z és függőségek, akkor teljesül a X→Z függőség is. Ezt a tulajdonságot tranzitivitásnak nevezzük.

Reflexivitás (triviális függőség) Ha Y ⊆ X, akkor X→Y. Nyilvánvalóan igaz az a szabály is, hogy a halmaz minden részhalmazára is teljesül az függőség. Ezt nevezzük reflexivitásnak vagy triviális függőségnek.

A következő két szabály szorosan kapcsolódik egymáshoz, mivel lényegében egymás ellentétjei.

Egyesítési szabály azt jelenti, hogy ha teljesül egy és egy függőség, akkor teljesül az függőség is. Szavakkal kifejezve: azonos bal oldalú függőségek jobb oldalán szereplő attribútum-halmazait egyesíthetjük.

Szétvághatósági szabály. A funkcionális függőség jobb oldalán szereplő attribútum-halmazra teljesül az, hogy annak minden részhalmaza is függ a baloldaltól. Vagyis ha A → B és C⊂B, akkor A→C is teljesül, és ezt nevezzük szétvághatósági szabálynak.

Bővítési szabály. Ha X→Y, akkor X U Z → Y U Z. A bővítési szabály azt mondja ki, hogy ha egy funkcionális függöség mindkét oldalát ugyanazzal az attribútum-halmazzal bővítjük, akkor a függöség továbbra is megmarad a két halmaz között.

3.5 Kulcsok a relációs modellben

A relációs modellben külön definíciót adhatunk a kulcsra, ami megfelel a ismert kulcs fogalmának, de a relációs modellben pontos matematikai jellegű definíció is adható.

Definíció.

Legyen {A1 ,A2 , …, An} az R reláció attribútum-halmaza. A K⊂A halmazt a reláció kulcsának nevezzük, ha

1). a K attribútumain felvett értékek egyértelműen meghatározzák a reláció elemeit K→A, és

2). K minimális, ami azt jelenti, hogy K-nak nincs olyan valódi részhalmaza, amelyre ugyanez teljesül.

Az olyan attribútum-halmazt, amelyre csak az (1) tulajdonság teljesül szuperkulcsnak nevezzük.

A relációs modell elméletében a kulcsok között nem szokás különbséget tenni, de a gyakorlatban szükséges lehet meghatározni egy elsődleges kulcsot, amely főleg az ABKR számára fontos a rekordok fizikai elhelyezéséhez.

Meg szoktuk különböztetni azt az esetet, amikor a kulcs egy attribútumból áll. Az ilyen jellegű kulcsokat egyszerű kulcsoknak nevezzük. Ellenkező esetben összetett kulcsokról beszélünk.

Egy relációnak több kulcsa is lehet, és minden egyes attribútumról eldönthető hogy tartozik-e kulcshoz vagy sem. Elsődleges attribútumoknak nevezzük azokat az attribútumokat, amelyek a kulcshoz tartoznak, másodlagos attribútumok azok, amelyek nem tartoznak a kulcshoz.

A definíció alapján a kulcshoz tartozó attribútumok értéksorozata a reláció csak egyetlen sorában fordulhat elő. Ugyanis mivel a kulcs a teljes attribútum halmazon felvett értékeket meghatározza, ezért, ha lenne két olyan sor, amelyekben a kulcshoz tartozó attribútumokon azonos értékek vannak, akkor két azonos sornak kellene lenni a relációban, ami nem lehetséges.

Az olyan attribútumokat, amelyek egy másik relációban kulcsot alkotnak, külső (idegen) kulcsnak nevezünk. A külső kulcsoknak a reláció közti kapcsolatoknál van jelentősége. Mint láttuk, egy kapcsolatot a relációs modellben úgy lehet reprezentálni, hogy az egyik kapcsolódó táblázatban, vagy esetleg külön relációban külső kulcsot, vagy kulcsokat alkalmazunk. Külső kulcsok különböző formában jelenhetnek meg a relációs modellben. Előfordulhat az, hogy egy kulcs saját táblájában szerepel külső kulcsként. Például elképzelhető hogy a bérszámfejtő rendszerben tárolni kívánjuk, hogy az egyes dolgozóknak ki a főnöke. Ebben az esetben a Dolgozó tábla a következő lehet:

Dolgozó(A dolgozó törzsszáma, A dolgozó neve, A dolgozó születési helye, A dolgozó születési ideje, A vezető törzsszáma)

A vezető törzsszáma attribútum tulajdonképpen külső kulcs, mivel adatait a A dolgozó törzsszáma kulcs értékei közül veszi fel, azonban az a speciális helyzet áll elő, hogy a külső kulcs ugyanahhoz a táblázathoz tartozó kulcs. Ez egyfajta rekurzív kapcsolatot jelent. Az is előfordulhat, hogy egy táblában egy külső kulcs többféle szerepben található meg.

Például ha a Dolgozótéma(A dolgozó azonosítója, Téma azonosítója, Témavezető neve) relációnál a Témavezető neve attribútum helyett a Témavezető törzsszámát használjuk (amennyiben kapcsolatot kívánunk létesíteni ez az attribútum szerint a Dolgozó táblával, akkor ez mindenképpen szükséges), akkor ebben a relációban két idegen kulcs lesz.

3.6 Relációk normalizálása

A tervezés során olyan adatstruktúrákat alakítsunk ki, amelyek segítik a hatékony adatkezelést. Fontos, hogy egy-egy táblába csak a valóban logikailag összetartozó adatok kerüljenek, és hogy minél kevesebb ismétlődés legyen az adatok között.

A relációs modellben külön eljárást fejlesztettek ki arra vonatkozóan, hogy az adatok megfelelő strukturálását, a redundancia csökkentését elősegítsék. Ez az eljárás (módszer) a normalizálás.

Bevezettek első, második, harmadik, Boyce-Codd, negyedik, ötödik normálformát. Közülük a legnagyobb jelentősége a harmadik és a Boyce-Codd normálformáknak van, mivel ezek azok, amelyek a tényleges gyakorlati problémákat is lefedik, és nem csak nagyon speciális esetben fordulnak elő. Az első és második normálformák eléggé kezdetlegesek, jelentőségük inkább csak történeti, mivel az előbb említett két fejlettebb normálforma ezeket is tartalmazza. A negyedik és ötödik normálformák inkább elméleti jelentőségűek.

A legfontosabb adatkezelési műveletek a beszúrás, módosítás és törlés. Nézzük, milyen problémák merülhetnek fel ezeknél a műveleteknél.

Adatkezelési műveletek anomáliái A következő műveleti anomáliákat kell figyelembe venni:

  • beszúrási anomália
  • módosítási anomália
  • törlési anomália

Abban az esetben beszélünk beszúrási anomáliáról, amikor egy adatrekord beszúrása egy másik, hozzá logikailag nem kapcsolódó adatcsoport beszúrását megköveteli.

Például ha a Dolgozótéma relációt az alábbiak szerint terveztük meg:

Dolgozótéma(A dolgozó törzsszáma, A dolgozó neve, A dolgozó születési helye, A dolgozó születési ideje, A vezető törzsszáma, Téma azonosítója, Témavezető)

Akkor ebben az esetben a kulcs a A dolgozó törzsszáma, Téma azonosítója pár lesz. A korábban látottak szerint egyedül egyik sem alkothat kulcsot, ha így tervezzük a táblát. Ebben az esetben viszont csak akkor tudjuk egy új dolgozó adatait felvinni, ha az rögtön elkezd dolgozni egy témán, és meg tudjuk adni a téma azonosítóját is. Ez azonban nem biztos, hogy mindig teljesül, ugyanis előfordulhat, hogy a dolgozónak nem kell önálló témán dolgoznia. Láthatjuk, hogy a problémát az okozza, hogy egymástól logikailag különálló dolgokat : a dolgozó és a témák adatait, egy táblázatban helyeztük el, és egy bizonyos adatcsoport bevitele egy másik, tőle logikailag különálló adatcsoport bevitelét kívánja meg. Ebben az esetben fennáll a beszúrási anomália, amelynek a kiküszöbölésére az adatbázis tervét úgy kell átalakítani, hogy ilyen eset ne fordulhasson elő.

A következő problémát a már felvitt adatok módosítása okozhatja. Abban az esetben, ha egy relációban egy adat módosítása több helyen történő módosítást igényel, akkor módosítási anomáliáról beszélünk. Tekintsük ismét a fenti példát. Tegyük fel, hogy a próbaidőt sikeresen teljesítő dolgozó hirtelen több témán történő munkára kap megbízást. A relációs modell sajátossága szerint minden egyes témára meg kell ismételnünk a dolgozó adatait. Tegyük fel, hogy ezek után a dolgozó nevet változtat, és szeretnénk végrehajtani a módosítást az adattáblában. Ekkor minden egyes olyan rekordnál módosítást kell alkalmazni, ahol az adott dolgozó adatai szerepelnek. Annyi módosításra van szükség, ahány témán a dolgozó dolgozik vagy dolgozott. A nagyobb probléma akkor merül fel, amikor 100 ezer vagy milliós nagyságú tétel van. Ekkora mennyiségű adat módosítása már egy gyors számítógép számára is időigényes lehet.

A harmadik anomália az adatok törlésekor fordulhat elő. Amennyiben egy adat törlésével a másik, hozzá logikailag nem kapcsolódó adatcsoportot is elveszítünk, törlési anomáliáról beszélünk. A törlési anomália bizonyos értelemben a beszúrási anomália fordítottja. Tegyük fel, hogy egy témán egyetlen dolgozó dolgozott és azt sikeresen befejezte. Ezután elhagyta a céget. Szükségessé válik adatainak törlése a táblából. Ez azonban az általa elvégzett téma jellemzőinek törlését is jelenteni fogja. Pedig erre még később szükség lehet, például egy év végi zárójelentésben, ahol szerepeltetni kell az összes elvégzett munkát.

Az anomáliákat mindig az okozta, hogy logikailag nem összetartozó adatokat szerveztünk egy struktúrába. Nagyon lényeges, hogy a tervezés során ezt a hibát ne kövessük el. Ezért el kell választanunk egymástól a logikailag összetartozó (összefüggő) adatokat. Ebben fontos szerepe van a funkcionális függésnek, ugyanis ennek segítségével tudjuk kiválogatni, hogy mik azok az attribútumok, amelyek ilyen csoportokat alkotnak. Ezeket aztán különválasztjuk, és önálló táblákat alkotunk. Így csökkenthetjük, illetve megszüntethetjük a fenti problémákat.

3.7 Normálformák

Első normálforma

A relációk felbontásával különböző normálformájú relációkat kapunk. A legegyszerűbb az első normálforma. Azt mondjuk, hogy a reláció első normálformában van, ha a relációban minden érték elemi, vagyis a reláció nem tartalmaz adatcsoportot. Ezt ugyanis már a relációs modellbeli táblázat alapvető tulajdonságai között is megköveteltük. Ha az alaphalmazok csak elemi adatokat tartalmaznak, akkor a megadott reláció rögtön első normálformájú is lesz. Csoportos adatok esetén azonban lényeges, hogy a keletkezett táblázatot első normálformájúvá alakítsuk. Például ha a bérszámfejtő rendszerünkben a dolgozók szakképzettségét is nyilvántartjuk, akkor kérdéses lehet, hogyan oldjuk meg azt a problémát, amikor egy dolgozónak többféle szakképzettsége van. Ha ezeket a többszörös értékeket hagyományos módon felírjuk egy táblázatba, akkor a kapott táblázat nem első normálformájú reláció. Itt a sorok megismétlésével járó technikát alkalmazhatjuk.

Megjegyezzük, hogy a legújabb adatmodelleknél (ilyen az objektumorientált modellek) lehetőség van az összetett adatstruktúrák alkalmazására. A csoportos adatok kezelésére a objektumorientált modellben a következő adatstruktúrákat alkalmazhatunk: halmaz, lista, tömb, struktúra, múlti-halmaz.

Tekintsük a következő táblázatot:

Dolgozó

A dolgozó törzsszámaA dolgozó neveA dolgozó születési helyeA dolgozó Születési idejeSzakképzettség
T234578Kiss IstvánEger1968.12.11.Közgazdász
T456734Nagy JózsefBudapest1972.01.30.Programozó matematikus, közgazdász
T429877Kovács JánosSzeged1967.05.12.Programtervező matematikus, számítástechnika tanár

Ezt a táblázatot alakíthatjuk át első normálformájú relációvá:

A dolgozó törzsszámaA dolgozó neveA dolgozó születési helyeA dolgozó Születési idejeSzakképzettség
T234578Kiss IstvánEger1968.12.11.Közgazdász
T456734Nagy JózsefBudapest1972.01.30.Programozó matematikus
T456734Nagy JózsefBudapest1972.01.30.közgazdász
T429877Kovács JánosSzeged1967.05.12.Programtervező matematikus
T429877Kovács JánosSzeged1967.05.12.számítástechnika tanár

Második normálforma

Egy reláció második normálformában van, ha az első normálformájú, és egyetlen másodlagos attribútuma sem függ a kulcs egyetlen valódi részhalmazától. A második normálforma azt jelenti, hogy a relációban nincsenek a kulcs részeitől való nem triviális függőségek. Ez a normálforma tulajdonképpen egy közbenső lépés a harmadik normálforma felé. Ezért az a jelentősége, hogy a normalizálást kisebb lépésekre bonthassuk, vagyis ezáltal a normalizálást végző személynek először csak a kulcsokat és azok részhalmazait kell megvizsgálni, hogy a relációból eltávolítsa a nem kívánatos függőségeket. A második, harmadik és Boyce-Codd normálformák esetén a normalizálási technikák megegyeznek.

Harmadik normálforma

Gyakorlati szempontból a leglényegesebb a harmadik normálforma. Erre vonatkozóan az irodalomban több definíció található, amelyek egymással ekvivalensek.

Definíció. Egy R reláció harmadik normálformában van, ha

1) az második normálformájú és

2) egyetlen másodlagos attribútuma sem függ tranzitíven a kulcstól.

Vizsgáljuk meg, mit is jelent ez a definíció. Az hogy egy másodlagos attribútum nem függ tranzitíven egy kulcstól, azt jelenti, hogy nem találhatók olyan attribútumok, amelyektől funkcionálisan függ bármely másodlagos attribútum. Ugyanis ha ilyen lenne, akkor lenne tranzitív funkcionális függöség, mivel a kulcstól minden más attribútum függ. Ez alapján a harmadik normálforma másik definíciója a következő:

Definíció. Egy R reláció harmadik normálformában van, ha második normálformájú és a másodlagos attribútumok között nincsen funkcionális függöség.

Lehet adni egy olyan definíciót is, amely nem igényli a második normálforma fogalmát. Azon szemléletmód esetén, amikor egyből a harmadik normálforma definíciójával indulnak, ezt szokás használni.

Definíció. Egy R reláció akkor és csak akkor van harmadik normálformában, amennyiben ha létezik az A→B függöség valamely A,B attribútum halmazok esetén, akkor vagy az teljesül hogy az A az R szuperkulcsa, vagy a B része valamely kulcsnak.

Ez a definíció ekvivalens az előző definícióval. A definíció első része azt fejezi ki, hogy a relációban csak olyan függések lehetnek, amelynél a baloldal tartalmaz kulcsot. A definíció második része megengedi az olyan jellegű függéseket, amelyek baloldalán tetszőleges attribútumok, jobboldalán pedig a kulcshoz tartozó attribútumok vannak. A definíció két részét egybefogva láthatjuk, hogy a harmadik normálformánál a függöségek valamelyik oldalán mindenképpen szerepelni kell kulcshoz tartozó attribútumnak, tehát másodlagos attribútumok közötti függöség nem fordulhat elő a relációban.

Boyce-Codd normálforma

Definiáljuk a Boyce-Codd normálformát, amely a harmadik normálformának egy további általánosítása. Definíció. Egy Rreláció akkor és csak akkor van Boyce-Codd normálformában, amennyiben, ha létezik az A→B függöség valamely A,B attribútum halmazok esetén, akkor A az R szuperkulcsa.

A szuperkulcs definíciója alapján a Boyce-Codd normálforma lényegében azt jelenti, hogy minden nem triviális funkcionális függőség bal oldalának tartalmaznia kell egy kulcsot. Mint láttuk a második, harmadik és Boyce Codd normálformák teljesülése mindig azon múlik, hogy a relációban vannak-e bizonyos jellegű funkcionális függőségek. Ha szeretnénk elérni azt, hogy egy adott normálforma kritériuma teljesüljön, akkor el kell tüntetnünk a nem kedvező függöségeket a relációból.

Ez egy felbontással történhet, amelynek során a relációt két önálló relációra bontjuk.

Tegyük fel hogy az A→B függöség miatt sérül egy normálforma feltétele. A felbontásnál az egyik reláció R1 a függöség bal és jobb oldalán szereplő attribútumokból tevődik össze, vagyis R1=A $\bigcup$ B. A másik reláció R2 a függöség baloldalán található attribútumokból és az összes a függöségben nem szereplő attribútumból tevődik össze.

Nézzük most meg egy példán keresztül, hogyan történik a felbontás.

Példa. Tekintsük a következő relációt:

Dolgozótéma(A dolgozó törzsszáma, A dolgozó neve, A dolgozó születési helye, A dolgozó születési ideje, A vezető törzsszáma, Téma azonosítója, Témavezető)

Mint már említettük, hogy a reláció elsődleges kulcsa a A dolgozó törzsszáma, Téma azonosítója attribútumokból áll. Látható, hogy a relációban fennáll a A dolgozó törzsszáma→{ A dolgozó neve, A dolgozó születési helye, A dolgozó születési ideje, A vezető törzsszáma} funkcionális függöség. E miatt még a második normálforma feltétele nem teljesül a relációra. A felbontási szabály szerint az egyik reláció a

Dolgozó(A dolgozó törzsszáma, A dolgozó neve, A dolgozó születési helye, A dolgozó születési ideje, A vezető törzsszáma)

reláció lesz. A felbontás második táblája pedig a Téma (A dolgozó törzsszáma, Téma azonosítója, Témavezető) reláció lesz.

A Dolgozó reláció kulcsa a A dolgozó törzsszáma, a Téma relációé pedig a Téma azonosítója. Mivel ezek egyszerű kulcsok, és az ezektől való függöségeken kívül egyik relációban sincsenek más függöségek, ezért mindkét reláció harmadik normálformájú, tehát további felbontásra nincs szükség.

A harmadik normálforma mindig megfelel a gyakorlatban előforduló követelményeknek. Azaz egy relációt mindig fel tudunk bontani harmadik normálformájú sémákra úgy, hogy közben nem veszítünk semmilyen információt.

3.8 Relációalgebrai műveletek

A relációs modell egyik legnagyobb előnye, hogy különböző műveleteket definiálhatunk, amelyek az egyes relációkból új relációkat szerkeszthetnek. Ez egy olyan rendszert biztosít, amely segítségével egységes módon lehet a már meglévő adatainkból új információt nyerni, úgy, hogy nem lépünk ki a modell keretei közül.

Ezért a relációalgebrai műveletek fontos részét képezik a modellnek. Most ismertetjük ezeket. A relációalgebrai műveletek:

  • egyesítés
  • metszet
  • különbség
  • Descartes szorzat
  • projekció
  • szelekció

Definíció. Legyen R és S két n-edfokú reláció. A két reláció egyesítésén azok halmazelméleti egyesítésével R $\bigcup$ S kapott relációt értjük, azaz azt a relációt, amelynek előfordulásai vagy R-nek, vagy S-nek az előfordulásai.

Példa. Tekintsük az alábbi Dolgozó1 és Dolgozó2 relációkat:

Dolgozó1

A dolgozó törzsszámaA dolgozó NeveA dolgozó születési helyeA dolgozó születési ideje
T234578Kiss IstvánEger1968. 12. 11.
T456734Nagy JózsefBudapest1972. 01. 30.

Dolgozó2

A dolgozó törzsszámaA dolgozó NeveA dolgozó születési helyeA dolgozó születési ideje
T456734Nagy JózsefBudapest1972. 01. 30.
T429877Kovács JánosSzeged1967. 05. 12.

Ezek relációk egyesítése a következő Dolgozó reláció (Dolgozó = Dolgozó1 $\bigcup$ Dolgozó2)

Dolgozó

A dolgozó törzsszámaA dolgozó NeveA dolgozó születési helyeA dolgozó születési ideje
T234578Kiss IstvánEger1968. 12. 11.
T456734Nagy JózsefBudapest1972. 01. 30.
T429877Kovács JánosSzeged1967. 05. 12.

Egyesítés esetén meg kell követelni, hogy a két reláció attribútum halmazai megegyezzenek, vagyis hogy a megfelelő oszlopok azonos típusúak legyenek. Csak ekkor várhatjuk ugyanis, hogy a keletkezett reláció is megfelelő struktúrájú legyen.

Definíció. Legyen R és S két n-edfokú reláció. A két reláció metszetén R $\bigcap$ S azok halmazelméleti metszetével kapott relációt értjük, azaz azt a relációt, amelynek előfordulásai R-nek, és S-nek is előfordulásai.

Példa. Tekintsük ismét az előző példában megismert Dolgozó1 és Dolgozó2 relációkat. Ezek metszete a következő Dolgozó reláció (Dolgozó = Dolgozó1 $\bigcap$ Dolgozó2)

Dolgozó

A dolgozó törzsszámaA dolgozó NeveA dolgozó születési helyeA dolgozó születési ideje
T456734Nagy JózsefBudapest1972. 01. 30.

Definíció. Legyen R és S két n-edfokú reláció. A két reláció különbségén R $\setminus$ S azok halmazelméleti különbségével kapott relációt értjük, azaz azt a relációt, amelynek előfordulásai R-nek igen, de s-nek nem előfordulásai.

Példa. Ismét a Dolgozó1 és Dolgozó2 relációkat használjuk. Ezek különbsége a következő Dolgozó reláció (Dolgozó = Dolgozó1 $\setminus$ Dolgozó2)

Dolgozó

A dolgozó törzsszámaA dolgozó NeveA dolgozó születési helyeA dolgozó születési ideje
T234578Kiss IstvánEger1968. 12. 11.

Definíció. Legyen R egy n-edfokú, S pedig egy m-edfokú reláció. A két reláció Descartes-szorzatán RxS azt az n+m-edfokú relációt értjük, amelynek előfordulásait úgy alakítjuk ki, hogy R minden előfordulásához egyenként hozzávesszük S minden előfordulását. Az így kapott párok alkotják a Descartes-szorzat reláció elemeit.

Láthatjuk, hogy a Descartes-szorzat esetén meg kell különböztetni a két reláció attribútumainak neveit. Ha ezek eredendően különbözőek, akkor nincs semmi tennivalónk. Azonban ez nem mindig teljesül, nincs arra vonatkozóan semmi megkötés, hogy olyan relációkat nem szorozhatunk össze, amelyek azonos attribútum nevekkel rendelkeznek. A megkülönböztetés céljából ilyenkor az attribútum neve elé szoktuk írni a reláció nevét is, attól egy ponttal elválasztva.

Példa. Tekintsük most az alábbi Dolgozó és Dolgozótéma relációkat:

Dolgozó

A dolgozó törzsszámaA dolgozó NeveA dolgozó születési helye
T234578Kiss IstvánEger
T456734Nagy JózsefBudapest
T429877Kovács JánosSzeged

Dolgozótéma

A dolgozó törzsszámaTéma azonosítójaTémavezető neve
T429877T25Nagy Ádám
T456734T26Mekk Elek

Ezek Descartes-szorzata az alábbi módon néz ki:

DTéma

Dolgozó.A dolgozó törzsszámaA dolgozó neveA dolgozó születési helyeTéma.A dolgozó törzsszámaTéma azonosítója Témavezető neve
T234578Kiss IstvánEgerT429877T25Nagy Ádám
T234578Kiss IstvánEgerT456734T26Mekk Elek
T456734Nagy JózsefBudapestT429877T25Nagy Ádám
T456734Nagy JózsefBudapestT456734T26Mekk Elek
T429877Kovács JánosSzegedT429877T25Nagy Ádám
T429877Kovács JánosSzegedT456734T26Mekk Elek

Gyakorlati szempontból a Descartes-szorzat nem túl hasznos művelet, mivel sok felesleges sort tartalmaz. Ugyanis minden sort minden sorral összepárosít, és ezek az új sor párok leggyakrabban értelmetlenek. De a Descartes-szorzat az alapját képezi más fontos reláció algebrai műveleteknek.

Definíció. Legyen R egy n-edfokú reláció. Az R projekcióján egy olyan $\pi$(R) relációt értünk, amelyet úgy kapunk, hogy R-ből elhagyunk bizonyos attribútumokat, a maradékot pedig valamilyen módon átrendezzük. Jelöljük a keletkezett attribútumokat A=(A1 ,A2 , …, An)-nel. Ekkor új relációra a $\pi$A(R) jelölést használunk.

Példa. Vegyük az előző példában Descartes-szorzattal keletkezett DTéma relációt. Használjuk az következő rövidítéseket: A=Dolgozó.A dolgozó törzsszáma, B=A dolgozó neve, C=Téma.A dolgozó törzsszáma, D=Téma azonosítója, E= Témavezető neve. A reláció a következő:

Dolgozó.A dolgozó törzsszámaA dolgozó neveTéma.A dolgozó törzsszámaTéma azonosítójaTémavezető neve
T234578Kiss IstvánT429877T25Nagy Ádám
T234578Kiss IstvánT456734T26Mekk Elek
T456734Nagy JózsefT429877T25Nagy Ádám
T456734Nagy JózsefT456734T26Mekk Elek
T429877Kovács JánosT429877T25Nagy Ádám
T429877Kovács JánosT456734T26Mekk Elek

A projekció gyakorlati haszna abban rejlik, hogy egyrészt segítségével egy táblázatból kiemelhetjük a lényeges információt, másrészt azt tetszőleges elrendezésű táblázattá alakíthatjuk.

Definíció. Legyen R egy n-edfokú reláció. Az R szelekcióján egy olyan $sigma$F(R) relációt értünk, amelyben R-ből azokat az előfordulásokat hagyjuk meg, amelyek eleget tesznek az F logikai kifejezéssel megadott formulának.

A definícióban szereplő F formula a következő objektumokból állhat: operanduszok, amelyek konstansokat, attribútum neveket vagy sorszámokat tartalmazhatnak operanduszokon értelmezett aritmetikai operátorok (< > ⇐ >= = <>). operanduszokon értelmezett logikai operátorok (és, vagy, nem).

Példa Ismét a projekció műveletnél keletkezett relációt tekintjük. Legyen témavezető F=„Nagy Ádám” a logikai kifejezés. Ekkor a projekció eredménye a következő:

Dolgozó.A dolgozó törzsszámaTéma.A dolgozó törzsszámaA dolgozó NeveTéma azonosítójaTémavezető neve
T234578T429877Kiss IstvánT25Nagy Ádám
T456734T429877Nagy JózsefT25Nagy Ádám
T429877T429877Kovács JánosT25Nagy Ádám

A szelekció ugyancsak fontos művelet abból a szempontból, hogy egy relációból ki tudjuk válogatni a szükséges információt. A lényeges különbség a projekcióhoz képest az, hogy ennél a táblázat soraira történik a kiválasztás. A Descartes-szorzat után keletkezett nagyméretű táblákat kell gyakran szűrni. A szűrés mindig szelekcióval történik, a megfelelő logikai feltétel megadásával.

ab/rel-modell.txt · Utolsó módosítás: 2021/07/24 04:12 szerkesztette: holovacs