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.