online kép - Fájl  tubefájl feltöltés file feltöltés - adja hozzá a fájlokat onlinefedezze fel a legújabb online dokumentumokKapcsolat
  
 

Letöltheto dokumentumok, programok, törvények, tervezetek, javaslatok, egyéb hasznos információk, receptek - Fájl kiterjesztések - fajltube.com

Online dokumentumok - kep
  

Adatbazis-típusok

számítógépes





felso sarok

egyéb tételek

jobb felso sarok
 
Az ACCESS adattípusai
Hashelés és ritka indexes szervezési módszerek
Az informatika története
Matav rendszertechnika
Csomag alapú halózatok alapjai
Vírusprogramok
Fajl fogalma, fajlnevek
Elektronikus levelezés
Az Excel alapjai
A PC-k hardvere
 
bal also sarok   jobb also sarok

Adatbázis-típusok


Attól függően, hogy az adatmodellben milyen logikai kapcsolatokat engednek meg az egyedhalmazok között és ezeket a kapcsolatokat hogyan kezelik, az adatbáziskezelő rendszereket három fő típusba sorolhatjuk:

- hierarchikus

- hálós

- relációs adatbáziskezelő rendszerek.



Hierarchikus adatbázisok




Az első adatbáziskezelő rendszerek nagyszámítógépeken jelentek meg. Ezek többsége a hierarchikus modell szerint épült fel. Ennek lényege, hogy az egyedhalmazok között csak hierarchikus kapcsolatot enged meg (1 323g61d :N típusú kapcsolat). Ez az adatstruktúra egy fával ábrázolható. Például egy tantárgynyilvántartás esetén a tantárgyak rekordjai tartalmazzák a tantárgyakat jellemző adatokat (tantárgy kódja, címe, óraszám, követelmény, stb.), a tanszékek rekordjai pedig a tanszékekre jellemző adatokat (tanszék kódja, neve, vezető neve, stb.). Egy tanszék több tantárgyat is meghirdethet, de egy tantárgyat csak egy tanszék hirdet meg, így a tantárgyak és a tanszékek között 1:N típusú kapcsolat van, vagyis hierarchikus kapcsolatban állnak egymással.



A tanszékrekord a szülő, vagy tulajdonos, a tantárgyrekordok pedig a gyerek, vagy tag rekordok.


A fastruktúra több szintű is lehet. Példánkban a tanszékek valamilyen szervezeti egységhez tartoznak, az egyes szervezeti egységek pedig valamilyen szervezeti egység-csoporthoz.



A legegyszerűbb hierarchikus modellek csak egyfajta fastruktúrából állnak, míg bonyolultabb modellek esetén egy adatbázison belül többféle fastruktúra előfordulhat.

A fastruktúra fizikai megvalósítása általában az adatrekordokban elhelyezett pointerek (mutatók) segítségével történik. Egy adatrekordban pointer mutat a szülő rekordra, valamint a gyerek rekordokra, vagy a testvérekre.

Az így kialakított hierarchikus struktúrában könnyen válaszolhatunk azokra a kérdésekre, amelyek illeszkednek az adatok logikai szerkezetéhez. Azon kérdések megválaszolása azonban, amelyeknél a visszakereséshez a logikai kapcsolatok nem használhatók, sok időt vehetnek igénybe, hiszen ekkor soros keresést lehet csak alkalmazni.

A fenti példában arra a kérdésre, hogy mennyi egy tanszék dolgozóinak átlagos életkora, könnyen megadható a válasz, hiszen a szervezeti egység hierarchián, vagyis a fa ágain lefelé haladva el lehet jutni a keresett tanszékhez, amelynek levelei a dolgozók adatait tartalmazzák. Azonban csak hosszas kereséssel tudjuk megadni azokat, akik ebben az évben érik el a nyugdíjkorhatárt, hiszen bármelyik szervezeti egységben lehet ilyen dolgozó, ezért minden dolgozó születési dátumát meg kell vizsgálni.

A hierarchikus struktúra csak 1:N típusú kapcsolatok leírását teszi lehetővé, a valóságban az adatok között azonban gyakoribb az N:M kapcsolat. Ezt a kapcsolattípust próbálják leírni a hálós adatbázisok.



Hálós adatbázisok


A hálós adatbázisokban az egyedtípusok között fennálló N:M kapcsolatot egy új csomóponttípus, a kapcsolatrekord segítségével kezeljük. A kapcsolatrekord általában azokat az adatokat tartalmazza, amelyek mindkét egyedtípustól függnek. Így az N:M típusú kapcsolatot lebontjuk 1:N és 1:M kapcsolatokra. Ezek a kapcsolatok már ábrázolhatók egyszerű hierarchiával. Tehát a hálós adatbázisok lényege, hogy kapcsolatrekordok segítségével olyan egyszerű hierarchiákat alakítunk ki, melynek elemei egyidejűleg több hierarchiában is részt vehetnek. Bonyolult adatösszefüggéseknél előfordulhat, hogy többféle típusú kapcsolatrekordot kell létrehozni. Az adatmodell használata során semmilyen különbséget nem teszünk az adatrekordok és a kapcsolatrekordok között.


