• Nem Talált Eredményt

A modell strukturális elemei

4. Lecke: A relációs adatmodell

4.3 A relációs adatmodell

4.3.1 A modell strukturális elemei

A relációs adatmodell különböző strukturális elemeket használ az egyedtí-pusokba tartozó egyedek tulajdonságtíegyedtí-pusokba sorolt tulajdonságainak és kap-csolatának modellezésére. A modell szerkezeti elemei az alábbiak:

Tábla, reláció

Az azonos egyedtípusba tartozó egyedek tárolása egyszerűen áttekinthető adatszerkezetekben, úgynevezett táblákban, más néven relációkban történik.

A tábla egyes oszlopai az egyedtípus tulajdonságtípusainak, a sorok pedig az egyedeknek felelnek meg. A táblában annyi tulajdonság tárolódik, amennyi a

sorok és oszlopok szorzata, hiszen minden egyed sorában tároljuk az összes tulajdonságtípus oszlopához tartozó tulajdonságot.

A matematikában két halmaz Descartes-féle szorzatát relációnak nevezik. Egy táblában annyi tulajdonság tárolódik, amennyi a sorok és oszlopok halmazának Descartes-szorzata, ezért mondhatjuk, hogy a tábla sorok és oszlopok relációja. A modell neve innen származik.

21. ábra A tábla szerkezete

Domain

A domain egy tulajdonság lehetséges értékeinek halmazát, azaz értékkész-letét, és a tárolt értékkel végezhető művelteket határozza meg.

A fenti ábra név oszlopában lévő tulajdonságok közös domainbe tartoznak, hiszen mind szövegek. Az Igazolvány szám oszlop tulajdonságai másik domain elemei. Speciális szövegek, amelyek 8 karakterből állnak, első hat karakterük arab számjegy, az utolsó kettő pedig betű.

Rekord

A rekord a tábla egy sora, a szó tehát az egyed szinonimája. Minden re-kord egy egyed tulajdonságait tárolja. A táblákban tetszőleges számú rere-kord helyezhető el, amelyek sorrendje nem kötött.

Szabály azonban, hogy a táblán belül nem lehet két teljesen azonos mezőértékeket tároló rekord, azaz egy rekord sem szerepelhet több-ször.

Mező

A modellben a mező megnevezést használjuk a tulajdonságtípus szinoni-májaként. A mező a tábla egy oszlopa. A mezők oszlopaiban helyezzük el az egyes rekordokra jellemző tulajdonságokat. A mezők száma szintén nem korlá-tozott.

Az adatszerkezet igen fontos szabálya azonban, hogy egy táblán belül minden rekordban azonosnak kell lennie mezők számának! Nem le-het olyan rekord, amelyikben több vagy kevesebb mező van, mint a többi rekordban.

Mezőérték

A mezőértékek a tárolt tulajdonságok.

Az adatszerkezet előírja, hogy egy mező összes mezőértékének azo-nos domainhez kell tartoznia.

Egy későbbi kivételtől eltekintve a mezők lehetnek üresek. Az üres mezők az adatbázis-kezelés egy speciális értékét, NULL értéket tartalmaznak. A NULL a semmit jelenti. Nem azonos a nullával, vagy a két egymás mellé írt idézőjellel

„”. Az előbbi egy konkrét számot, utóbbi üres szöveget jelent. A NULL jelentését leginkább a következő egyenlőségek mutatják:

0 + 100 = 100 NULL + 100 = NULL

A modell kapcsán említett tábla és reláció szinonim fogalmak, mind-kettő az egyedtípus tárolására használt struktúrát jelöli.

A mezőket szokás attribútumoknak, vagy oszlopnak nevezni, a re-kord helyett a sor, az angol nyelvű irodalomban pedig a tuple szót használni.

Mint láttuk, a modell egyedtípusok modellezésre alkalmas eleme roppant egyszerű felépítésű. Ez csak úgy érhető el, hogy egyes mezők nem pusztán adathordozó, hanem az adatbázis szerkezete szempontjából kiemelkedő funk-cionális szerepet is játszanak.

Kulcs

Mivel egy az előírásoknak megfelelő táblában nem lehet két egyforma re-kord, biztos, hogy létezik a mezőknek olyan részhalmaza, amelyek mezőértékeit kombinálva egyedi értéket kapunk. Az érték alapján teljes biztonsággal, egyér-telműen megkülönböztethetjük a tábla rekordjait. Az ilyen mezőkombinációt nevezzük szuperkulcsnak.

Szélsőséges esetben a tábla összes mezője együtt alkotja a szuperkulcsot, de az esetek többségében rövidebb szuperkulcs is létezik.

A legrövidebb (legkevesebb mezőből álló) szuperkulcsot kulcsjelöltnek hív-juk. Ha több kulcsjelölt is van, akkor ezeket alternáló kulcsoknak titulálhív-juk.

