• Nem Talált Eredményt

Egy adatbázis rendszer felépítésének három fo szintje van:

• zikai réteg;

• logikai réteg;

• külso (felhasználói) réteg.

A szintek elválasztásának célja a zikai adatfüggetlenség elérése, valamint a felhasználói kényelem. A27.2. ábrán a három nézet lehetséges felhasználói felületeket mutat: multirelá-ciós, univerzális relámultirelá-ciós, illetve grakus felület.

A zikai réteg a ténylegesen tárolt adatállományokat, a rájuk épített suru és ritka inde-xeket jelenti.

A logikai réteg elválasztása a zikai rétegtol lehetové teszi, hogy a felhasználó az ada-tok logikai összefüggéseire koncentráljon, ami sokkal jobban közelíti a modellezni kívánt valóságról alkotott képét. A logikai réteghez tartozik az adatbázis séma leírása a különbözo integritási feltételekkel, függoségekkel. Ez az a szint, ahol az adatbázis adminisztrátorok ke-zelik a rendszert. A logikai és a zikai réteg közti kapcsolatot az adatbáziskezelo program tartja fent.

A külso réteg és a logikai réteg elválasztásának célja, hogy a végfelhasználók az adat-bázist a saját (szuk) igényeik és szempontjaik szerint lássák. Például egy banki adatbázis

3. Nézet 2. Nézet

1. Nézet

Logikai réteg

Fizikai réteg Külsõ réteg

27.2. ábra. Az adatbázis rendszerek felépítésének három szintje.

esetén a külso réteg egyik nagyon egyszeru nézete lehet a pénzkiadó automata, vagy egy jóval bonyolultabb nézete lehet kölcsön igénylés elbírálásához az ügyfél teljes banki kredit története.

27.2.1. Nézet, mint lekérdezés eredménye

Kérdés az, hogy a külso réteghez tartozó nézeteket hogyan adhatjuk meg. Ha egy relációs algebrai kifejezéssel adott lekérdezést úgy tekintünk, mint valamely formulát, amit majd re-láció példányokra alkalmazunk, akkor kapjuk a nézetet. Datalog szabályok jól szemléltetik a lekérdezések és nézetek közti különbséget. A szabályok által meghatározott relációkat in-tenzionálisnak neveztük, mivel ezek azok a relációk, amelyeknek nem kell külso tárolókon, extenzionálisan létezniük, szemben az extenzionális relációkkal.

27.21. deníció. Az R séma feletti valamelyQlekérdezési nyelven megadottVkifejezést R séma feletti nézetnek nevezünk.

Természetesen datalog intenzionális relációkhoz hasonlóan nézeteket is használhatunk le-kérdezések megadásakor, illetve újabb nézetek meghatározásakor.

27.7. példa. SQL nézet. Az SQL adatbázis-kezelo nyelvben az alábbi módon lehet né-zetet megadni. Tegyük fel, hogy a PestiMusor sémából számunkra érdekes adat csak annyi, hogy mikor és hol játszanak Kuroszava lmeket. A KuroszavaIdopontok nézetet

KI

1 create view KuroszavaIdopontok as 2 select Mozi, Idopont 3 from Filmek, Musor

4 where Filmek.Cím=Musor.Cím and Filmek.Rendezo="Kuroszava Akira"

SQL program deniálja. Relációs algebrai alakban a következo.

KuroszavaIdopontok(Mozi, Vetítés)=πMozi,Vetítés(MoziZσRendezo="Kuroszava Akira"(Filmek)) (27.38) Végül datalog szabállyal ugyanez

KuroszavaIdopontok(xM,xV) ← Mozik(xM,xC,xV),Filmek(xC,"Kuroszava Akira",xS z). (27.39) A KI eljárás 2. sora jelöli ki a használt szelekciós operátort, a 3. sor, hogy melyik két relációt kell összekapcsolni, végül a 4. sor feltétele mutatja meg, hogy természetes összekapcsolásról van szó, nem pedig direkt szorzatról.