Például tekintsük a hallgatók és a tantárgyak nyilvántartását. A hallgatórekordok tartalmazzák a hallgatók adatait, a tantárgyrekordok pedig az egyes tantárgyakra vonatkozó adatokat. Egy hallgató egyszerre több tantárgyat hallgat, és egy tantárgyat több hallgató hallgat egy félévben. Így a hallgató és a tantárgy rekordok között N:M típusú kapcsolat van.



Vezessünk be kapcsolatrekordokat, amelyek a hallgató kódját és a tantárgy kódját tartalmazzák. Ekkor egy hallgatórekordhoz azok a kapcsolatrekordok tartoznak, amelyek az adott hallgató által felvett tantárgyak kódját tartalmazzák, az egyes tantárgyrekordokhoz pedig azok a kapcsolatrekordok, melyek azoknak a hallgatóknak a kódját tartalmazzák, akik a tárgyat hallgatják. Így mind a hallgató és a kapcsolat, mind a tantárgy és a kapcsolat rekordok között 1:N típusú kapcsolat áll fenn.



A kapcsolatrekordok mind a két hierarchiában szerepelnek. Ha összekapcsoljuk a két hierarchiát a kapcsolatrekordokon keresztül, akkor a kiinduló hálózatot kapjuk eredményül, vagyis a kiinduló N:M kapcsolatot kezelni lehet a két hierarchia segítségével.



Relációs adatbázisok



A személyi számítógépeken főként a relációs adatbázisok használata terjedt el, ezért ezekkel részletesebben foglalkozunk.


A reláció fogalma


Legyen S1, S2,..., Sn adott halmazok. R az ezen n halmaz közötti reláció, ha olyan (s1,s2,...sn) n-esekből áll, amelyek első eleme S1-ből, második eleme S2-ből, ...n. eleme Sn-ből származik. Az S1, S2,...,Sn halmazokat a reláció tartományainak nevezzük. A relációban szereplő tartományok száma (n) adja meg a reláció fokát.


Az adatmodellben az egyedeket tulajdonságokkal írjuk le. Ezeknek a tulajdonságoknak egy-egy halmaz feleltethető meg. A halmaz elemei az adott tulajdonság értékei, vagyis az egyedhalmazban szereplő egyedek ezen tulajdonsághoz tartozó értékei.


Például tekintsük a hallgató egyedhalmazt. A hallgató egyedtípust jellemezzük a hallgatókód, név, születési dátum, szak, évfolyam tulajdonságokkal. A név tulajdonságértékeinek halmaza az összes hallgató neve, a születési dátum tulajdonságértékeinek halmaza az összes hallgató születési idejének halmaza. Az évfolyam halmaz 5 elemből áll (1, 2, 3, 4, 5), mert a hallgatók vagy az 1., vagy a 2., ... , vagy az 5. évfolyamra járnak.

A hallgatókód, név, születési dátum, szak, évfolyam halmazok közötti reláció azon ötösökből áll, amelyek 1. eleme a hallgatókód, 2. eleme a név, 3. eleme a születési dátum, 4. eleme a szak, 5. eleme az évfolyam halmazból származik. Pl.: (1234, Nagy Judit, 1971.07.11, magyar, 2)

Ez a reláció ötödfokú. Természetesen a relációt alkotó ötösök a lehetséges ötösöknek csak egy részhalmaza, mégpedig azok, amelyek valamely egyed tulajdonságait írják le. Így ezek az ötösök az öt halmaz, illetve azok elemei közötti összefüggéseket fejezik ki.


A reláció tehát n-esekből áll. Ezeket elrendezhetjük táblázatos formában úgy, hogy egy-egy n-es lesz a táblázat egy-egy sora. Vagyis egy sor egy egyed tulajdonságértékeit tartalmazza. A táblázat oszlopai az egyes tulajdonságok, például név oszlop, születési dátum oszlop. Egy oszlopban az adott tulajdonságérték-halmaz valamely eleme szerepelhet. A táblázat könnyen áttekinthető, a felhasználó számára természetes megjelenése az adatoknak.


Azt az adatmodellt, amely az adatok táblázatos ábrázolásán alapul, relációs adatmodellnek nevezzük. A relációs adatmodellben minden egyes reláció egy névvel ellátott táblázat.