A táblákban elvégzett műveletek esetén fontos, hogy az egyes rekordokra félreérthetetlenül tudjunk hivatkozni. Erre egy kiválasztott kulcsjelölt értékeit használhatjuk. Hogy a hivatkozások egyértelműek legyenek, a tábla tervében előre ki kell jelölni az azonosításra szánt kulcsjelöltet. A rekordok azonosítására kiválasztott kulcsjelöltet elsődleges kulcsnak, vagy azonosítónak nevezzük.

Ha az azonosítót egy mező alkotja, akkor egyszerű, ha több, akkor össze-tett kulcsról beszélünk.

A gyakorlatban ritkán használjuk azonosítóként egy egyedtípus tény-leges tulajdonságait. A leggyakoribb technika az, hogy minden táblá-ba beszúrunk egy új, számok tárolására alkalmas mezőt, és ezt hasz-náljuk azonosítóként. A mezőben úgy biztosítjuk az egyedi értékeket, hogy minden rekordot saját, egyedi sorszámmal látunk el.

A legtöbb adatbázis-kezelő rendszer képes automatikusan elvégezni az ilyen mezők sorszámozását.

Idegen kulcs

Az adatmodell egyes táblái az egyedtípusok közötti viszonyoknak megfele-lően kapcsolódnak egymáshoz. Két tábla kapcsolata esetén az egyik táblát el-sődleges, a másikat kapcsolódó táblának hívjuk.

A relációs adatmodellben a kapcsolódó táblában elhelyezett speciális funk-ciójú mezőkkel, az úgynevezett idegen kulcsokkal írjuk le a táblák kapcsolatát.

Az idegen kulcs egy kapcsolódó tábla olyan mezője, amely az elsődleges tábla kulcsának értékeit tárolja, így teljes biztonsággal megmutatja, hogy egy rekord a másik tábla melyik rekordjához kapcsolódik.

A relációs adatmodellben két közvetlenül kapcsolódó tábla csak 1:1, vagy 1:n típusú kapcsolatban lehet.

Az n:m kapcsolat esetén mindenképpen többértékű lenne az idegen kulcs, a relációs adatmodell azonban csak atomi értékek tárolását teszi lehetővé, a többértékű mezők használata tilos. A következő leckében látni fogjuk, hogy egy úgynevezett kapcsoló tábla közbeik-tatásával mégis van lehetőség az n:m kapcsolatok tárolására.

Származtatott táblák

A relációs adatmodell tényleges tábláit bázisrelációknak nevezzük. Az adatbázisban különböző műveleteket végzünk a bázisrelációkkal. Segítségükkel előállíthatjuk például a bázistábla mezőinek és rekordjainak részhalmazát. A létrehozott eredmény is tábla szerkezetű, de sorai és oszlopai bázistáblából származnak, ezért származtatott relációnak nevezzük.

A származtatott relációk mezői, rekordjai és mezőértékei csak a bázis-relációban tárolódnak. A származtatott reláció használatakor az adat-bázis-kezelő rendszer mindig újra és újra kiválogatja a bázistábla meg-felelő mezőit és rekordjait, így a kettős adattárolást elkerülve érhetjük el, hogy ugyanabból a táblából különféle adatokat jeleníthessünk meg.

Például meg akarjuk nézni a helyben lakó dolgozók nevét és telefon-számát. Ilyenkor a dolgozói adatokat tároló táblából kiválogatjuk azokat, akik a céggel azonos településen laknak, a kiválasztottak tu-lajdonságai közül pedig csak a nevet és telefonszámot jelenítjük meg.

22. ábra Bázis- és származtatott reláció

A relációs adatmodell kétféle származtatott táblát, a snapshotot (pillanat-felvételt) és a view-t (nézetet) különbözteti meg.

Snapshot

A művelet eredményeként létrehozott származtatott relációt eredményre-lációnak is nevezzük. Az eredményrelációkban megjelenő adatokat általában nem megváltoztatni, csak megjeleníteni szeretnénk.

A snapshot olyan származtatott reláció, amelynek eredményreláció-jában megjelenő mezőértékek nem változtathatók meg, és nem táro-lódnak újra az adatbázisban. A pillanatfelvételek csak olvashatók.

View

Előfordulhat, hogy eredményrelációt rendszeresen meg akarunk jeleníteni, és a bázisrelációval hasonló módon akarunk kezelni Nemcsak megtekinteni, hanem szükség esetén változtatni az akarunk az adatokon. Ilyenkor lehetnek hasznosak a view-k, más szóval nézetek.

Például lehetővé akarjuk tenni, hogy az egyes osztályvezetők csak saját beosztottaik rekordjait lássák, de azokon bármilyen művele-tet elvégezhessenek.

A nézet olyan származtatott reláció, amely a felhasználók előtt bázis relációként jelenik meg. Eredményrelációja olvasható és írható, a vál-toztatások aktualizálódnak az érintett bázistáblában. A nézeteket más néven virtuális tábláknak is hívjuk.

Séma

A séma egy leendő relációs adatbázis teljes logikai modellje. Tartalmazza a táblák, a kapcsolatok és a nézetek modelljét.