Amennyiben aVnézetet már deniáltuk, akkor a további lekérdezésekben, illetve nézet deníciókban ugyanúgy alkalmazható, mint akármilyen másik (extenzionális) reláció.

Nézetek használatának elonyei

• Adatok automatikus elrejtése: Olyan adatok, amelyek nem részei a használt nézetnek nyilván nem is jelennek meg a felhasználó elott, így azokat nem is olvashatja illetékte-lenül, illetve nem is módosíthatja. Tehát azzal, hogy az adatbázis hozzáférést nézeteken keresztül engedjük meg, egyszeru, de hatékony biztonsági mechanizmust üzemeltetünk.

• Nézetek egyszeru “makró képességet” szolgáltatnak. A 27.7. példában deniált Ku-roszavaIdopontok nézet használatával könnyedén meg tudjuk keresni melyik moziban adnak délelott Kuroszava lmet:

KuroszavaDélelott(Mozi) ← KuroszavaIdopontok(Mozi,xV),xV <12. (27.40) Természetesen a felhasználó beírhatná a kódba a KuroszavaIdopontok denícióját köz-vetlenül, de a makró utasításokkal szoros hasonlatosságban, itt is a kényelmi szempon-tok az elsok.

• A nézetek lehetové teszik, hogy ugyanazt az adatot különbözo felhasználók különbözo módon lássák ugyanabban az idoben.

• Nézetek biztosítják a logikai adatfüggetlenséget. A logikai adatfüggetlenség lényege, hogy a felhasználók és programjaik védettek legyenek az adatbázis séma szerkezeti változtatásaitól. Ezt úgy lehet elérni, hogy a szerkezet–változtatás elotti relációkat mint nézetek deniáljuk a szerkezet változtatás utáni új sémában.

Materializált nézet

Elofordulhat, hogy valamely nézetet több különbözo lekérdezésben is használunk. Ilyen esetekben hasznos lehet ha nézet által meghatározott reláció(k) sorait nem kell minden eset-ben újra kiszámolnunk, hanem a nézet deníciójában szereplo lekérdezés eredményét tá-roljuk, és a további feldolgozásokkor csak beolvassuk. Az ilyen tárolt eredményt nevezzük

materializált nézetnek.

Gyakorlatok

27.2-1. Tekintsük az alábbi sémát:

Filmsztár(Név,Cím,Nem,SzülDátum) FilmMogul(Név,Cím,Igazolvány#,Vagyon) Stúdió(Név,Cím,ElnökIg#)

A FilmMogul reláció a lmszakma nagymenoinek (stúdió elnökök, producerek, stb) adatait tartalmazza. Az egyes attribútumok nevei értelemszeruen megadják jelentésüket, illetve az Igazolvány# a mogul muködési engedélyének száma, az ElnökIg# a stúdió elnöke muködési engedélyének száma. Adjuk meg az alábbi nézeteket datalog szabállyal, relációs algebrai kifejezéssel, illetve SQL nyelven:

1. GazdagMogul: a legalább 100,000,000 forint vagyonú lmmogulok nevét, címét iga-zolvány számát és vagyonát listázza.

2. StúdióElnök: az olyan lmmogulok nevét, címét igazolvány számát listázza, akik stúdió elnökök is egyben.

3. MogulSztár: az összes olyan személy nevét, címét igazolvány számát és vagyonát lis-tázza, aki egyszerre lmsztár és lmmogul is.

27.2-2. A PestiMusor séma felett adjuk meg az alábbi nézeteket datalog szabállyal, relá-ciós algebrai kifejezéssel, illetve SQL nyelven:

1. Marilyn(Cím): Marilyn Monroe szereplésével készült lmek címét listázza.

2. CorvinInfo(Cím,Idopont,Telefon): a Corvin moziban játszott lmek címét, vetítési ido-pontjait, valamint a mozi telefonszámát listázza.