Az adatmodell elemeinek megfeleltethetők a reláció elemei:

A reláció tartományai a tulajdonságok. A táblázatban a tartományoknak az oszlopok felelnek meg. Minden egyes oszlopnak önálló neve van, az oszlopokat adattípusukkal és méretükkel jellemezhetjük. Így a tarományok a hagyományos adatfeldolgozás adatmezőinek felelnek meg. A sorok egy-egy egyed tulajdonságértékeit tartalmazzák. A sorok a hagyományos adatfeldolgozás rekordjainak megfelelői. Az egyedhalmaz megfelelője pedig maga a táblázat.


A reláció definíciójából következnek a tulajdonságai:


- Minden sorban, minden oszlophoz egyetlen érték van hozzárendelve., vagyis a táblázat minden cellájában egy elemi érték szerepel. Ez abból következik, hogy a reláció elemeit úgy képeztük, hogy 1 halmazból pontosan 1 értéket vettünk.


- A sorok és oszlopok sorrendje a modell szempontjából közömbös.

Hiszen a reláció képzésénél tetszőlegesen választhatjuk meg, hogy a tulajdonsághalmazok milyen sorrendben szerepeljenek, a reláció elemeit szintén tetszőleges sorrendben rendezhetjük egymás alá, amikor táblázatot alkotunk belőlük. A modell adattartalma nem változik meg ha a sorok, vagy az oszlopok sorrendjét megváltoztatjuk.


- Egy relációban nem lehet két teljesen azonos sor.

Az adatmodellben egy egyedhalmazban nem lehet két teljesen azonos tulajdonságokkal rendelkező egyed, a definíció szerint a reláció elemei között sem lehet két teljesen azonos n-es.


- Minden relációban kiválasztható a tartományoknak legalább egy olyan kombinációja, melyeknek tartalma egyértelműen egyetlen sort határoz meg. Ezt a tartományt (oszlopot), vagy tartománycsoportot nevezzük az adott reláció kulcstartományának. Amennyiben a kulcstartomány csak egyetlen tulajdonságból áll, akkor egyszerű kulcsról beszélünk, egyébként pedig összetett kulcsról.

Mivel az egyedhalmaz rendelkezett kulccsal, a megfelelő reláció szintén rendelkezni fog vele. A kulcstartományok az egyedhalmaz kulcsát alkotó tulajdonságoknak megfelelő oszlopok lesznek.


A gyakorlatban előfordul, hogy egyes egyedek valamely tulajdonságértékét nem ismerjük, ezért megengedjük, hogy egy sorban valamely oszlopban, vagy oszlopokban ne szerepeljen érték. (Vagyis üres érték szerepeljen. Az üres értéket szokás NULL értéknek nevezni.)




Normál formák, normalizálási eljárás



Tekintsük a következő példát:




Egy raktári nyilvántartásban a raktárakban található anyagokról a következő adatok szerepelnek:


raktárszám, cikkszám, megnevezés, mennyiség, egységár.


Készítsünk egy Raktár táblát, amelynek oszlopai ezek a tulajdonságok. Az anyag megnevezése és az egységára annyiszor szerepel a táblázatban, ahány raktárban az adott anyag megtalálható. Ha egy anyag egységára megváltozik, ez minden olyan sort érint, amely erre az anyagra vonatkozik. Ha egy anyag kifogy a raktárakból, akkor ennek az anyagnak a megnevezése és egységára sehol sem fog szerepelni a táblában. Ha újra érkezik ebből az anyagból valamelyik raktárba, az anyag jellemzőit újra fel kell vinni valahonnan. Ezen problémák kiküszöbölésére célszerű a táblázatban szereplő tulajdonságok összefüggéseinek elemzése, és a táblázatok átalakítása normál formájú táblázatokká.



Első normál forma


Azon relációkat, amelyek ábrázolhatók táblázatos formában és minden sor és oszlop metszéspontjában csak egyetlen érték (elemi érték) található, első normál formájúnak (1NF) nevezzük.



Funkcionális függőség


Egy relációban az A tulajdonság funkcionálisan függ a B tulajdonságtól (vagy tulajdonságcsoporttól), ha B értéke egyértelműen meghatározza A értékét.


Például a felsőoktatási intézményeket a következő tulajdonságokkal írjuk le:


név, cím, a vezető (rektor, főigazgató) neve, hallgatói létszám


Az oktatási intézmény neve egyértelműen meghatározza az intézmény vezetőjének nevét, ezért a vezető neve funkcionálisan függ az intézmény nevétől.



Teljes függés


Amennyiben A tulajdonság funkcionálisan függ a B tulajdonságcsoporttól, az A tulajdonság teljesen függ a B tulajdonságcsoporttól, ha csak a teljes B tulajdonságcsoporttól függ, de annak részeitől nem.

