Adatbázisrendszerek BEVEZETÉS A valós világban vannak dolgok, amelyek viselkednek, hatnak egymásra, kapcsolatban vannak. Ezek rendszert alkotnak. RENDSZER: Közös ismérv alapján összetartozó, egymással meghatározott kapcsolatban lévő elemek jól körülhatárolt együttese. Egyértelműen meg tudom mondani, hogy mi tartozik bele. Az elemek egyenként is vizsgálhatók, de a lényegi a rendszernél a kölcsönhatások is viszonylagosak. A rendszer körülhatárolása viszonylagos - attól függ hol húzom meg a határt, és hogy mit vizsgálok és milyen mélységben. Az elemek vizsgálata maga is viszonylagos. Egy elem önmaga is alkothat rendszert, ekkor a rendszer részrendszere. A valós világ rendszerei: • Komplexek , mert egy rendszerhez sok elem tartozhat, és az elemek közötti kapcsolatok nagyon bonyolultak lehetnek. • Dinamikusak , abban az értelemben, hogy az elemek viselkedése időben változik. • Nyíltak , abban az értelemben, hogy a rendszerek is hatnak egymásra. A valós világ rendszereit a komplexitás miatt nehéz teljes egészében vizsgálni, ezért absztrakciós módszerrel létrehozzuk az adott rendszer modelljét, és a modellt vizsgáljuk. (Absztrakció : a lényeges elemek összegyűjtése, a lényegtelenek elhanyagolása.) Az elemek tulajdonságait adatokkal írjuk le, ezek viszonylag stabilak. Az elemek viselkedését, kölcsönhatását alprogramokkal írjuk le. Ez alapján megkülönböztetünk adat- és eljárásmodellt.
ADATBÁZISRENDSZER A 60'-as évek elején a programnyelvekbe beépített eszköztár arra volt elegendő, hogy állományokat kezeljenek. (PL/1) A 60'-as évek második felében számos probléma merült fel: • Egy adott programban adott szerkezetű állományt kezelhetek. Ha az állomány szerkezete megváltozik, akkor át kell írni a programot. • Egyedi alkalmazások vannak. Azaz ha valaki egy adott állományt használni akar, akkor az adott áll. kezelőprogramját kell használnia. • Ha állományt akarok kezelni, akkor meg kell tanulnom egy adott programnyelv erre alkalmas eszközrendszerét. • Csak minimális automatikus adatvédelem van. (Illetéktelen hozzáférés ellen jogosultság , és adatsérülés ellen.) • Az adatokhoz való konkurens hozzáférést az állománykezelő nem biztosítja.
A 60'-as évek második felében az IBM-nél kialakul egy új adatbázis-kezelési módszer és eszköz-tár, így születik meg az adatbázis-kezelés fogalma. 1970 - Az első adatbázis-kezelő rendszer : ISM A CODASYL-on belül megalakul egy csoport, a DBTG (Data Base Task Group), ami a felvetett problémákra dolgoz ki elveket. Ennek eredményeképp 1971-ben megszületik a CODASYL DBTG jelentés (Innen számítjuk ténylegesen az adatbázis-kezelés fogalmát.) • Egy adatbázis-kezelő szoftvernek összetett logikai adatrendszereket kell tudni kezelnie. Többet egyszerre! • Megfogalmazza az irányított redundancia fogalma. (Redundancia: egy adatot többször tárolunk.) • Redundáns tárolás konzisztencia-problémát okoz. • Ha egy adathalmaz belső ellentmondásos, akkor inkonzisztens, egyébként konzisztens. • A CODASYL tiltja a redundanciát, de a feldolgozás gyorsítása érdekében megengedi akkor, ha kézben lehet tartani. • Konkurens hozzáférést kell biztosítania az adatbázis-kezelő rendszernek. • Többféle elérési módot kell támogatnia egy időben. • Támogasson többféle programozási nyelvet. (Lehessen programozni) • Támogassa az emberi logikát szemben a gépivel. • A jogosultság szempontjából lényeges, hogy egy adatmodell szemléletet valósítson meg - nézeteket lehessen kezelni. (Egy felhasználó csoport csak bizonyos adatokhoz férjen hozzá.) • Visszaállítható legyen - ha sérül az adat (inkonzisztens állapotba kerül a rendszer), akkor azt lehessen felismerni, és helyreállítani. • Adat-program függetlenség logikai és fizikai szinten. Logikai szinten: Ha az adatok szerkezete megváltozik, ne kelljen a program szerkezetét megváltoztatnom. Fizikai szinten: Egy adott program tudja feldolgozni az adathalmazt függetlenül attól, hogy hol van fizikailag. Az adatmodellezés 3 szinten történik: • Koncepcionális szint - teljesen absztrakt, számítógép független, azaz nem függ sem a szoftvertől, sem pedig az operációs rendszertől • Logikai szint - a logikai tervezésnél kerül be konkrétan az adatbázis kezelő rendszer • Fizikai szint - a teljes fizikai megvalósítás Tranzakció: Valamilyen értelemben összetartozó műveletsorozat, melyeket adatokon hajtunk végre.
Koncepcionális tervezés A koncepcionális adatmodell modellje: ETK Egyed-Tulajdonság-Kapcsolat Entity-Attribute-Relationship Mindhárom fogalmat értelmezzük típus <-> előfordulás szinten. EGYED: a valós világ elemeinek absztrakciója.
pl.: Egyetem rendszerben HALLGATÓ( NÉV, LAKCÍM, SZÜLETÉSI_HELY, SZAK) A fontos és lényeges tulajdonságok teszik egyeddé. EGYEDTÍPUS: egy absztrakció. A tulajdonságtípusok határozzák meg. EGYED-ELŐFORDULÁS: Egyed konkrétan megadva. Rögzített számú tulajdonságot tartalmaznak. Fontos a konkrétság. Két egyedtípus akkor különbözik, ha legalább egy tulajdonságtípusuk különbözik, egyébként azonosak. Két egyed-előfordulás akkor különbözik, ha legalább egy tulajdonságelőfordulásukban különböznek. Azon tulajdonságtípusok együttesét, amelyek előfordulásai minden egyed-előfordulásnál mások / egyediek, az adott egyedtípus AZONOSÍTÓjának nevezzük. Kötelező, hogy létezzen azonosító. Az azonosító lehet egyszerű és összetett. KAPCSOLAT: egyedtípusok közötti viszony leírása. Két egyedtípus kapcsolatban van egymással, ha van közös tulajdonságtípusuk. Ez a KAPCSOLÓ TULAJDONSÁGTÍPUS. Azok a tulajdonságtípusok, amelyek nem kapcsolók és nem azonosítók, azok a LEÍRÓ TULAJDONSÁGTÍPUSOK. Koncepcionális adatmodell: Véges sok egyedtípus, melyek mindegyikét véges sok tulajdonságtípus határoz meg - a közöttük állókapcsolatok együttese ez az adatmodell.
Tulajdonságok / Attributumok Osztályozásai: 1.a. Egyszerű (atomi) atomic, single - Az előfordulások skalárértékűek. b. Összetett composite - Strukturált típusú értékekkel rendelkező előfordulások. 2.a. Egyértékű single-valued - Minden egyes előfordulásnál csak egy értéket vehet föl. (pl.: születési_hely) multivalued b. Többértékű vagy halmazértékű - minden előfordulásnál akárhány értéket felvehet. (pl.: nyelvvizsga) 3.a. Tárolt stored - Az egyes előfordulások értékei megjelennek a fizikai adatbázisban. b. Származtatott derived - Értékei nem kerülnek bele a fizikai állományba, más attribútumokkal határozhatjuk meg őket. NULL-ÉRTÉKŰ TULAJDONSÁGTÍPUS : Ha egy adott előfordulásnál nincs értéke, (a tulajdonságtípusnak) akkor mondjuk, hogy NULL-értékű. A NULL-értékű tulajdonságtípus többféle módon előállhat:
* * *
Van érték, csak még nem ismerjük. Nem tudjuk, hogy van-e egyáltalán értéke az előfordulásnak. Az adott előfordulásnak az adott helyen nem lehet előfordulása. A NULL-értéket nem lehet összehasonlítani semmilyen értékkel! A tulajdonságtípusok rendelkeznek értéktartománnyal, ahonnan az értéküket fölvehetik.
Kapcsolatok FOK (degree): hány egyedtípus vesz részt a kapcsolatban. A fok lehet: - bináris - terminális - sokszoros Az ETK modellezés a bináris kapcsolatot szereti. SZÁMOSSÁG (cardilety): Az egyik oldal előfordulásaihoz tartozik-e kapcsolatban neki megfelelő előfordulás a másik oldalon. Kapcsolatban az egyed-előfordulások száma adja a kapcsolat számosságát.
1:1 A kapcsolatban mindkét oldalról egy egyed-előfordulás vesz részt. pl.: Kapcsoló tulajdonságtípus : házastárs neve - 1:1 számosságú kapcsolat
1:N
N:M Ha mindkét oldalról akárhány egyed-előfordulás részt vehet:
SZOROSSÁG: Az egyik vagy másik oldalon az előfordulások közül mennyi vesz részt a kapcsolatban. • Kötelező jellegű, ha mindkét oldalon, minden előfordulásnak részt kell vennie a kapcsolatban. • Félig kötelező, ha az egyik oldalon minden előfordulásnak részt kell vennie a kapcsolatban, a másik oldalon viszont nem. • Opcionális, ha mindkét oldalon lehetnek olyan előfordulások, amelyek nem vesznek részt a kapcsolatban.
REKURZÍV KAPCSOLAT: Speciális bináris kapcsolat. Az egyedtípus önmagával áll kapcsolatban.
ADATBÁZISRENDSZER: A számítógép, az adatok, a kezelő szoftver és az ember együttese. Adatbázisrendszer felépíthető tetszőleges platformon. Általános célú rendszerek alkothatják a hardver komponenst, de léteznek kimondottan adatbázisrendszerhez tervezett számítógép rendszerek. Az adatbázis áll: • Fizikai adatbázis → egyedelőfordulások • Metaadatbázis / adatszótár → Szerkezetre vonatkozó adatok. pl.: a séma leírása, adatkomponens szerkezetének leírása, kapcsolatok leírása Fizikai szinten összetett állományszerkezetek léteznek az adatbázison belül. SZOFTVER: Az adatbázis-kezelő rendszer. Konkrét operációs rendszer környezetben fut, gyakran sok adatkezelő funkciót átvesz az operációs rendszertől. Az adatbázis-kezelő rendszernek van egy olyan komponense, mely lehetővé teszi hogy programozási tevékenységet lehessen végezni. Ez alapján megkülönböztethetők: * Saját nyelvű rendszerek * Befogadó nyelvű rendszerek Saját nyelvű rendszer: A szoftver része a programozási eszközrendszer. (Nem önálló nyelv, imperatív jellegű, eljárás-orientált) Befogadó nyelvű rendszer: A szoftveren belül olyan utasítások vannak, melyekkel az adatbázist manipulálni lehet, de programozni nem. Ezt valamilyen magasszintű programozási nyelv segítségével lehet megvalósítani. Írni kell egy befogadó nyelvű programot, és ezt beépíteni az adatbázis-kezelő utasításai mellé. Ebben az esetben létezik előfordító, amely a az adott nyelven írt programot lefordítja. A CODASYL-rendszerek befogadó nyelvűek voltak, a maiak már mindkét lehetőséget biztosítják. Egy adatbáziskezelő-rendszer olyan eszközrendszert kell tartalmazzon, amely megfelel a nemzetközi szabványnak.
Az ISO 3 szintű szabványa: FELHASZNÁLÓ Alkalmazás
Alkalmazás
Alkalmazás
NÉZET 1
NÉZET 2
NÉZET N Külső szint
Koncepcionális séma
Belső séma
Koncepcionális szint
Belső /fizikai/ szint
NÉZET: adott felhasználó egyszerre nem láthatja a teljes adatbázist, csak egy részét. A külső és koncepcionális szint szétválasztása biztosítja a logikai adat-program függetlenséget. A koncepcionális és belső szint biztosítja a fizikai adat-program függetlenséget. Van olyan embercsoport, amely kevésbé szorosan kapcsolódik az adatbázisrendszerhez: * elemzők * tervezők * alkalmazásfejlesztők Akik szorosan kapcsolódnak: • DBA /Adatbázis adminisztrátor/ Felügyeli az egész adatbázisrendszert, felelős az erőforrások elosztásáért. Ő adja a jogosultságokat, neki minden jogosultsága megvan, a jog tovább adható. A felhasználókkal tartja a kapcsolatot. Az adatbázisrendszer gazdája. • FELHASZNÁLÓK Eseti felhasználók − ad hoc kérdéseket tesznek fel. Interaktív, interpreteres, deklaratív eszközrendszernek kell léteznie, amit az eseti felhasználó használ. Parametrikus (naiv) felhasználók − Azok, akik kész (jól definiált problémát megoldó) alkalmazásokat futtatnak. Ezek az alkalmazások parametrizálhatók. Eljárásorientált, fordítóprogramos eszközrendszer áll a felhasználók rendelkezésére. Szakemberek /kutatók/
− Általában nagyon nagy méretű adathalmazzal dolgoznak. vagy ők írnak alkalmazásokat, vagy már meglévő alkalmazásokat írnak át. (Funkcionális, vagy objektumorientált eszközrendszer áll rendelkezésre.) Hibrid kategória. Egy adatbázisrendszeren belül a legfontosabb erőforrás az adat. Cél: a felhasználók optimális kiszolgálása az adatbázisrendszeren belül. ADATBÁZIS-ÉPÍTÉS LÉPÉSEI 1. Elemzés, tervezés, modellezés megtörténik, így előáll egy séma. 2. A megfelelő eszközrendszerrel leírom a sémát, ez az info az adatszótárba kerül. Ez megadja az üres fizikai adatbázis szerkezetét. Típusszinten dolgozunk, a típusszintű információk kerülnek be a metaadatbázisba. 3. Fizikai adatbázis feltöltése a szerkezetnek megfelelően. (Betesszük az egyedelőfordulásokat.) A karbantartás ugyanazzal az eszközrendszerrel történik, amivel feltöltöttük. 4. Lekérdezés. Az adatbáziskezelő-rendszernek van egy KEZELŐ NYELVe. Ezen belül vannak alnyelvek / utasításcsoportok. • DDL = adatdefiníciós nyelv (Data Definition Language) Azon utasítások, amelyekkel a sémát le tudjuk írni, azaz kezelni tudjuk a metaadatbázist. • DML = adatkezelő nyelv (Data Manipulation Language) Azon utasítások, melyek a fizikai adatbázist kezelik. (Bővítés, törlés, módosítás, csere, lekérdezés) • DCL = vezérlő nyelv (Data Control Language) Tranzakciós és jogosultságokkal kapcsolatos utasítások. Az adatbázissal kapcsolatos alkalmazások vezérlését valósítja meg. • DMCL = eszközvezérlő nyelv A fizikai szint közvetlen vezérlését teszi lehetővé. Manapság nem létezik, de a régi rendszereknél megtalálható. Fontos, hogy az adatbáziskezelő-rendszer milyen felületet nyújt a felhasználó felé.
* * * * *
INTERFACE: karakteres menüs grafikus form-alapú → Speciális, elsősorban parametrikus felhasználók számára. A felhasználó előre definiált képernyőket lát. természetes nyelvű → angol nyelvű
Felhasználó Alkalmazás DBMS Op. rendszer Hardver
DBA
RELÁCIÓS ADATMODELL Codd 1971-ben kidolgozott egy relációs adatmodellezési eszközt. Az elméletére alapozva jött létre a relációs adatmodell, és erre épülve jöttek létre a relációs adatmodellen alapuló relációs adatbáziskezelők. ORACLE - a világ legnépszerűbb relációs adatbáziskezelője. További relációs adatbáziskezelők : SYSBATE , INFORMIX , INGRES A relációs modell is tudja kezelni a hálót. Ennek a modellezésnek teljesen más a fogalomrendszere. A koncepcionális-logikai-fizikai szint teljesen szétválik. Élesen elválnak az absztrakt kezelő nyelvek és a konkrét adatbáziskezelő rendszerek kezelő nyelve. → Több absztrakt kezelő nyelv létezik. D tartomány : atomi értékek egy halmaza. Minden tartomány bármely értékéhez hozzátartozik egy jól definiált atomi adattípus, és egy formátum. Formátum : ahogy az elemek literál formában megjelennek. D - a tartomány neve. Egy reláció séma alatt: R(A1, ... ,An) értjük, ahol R a reláció séma neve, A1, ... ,An pedig attribútumok. Minden attribútum értékeit egy adott tartományból veheti fel. Jele: dom(Ai) Eddigiek alapján: R-egyedtípusnév, Ai -egyedtulajdonság típus. A relációs séma egy absztrakció, egy reláció leírására szolgál. A relációs séma foka az attribútumok száma. (A fenti példa n-edfokú.) Az R(A1, ... ,An) relációs séma alatt azt a r(R)-rel jelölt halmazt értjük, amely halmaz elemei n-esek: r={t1, ... ,tm} Mindegyik ti n db értéknek egy rendezett együttese: ti =
méghozzá úgy, hogy vi∈dom(Ai) i=1,..., n , vagy NULL érték. t - tuple (magyarul rekord) Bármely relációs sémához tetszőleges reláció értelmezhető. r(R) - R reláció séma r relációja nem más, mint az attribútumok tartományaiból alkotott Descartes-szorzat egy részhalmaza. r(R) ⊆ (dom(A1) ⊗ ... ⊗ dom(An)) Különböző attribútumok ugyanazon a tartományon lehetnek értelmezve, de más-más sémában más-más szerepet játszanak. A reláció rekordok halmaza, közöttük sorrend nem értelmezhető, de nem is ismételhető egy sem többször. Ez a koncepcionális szint. A logikai szintű dolgokkal a kezelőrendszer foglalkozik. Logikai szinten a relációk táblákban jelennek meg. A tábláknak egyedi nevű van. A relációk oszlopait az attribútumok címzik, a tábla soraiban helyezkednek el a rekordok. A tábla sorait tetszőlegesen megcserélhetjük, a sorok száma nem kötött. (Ezek a halmazszemlélet miatt vannak.)
A logikai modellben már értelmezhetünk logikai sorrendet, tehát a sorokat bizonyos szempontok szerint rendezhetjük. Fizikai modell : a táblát a reláció valamilyen állományszerkezetben jeleníti meg. (Jell. a szeriális állomány.) A relációs adatbáziskezelők mindig indexelnek, a kedvenc indexelési mód a B+ fa. Az attribútumok sorrendje kötött. Létezik olyan megfogalmazás, ahol az R relációs séma az attribútumok egy halmaza: R{A1, ... , An} Ekkor a megfelelő reláció séma relációja alatt egy olyan halmazt értünk ahol ti : R→D=dom(A1) ∪ ... ∪ dom(An) egy leképezés, és ekkor egy rekord az <érték> párok halmazaként tekinthető. A továbbiakban annál maradunk, hogy az oszlopok sorrendje kötött, így azokra hivatkozhatunk sorszámukkal.
INTEGRITÁSI MEGSZORÍTÁSOK A RELÁCIÓS ADATMODELLBEN • Tartománymegszorítás : a relációs modellben bármely tartomány bármely elemének atominak kell lennie. • A tartomány elemeinek típusaira megszorítás nincs. A rel. adatbáziskezelő rendszerek néhány típust adnak a felhasználó segítségére, és az csak ezeket használhatja fel. • Kulcsmegszorítások : A halmazszemlélet miatt egy rel. séma bármely relációjában szereplő rekordok különbözőek. Nincs két olyan rekord, amelyben az összes attribútum érték megegyezik. Általában igaz viszont az, hogy az attribútumoknak van egy szűkebb részhalmaza, amelyikre szintén igaz az, hogy nincs két olyan rekord, amelyekben "ezen" attribútum értékek megegyeznek. Az ilyen tulajdonságú attribútumokat a rel. modell SZUPERKULCSnak nevezi. Szuperkulcs mindig van. (Mert az összes attribútum együtt garantáltan szuperkulcsot alkot.) Ha van egy szuperkulcs, ami nem tartalmazza az összes attribútumot, akkor hozzávéve még egy attribútumot, még mindig szuperkulcsot kapunk. Attribútumok egy olyan halmazát, amely szuperkulcsot alkot, és ha kiveszünk belőle egy attribútumot, akkor a maradék attribútum már nem alkot szuperkulcsot, KULCSnak nevezzük. A kulcs tehát minimális szuperkulcs. Egy relációs sémának több kulcsa is lehet, ezeket KULCSJELÖLTeknek szokták nevezni. Több kulcsjelölt esetén a modellező dolga, hogy közülük egyet kiválasszon, így ELSŐDLEGES KULCSot hozzon létre. - Egyed integritási megszorítás: előírja, hogy elsődleges kulcs egyetlen értéke, rekordja sem lehet NULL értékű. Az adatbáziskezelő rendszerek megkövetelik az elsődleges kulcs létezését. - Hivatkozási integritási megszorítás : Egy relációs séma két relációja között értelmezzük. R1 R2 két reláció séma. R1 egy FK-val jelölt attribútum együttesét az R1 KÜLSŐ KULCSának hívjuk (Foreign Key), ha 1. FK tartományai ugyanazokkal az attribútumokkal rendelkeznek, mint R2 elsődleges kulcsát alkotó attribútumok tartománya. 2. Az R1-hez tartozó bármely t1 rekord FK-n felvett értékei (t1[FK]), vagy előfordulnak R2 egy relációjához tartozó r={t1, ... ,tm} rekord elsődleges kulcsértékei között, vagy NULL értékű. pl. ÓRAREND , TANTÁRGY - nem jelenhet meg olyan kód, ami a TANTÁRGYban nincs benne.
A relációs adatmodellben ezek az integritási megszorítások vannak. Az egyes adatbáziskezelők további megszorításokat vezetnek be, ezek a SZEMANTIKAI megszorítások. Egy relációs adatbázis séma nem más, mint relációs sémák egy halmaza és integritási megszorítások: S = {R1, R2, ... , Rk} ∧ IM (ri (Ri )) ↑ ↑ egyedtípusok kapcsolatkezelő