Vagyis a teljes B tulajdonság-csoport egyértelműen meghatározza az A tulajdonság értékét, azonban a B tulajdonság-csoport bármely összetevője önmagában nem határozza meg A értékét.


Például egy élelmiszer-áruházban a vásárlásokról a következő adatokat tartják nyilván: a pénztárgép számát, a vásárlás dátumát és időpontját, valamint a fizetett összeget.

A pénztárgép száma, a vásárlás dátuma és időpontja együttesen egyértelműen meghatározza a fizetett összeget, azonban a pénztárgép száma önmagában nem határozza meg, hiszen egy pénztárgépen nagyon sok vásárlást blokkolnak, a dátum és az időpont sem határozza meg egyértelműen, hogy melyik vásárlásról van szó, mert egy adott időpontban több pénztárgép is blokkolhat. Tehát a vásárláskor fizetett összeg teljesen függ a pénztárgép száma, a vásárlás dátuma és időpontja tulajdonságcsoporttól.



Második normál forma


Azon relációkat, amelyek első normál formában vannak és minden olyan tulajdonság, amely nem elsődleges kulcs teljesen függ az elsődleges kulcstól, második normál formájúnak (2NF) nevezzük. Ez tulajdonképpen azt jelenti, hogy a lehető legszűkebb tulajdonságcsoportot választottuk kulcsnak.


Ha egy reláció első normál formájú, és minden kulcsa egyszerű kulcs, akkor második normál formájú is. Az egyszerű kulcs egyetlen tulajdonságból áll, ezért itt nem fordulhat elő, hogy valamely tulajdonság csak a kulcs egy részétől függ.




Tranzitív függés


Egy relációban egy A tulajdonság tranzitíven függ a B tulajdonság(csoport)tól, ha van olyan C tulajdonság(csoport), amely teljesen függ B-től és az A pedig teljesen függ C-től, de B nem függ C-től és C nem függ A-tól.


Vagyis, ha egy relációban egy tulajdonság funkcionálisan függ az elsődleges kulcstól, de olyan tulajdonságtól is függ, amely nem része a kulcsnak, ezt nevezzük tranzitív függésnek.



Például:


A dolgozók napi munkadíj-elszámolását egy táblázatban tartjuk nyilván, melynek oszlopai (a tulajdonságok):

dátum, személyi szám, órabér, dolgozott órák száma, fizetés

A kulcs a dátum és a személyi szám. A fizetés azonban függ az órabértől és a dolgozott órák számától, ezért ez a reláció tranzitív függést tartalmaz.



Harmadik normál forma


Azon relációkat, amelyek második normál formában vannak és nem tartalmaznak tranzitív függőséget (vagyis minden tulajdonság csak az elsődleges kulcstól függ), harmadik normál formájúnak (3NF) nevezzük.


Az első normál formájú relációk csak egy része teljesíti a második normál forma feltételeit, ezeknek pedig csak egy része teljesíti a harmadik normál forma feltételeit.


Bebizonyítható, hogy minden reláció előállítható 3NF relációk összességeként. Azt az eljárást, amelynek segítségével egy reláció harmadik normál formájú relációkká alakítható, normalizálásnak nevezzük. Egy reláció normalizálását általában további relációkra történő bontással valósíthatjuk meg.

Egy reláció további relációkra történő bontásán azt értjük, hogy a kiinduló táblázat helyett kisebb táblázatokat alakítunk ki úgy, hogy a létrejövő táblázatok együttesen ugyanazt az információtartalmat hordozzák, mint a kiinduló táblázat.




A normalizálási eljárás az adatbázistervezés témakörébe tartozik, ezért ebben a könyvben csak egy példán keresztül szemléltetjük, hogy hogyan bontható részekre egy reláció. Sem az algoritmussal nem foglalkozunk, sem annak bizonyításával, hogy az így kapott relációk együttese pontosan azt az adattartalmat hordozza, mint a kiinduló reláció.

A feladatunk a hallgatók adatainak nyilvántartása. Első közelítésben adatainkat a következő táblázatban ábrázolhatjuk:


HALLGATÓK


(HALLGATÓKÓD, SZÜLETÉSI DÁTUM, NÉV, KAR, SZAK, ÉVFOLYAM, TANTÁRGYKÓD, TANTÁRGYNÉV, TANTÁRGY KREDITÉRTÉKE, JEGY, TANÁRKÓD, TANÁR NEVE, TANSZÉK NEVE)


Egy sor egy hallgató adatait és vizsgajegyeit tartalmazza.

A táblázat kulcsa a hallgatókód. A név nem lehet kulcs, mert egy oktatási intézményben előfordulhatnak azonos nevű hallgatók és tanárok, ezért volt szükség a hallgatókód, és a tanárkód bevezetésére. Két különböző tanszék is meghirdethet azonos nevű tantárgyat, így célszerűbb a tantárgyakat is kóddal azonosítani.

Mivel egy hallgató több tantárgyat tanul egy félévben, a táblázatban egy hallgatóhoz több tantárgyra vonatkozó tulajdonságérték (tantárgykód, tantárgy neve stb.) tartozhat. Tehát ez a tábla nem normalizált.

Alakítsuk át úgy a táblázatot, hogy egy sorban csak egy tantárgy szerepeljen, vagyis minden hallgatóhoz annyi sor tartozzon, ahány tantárgyat hallgat az adott félévben. Az így kapott tábla sorait már nem azonosítja egyértelműen a hallgatókód, ezért a hallgatókódot és a tantárgykódot választjuk kulcsnak. A tábla így első normál formában van.


Vizsgáljuk meg, hogy milyen összefüggések vannak a tulajdonságok között:


Csak a hallgatókódtól függ: születési dátum, név, kar, szak, évfolyam


Csak a tantárgykódtól függ: tantárgynév, tantárgy kreditértéke, tanárkód, tanár neve, tanszék neve


A teljes kulcstól függ: jegy





Ennek megfelelően bontsuk három táblára a kiinduló táblánkat. Az első táblában helyezzük el a hallgatóra vonatkozó tulajdonságokat, a másodikban a tantárgyakra vonatkozókat. A harmadikba kerül a jegy, amelyik függ a hallgatókódtól és a tantárgykódtól, ezért mindkét kódnak szerepelnie kell benne.


HALLGATÓ-1                                                             


(HALLGATÓKÓD, SZÜLETÉSI DÁTUM, NÉV, KAR, SZAK, ÉVFOLYAM)

A kulcs a hallgatókód.



TANTÁRGY


(TANTÁRGYKÓD, TANTÁRGYNÉV, TANTÁRGY KREDITÉRTÉKE, TANÁRKÓD, TANÁR NEVE, TANSZÉK NEVE)

A kulcs a tantárgykód.



EREDMÉNY


(HALLGATÓKÓD, TANTÁRGYKÓD, JEGY)

A hallgatókód és a tantárgykód alkotja a kulcsot.


A kapott táblák második normál formában vannak, mert az első két tábla kulcsa egyszerű kulcs, a harmadik táblában a jegy tulajdonság pedig az összetett kulcs mindkét tagjától függ. Hiszen csak a hallgatókód ismeretében nem tudom megmondani, hogy milyen jegyet kapott a hallgató. Csak a tantárgykód ismeretében sem lehet tudni a jegyet, mert számos hallgató kaphatott jegyet abból a tantárgyból.

A HALLGATÓ-1 és az EREDMÉNY tábla harmadik normál formájú, a tulajdonságok csak a kulcstól függnek. A TANTÁRGY tábla azonban nem harmadik normál formájú, mert a tanár neve és a tanszék függ a tanár kódjától, ami pedig nem kulcs. Ezért ezt a táblát bontsuk két újabb táblára, úgy, hogy a tanárra vonatkozó adatokat emeljük ki egy másik táblába:


TANTÁRGY-1


(TANTÁRGYKÓD, TANTÁRGYNÉV, TANTÁRGY KREDITÉRTÉKE, TANÁRKÓD)

A kulcs a tantárgykód.


TANÁR


(TANÁRKÓD, TANÁR NEVE, TANSZÉK NEVE)

A tábla kulcsa a tanárkód.


Az így kapott táblák már harmadik normál formában vannak.


A normalizálási eljárás eredményeként a kiinduló táblánkat négy táblára bontottuk:


HALLGATÓ-1

EREDMÉNY

TANTÁRGY-1

TANÁR


Most vizsgáljuk meg, milyen előnyök származnak ebből a felbontásból, a 3NF táblázatok használatából.


Sokkal kevesebb adat kerül többszörösen tárolásra (minimális redundancia).

A tantárgyakat leíró adatok (név, kreditérték) csak egyszer kerülnek tárolásra a TANTÁRGY-1 táblában, míg az eredeti táblánk esetén annyiszor tároltuk őket, ahány hallgató felvette az adott tantárgyat.

Ha módosítani kell egy tantárgy valamely adatát, például a kreditértéket, elegendő ezt egyetlen helyen elvégezni.

A kiinduló tábla esetén, ha minden olyan hallgatót törlünk a táblából, akik egy adott tantárgyat felvettek, akkor a tantárgy adatai is törlődnek. Míg a harmadik normál formában levő tábláink esetén a TANTÁRGY-1 táblában benne maradhat az a tantárgy, amelyet abban a félévben nem oktatnak, így a rá vonatkozó adatok nem vesznek el a törlés során.

Rugalmasabb adatfelvitelt biztosít, hiszen ha egy új tantárgyat szeretnénk bevezetni, már akkor is felvihetjük az adatait a TANTÁRGY-1 táblába, amikor még egyetlen hallgató sem vette fel. Ezt a kiinduló tábla esetén nem tehetjük meg.

A továbbiakban csak olyan relációkkal foglalkozunk, melyek harmadik normál formában vannak.



Az előbbi példánkban a kiinduló táblánkat négy táblára bontottuk. A kapott táblák egymással kapcsolatban állnak, kulcsmezőiken keresztül. Az EREDMÉNY tábla a hallgatókód segítségével kapcsolódik a HALLGATÓ-1 táblához, a tantárgykód segítségével pedig a TANTÁRGY-1 táblához. A TANÁR tábla a tanárkódon keresztül áll kapcsolatban a TANTÁRGY-1 táblával.


A relációs adatbázisban egyes táblázatok - többnyire kulcsmezőiken keresztül - kapcsolatban állhatnak egymással. A relációs adatbázisok terminológiájában szokásos a táblázat sorait azonosító kulcstartományt elsődleges kulcsnak (primary key) nevezni. Azt a tartományt pedig, amely az adott táblázatban szerepel, és egy másik táblázatban kulcstartomány, idegen kulcsnak (foreign key) nevezik.


Előző példánkban a TANÁR táblában a tanár kódja elsődleges kulcs, hiszen ebben a táblában egyértelműen meghatároz egy sort egy tanárkód érték. A TANTÁRGY-1 táblában a tanárkód nem kulcs, mert értéke nem határoz meg egyértelműen egy sort, hiszen egy tanár több tantárgyat is taníthat, így több sorban is szerepelhet a kódja. A TANTÁRGY-1 táblában a tanárkód idegen kulcs, mert egy másik tábla, mégpedig a TANÁR tábla elsődleges kulcsa.



Egy relációnak több kulcsa is lehet, ekkor döntés kérdése, hogy melyiket választjuk elsődleges kulcsnak.


A relációs adatmodellben mind az 1:N mind az N:M típusú kapcsolatokat ki tudjuk fejezni. A táblázatos forma előnye, hogy jól áttekinthető, sokkal könnyebb benne eligazodni, mint a kusza hálózatokban. Minden hálózat - esetleg bizonyos redundanciák bevezetésével - táblázattá alakítható, vagyis mind a hierarchikus, mind a hálózatos adatmodell átalakítható relációs adatmodellé.


Nézzük meg a hálós adatbázisoknál bemutatott hallgatók és tantárgyak nyilvántartását és vessük össze a normalizálási példában bemutatottal. A hallgatók és tantárgyak nyilvántartását három táblázattal célszerű megvalósítani. Az első a Hallgató tábla, mely az egyes hallgatók adatait tartalmazza, a második a Tantárgy tábla, amely a tantárgyakra vonatkozó adatokat tartalmazza, a harmadik pedig a Kapcsolat tábla, amelynek két oszlopa van, az egyik a hallgatókód, a másik a tantárgykód, sorai az összetartozó hallgatókód-tantárgykód párokat tartalmazzák. Vagyis egy hallgatókód annyiszor szerepel benne, ahány tantárgyat hallgat, egy tantárgykód pedig annyiszor, ahány hallgató hallgatja. Amennyiben a tantárgyból kapott jegyet is felvesszük a tulajdonságok közé, úgy ez is a Kapcsolat táblába kerül. Ekkor a Kapcsolat tábla a normalizálási példában az Eredmény táblának felel meg. Mivel a hálós adatbázisoknál alkalmazott feladatban a tanárokra vonatkozó adatok nem szerepeltek, a normalizálási példa Tanár táblájának nincs megfelelője.

A Hallgató táblázatban a hallgatókód a kulcs, hiszen ez az érték azonosítja egyértelműen a hallgatót. A Tantárgy táblázatban a tantárgykód a kulcs, a Kapcsolat táblázatban pedig a hallgatókód és a tantárgykód alkotják a kulcsot.


Műveletek relációkon


Ugyanazon adatbázis különböző felhasználóinak az egyedhalmazokról és a közöttük levő kapcsolatokról eltérő felfogása lehet, ezért egyes felhasználók számára a táblázat oszlopainak részhalmazait kell kiemelni, más felhasználók számára pedig a táblázatokat össze kell vonni, létrehozva ezzel egy magasabb rendű táblázatot. A relációs modell egyik nagy előnye, hogy a különböző igényeknek megfelelő adatelemek matematikailag könnyen és jól definiálhatók a relációalgebra, vagy a relációanalízis segítségével.



Relációalgebra


A relációalgebrai műveletek olyan műveletek, melyek relációkon vannak értelmezve, s eredményük szintén reláció. Tekintsük át a legfontosabb relációalgebrai műveleteket.


Projekció (vetítés). Egy R reláció T1, T2, ... , Ti tartományokra történő vetítésének eredménye az a reláció, melyet R-ből úgy kapunk, hogy csak a felsorolt oszlopokat vesszük a táblázatból. Jelölése: PT1,T2,...,Ti(R)


Például: A hallgatók adatait tartalmazó táblából csak a hallgatók nevét és az évfolyam számát szeretnénk látni.



Szelekció (korlátozás) . Egy R reláció F feltétel szerinti korlátozása az a reláció, melyet R-ből úgy kapunk, hogy csak az F feltételt kielégítő sorait hagyjuk meg. Az F feltétel oszlopnevekből, konstansokból, logikai műveletekből és összehasonlító operátorokból épül fel. Jelölése: sF(R)




Például: A hallgatók adatait tartalmazó táblából csak azokat a hallgatókat szeretnénk látni, akik a 3. évfolyamra járnak. A szelekció feltétele évfolyam=3 .



Egyesítés (unió) . Az R és S relációk egyesítése azon sorok összessége, melyek vagy az R, vagy az S relációban benne vannak. Az esetleges azonos sorok csak egyszer szerepelnek az unióban. Ez a művelet csak azonos sorhosszúságú relációkon értelmezhető. Jelülése: R U S

Például: Az egyik tábla tartalmazza a Mezőgazdaságtudományi Kar hallgatóinak nevét, születési dátumát, lakcímét, a másik ugyanolyan felépítésű tábla a Gazdaság- és Társadalomtudományi Kar hallgatóinak adatai. A két kar hallgatóinak adatait tartalmazó táblát a két tábla egyesítésével kapjuk meg. Azon hallgatók, akik beiratkoztak mindkét karra, csak egyszer fognak szerepelni az eredménytáblában.




Különbség. Egy R és S reláció különbsége azon sorokból áll, melyek benne vannak R-ben, de nincsenek benne S-ben. Az R és S relációnak azonos sorhosszúságúnak kell lennie. Jelölése: R - S


Például: Az egyik tábla tartalmazza a Mezőgazdaságtudományi Kar hallgatóinak nevét, születési dátumát, lakcímét, a másik ugyanolyan felépítésű tábla a Gazdaság- és Társadalomtudományi Kar hallgatóinak adatai. Azon hallgatók adatait, akik csak a Mezőgazdaságtudományi Karra járnak úgy kaphatjuk meg, hogy az első táblából kivonjuk a második táblát.



Metszet. Egy R és S reláció metszete azokat a sorokat jelenti, melyek mindkét relációban benne vannak. Jelölése: R S

Például: Az egyik tábla tartalmazza a Mezőgazdaságtudományi Kar hallgatóinak nevét, születési dátumát, lakcímét, a másik ugyanolyan felépítésű tábla a Gazdaság- és Társadalomtudományi Kar hallgatóinak adatai. A két tábla metszete azon hallgatók adatait tartalmazza, akik mindkét karra beiratkoztak.



Direkt szorzat. Ha egy R reláció sorai r elemből állnak, egy S relációé pedig s elemből, akkor a két reláció direkt szorzataként kapott reláció sorai r+s elemből fognak állni, úgy, hogy a sor első r eleme egy R-beli sor, utolsó s eleme pedig egy S-beli sor, s ezek minden lehetséges összeállításban szerepelnek. Ha R-ben k db sor volt, S-ben pedig n db, akkor a direkt szorzat eredményeként kapott relációban k*n db sor lesz! Jelölése: R X S


Például: Az egyik tábla tartalmazza a könyvtár szak 1. évfolyamára járó hallgatók nevét és születési dátumát. A másik tábla a könyvtár szakon az 1. félévben oktatott vizsgaköteles tárgyak nevét és óraszámát. Egy olyan táblázatot szeretnénk készíteni, amelyben minden egyes 1. éves könyvtár szakos hallgatóról szerepel, hogy milyen vizsgákat kell letennie. Ezt a két tábla direkt szorzataként tudjuk előállítani. Az eredménytábla oszlopai a hallgatók nevét, születési dátumát, a tantárgy nevét és óraszámát fogják tartalmazni. Az eredménytábla sorainak száma annyi lesz, amennyi a hallgatók száma szorozva a tantárgyak számával.



Összekapcsolás (join) . Legyen R és S két reláció, valamint tekintsünk egy összehasonlító operátort. Az R és S reláció összekapcsolása az a reláció, amelyet az R x S relációból úgy kapunk, hogy csak azokat a sorokat hagyjuk meg, amelyekben az R reláció i-edik és az S reláció j-edik oszlopa között fennáll az összehasonlító operátornak megfelelő reláció.

Ha a megadott reláció egyenlőség, akkor az összekapcsolást egyenlőség-összekapcsolásnak (equijoin) nevezzük. Jelölése: R * S

i Q j

Például: Az egyik tábla gyerekek nevét és zsebpénzét tartalmazza. A másik tábla az üzletben kapható játékok nevét és árát. Egy gyerek csak olyan játékot vásárolhat meg, amelynek ára nem több, mint a saját zsebpénze. Tudni szeretnénk, hogy melyik gyerek melyik játékokat veheti meg. Ehhez készítsük el a két tábla összekapcsolását, amelynek feltétele, hogy a zsebpénz oszlopban található érték nagyobb, vagy egyenlő legyen az ár oszlopban található értéknél. Vagyis a két tábla direkt szorzatából csak azokat a sorokat vesszük, ahol zsebpénz>=ár .


Természetes összekapcsolás (natural join) . Legyen R és S két reláció. Állítsuk elő R x S -t és csak azokat a sorokat hagyjuk meg, melyek R és S azonos nevű tartományain megegyeznek. Vagyis, az azonos mezőkben azonos érték található. Az azonos mezőkből csak egyet-egyet hagyunk meg. Az így kapott eredményreláció a két reláció természetes összekapcsolása. Jelölése: R * S

Például: Az egyik tábla tartalmazza a hallgatók nevét, születési dátumát, a szak kódját és az évfolyamot. A másik táblázat a szak kódját és nevét tartalmazza. Olyan táblázatot szeretnénk készíteni, amelyben a hallgatók adatai mellett nemcsak a szak kódja, hanem a neve is szerepel. Készítsük el a két tábla természetes összekapcsolását. Az azonos oszlop a szak kódja, ez az eredménytáblában csak egyszer fog szerepelni. Minden hallgatóhoz annak a szaknak a neve lesz hozzákapcsolva, amelyikre jár, vagyis amelyik szak kódja megegyezik a hallgató táblázatban feltüntetett szakkóddal.


Ha egy táblában idegen kulcsként szerepel egy másik tábla kulcsa, akkor a két tábla természetes összekapcsolása ennek a kulcstartománynak a segítségével történhet. A normalizálásnál bemutatott példában a TANTÁRGY-1 és a TANÁR tábla természetes összekapcsolásához a tanár kódját használhatjuk.


Az eredménytábla a következő lesz:

(TANTÁRGYKÓD, TANTÁRGYNÉV, TANTÁRGY KREDITÉRTÉKE, TANÁRKÓD, TANÁR NEVE, TANSZÉK NEVE)




Relációanalízis


A relációanalízis segítségével a felhasználó azt az eredményt definiálja, amit az adatbázisból kapni kíván. A megfogalmazott feltételekkel sorokat, vagy mezőket lehet kiválasztani. A feltételek definiálásához a mezőneveket, konstansokat, összehasonlító operátorokat, logikai műveleteket (és, vagy, negálás), továbbá a "létezik" és a "minden" szimbólumokat lehet felhasználni.


Ù és

vagy

Ø negálás

létezik

" minden


Példák

Egy hallgatói nyilvántartásból keressük ki a harmadik évfolyamból azokat a csoportokat, amelyekben volt olyan hallgató, aki jeles eredményt ért el. Ennek megfogalmazása: azon csoportokat választjuk ki, amelyekre igaz, hogy az évfolyam értéke 3 és létezik 4.5-nél jobb eredmény:




Egy hallgatói nyilvántartásból keressük ki a harmadik évfolyamból azokat a csoportokat, amelyekben minden hallgató eredménye jobb volt, mint 3.5 . Ennek megfogalmazása: azon csoportokat választjuk ki, amelyekre igaz, hogy az évfolyam értéke 3 és minden eredmény jobb, mint 3.5 :




A relációanalízis és a relációalgebra egymással egyenértékű. Bármely relációanalízissel felírt kifejezést megfogalmazhatunk relációalgebrai formulákkal és ez fordítva is igaz. Egyes relációs adatbáziskezelők lekérdező nyelve a relációalgebrán alapul, vannak azonban a relációanalízisre támaszkodó nyelvek is, sőt olyanok is, amelyek mindkettőt támogatják. A relációanalízis műveleteinek segítségével a felhasználó a kívánt adatokat tulajdonságaik alapján választhatja ki, míg a relációalgebrai műveletek esetében az adatok előállításához szükséges műveleteket kell megadni.


Találat: 5271







Felhasználási feltételek