500 likes | 628 Views
NYME Informatika Intézet. Számítógépes alkalmazások 5. előadás. Adatbázis-kezelő rendszerek. Tartalom. Adatbázis fogalma Adatbázis-kezelő rendszerekkel szembeni elvárások Repülőgép helyfoglalás Banki rendszerek Vállalati nyilvántartások Relációs adatbázisok – számlák példa
E N D
NYME Informatika Intézet Számítógépes alkalmazások 5. előadás
Tartalom • Adatbázis fogalma • Adatbázis-kezelő rendszerekkel szembeni elvárások • Repülőgép helyfoglalás • Banki rendszerek • Vállalati nyilvántartások • Relációs adatbázisok – számlák példa • Adatbázis-kezelő rendszerek felépítése • Adatok, metaadatok, indexek • A tárkezelő feladata • A lekérdezés-feldolgozó feladata • A tranzakció-kezelő feladata • Adatbázis-tervezés • Adatbázis-programozás • Adatbázis-megvalósítás • Az ACCESS adatbázis objektumai • ACCESS definíciók • ACCESS lekérdezés típusok
Adatbázis Mi egy adatbázis? • A valós világ egy meghatározott részének leírásá-hoz használt, adott formátumú és rendszer szerint tárolt adatok (adatelemek) együttese. • Olyan adatok együttese, amit egy adatbázis-kezelő rendszer kezel (tárol, lekérdez, módosít)
Adatbázis-kezelő rendszerekkel szembeni elvárások • Tegye lehetővé új adatbázisok létrehozását, az adat-bázis logikai struktúrájának (sémájának) egy speci-ális nyelven (adatdefiníciós nyelv) való megadását. • Biztosítsa, hogy a felhasználók az adatokat egy meg-felelő nyelv (adatmanipulációs nyelv, lekérdező nyelv) segítségével lekérdezhessék, módosíthassák.
Adatbázis-kezelő rendszerekkel szembeni elvárások • Támogassa nagyon nagy mennyiségű adat hosszú időn keresztül történő tárolását. Garantálja az adatok biztonságát a meghibásodá-sokkal és az illetéktelen felhasználókkal szemben. Tegye lehetővé a hatékony adathozzáférést a le-kérdezések és módosítások számára.
Adatbázis-kezelő rendszerekkel szembeni elvárások • Támogassa több felhasználó egyidejű munkáját. Figyelje a több felhasználó által egy időben törté-nő adathozzáféréseket úgy, hogy azok ne vezes-senek az adatok hibássá vagy következetlenné válásához.
Első adatbázis-kezelő rendszerek • 60-as évek végén jelentek meg. • Nem támogattak semmilyen magas szintű lekérde-ző nyelvet. • Első jelentős alkalmazási területek azok a rendsze-rek voltak, amelyekben sok kis adatelem szerepelt és a rendszerben sok lekérdezés és módosítás volt.
Repülőgép helyfoglalás Adatelemek: • Egy vevő helyfoglalása egy adott járatra (ülőhely, választott menü). • Járatokra vonatkozó információ (indulás, érkezés, honnan, hová, repülőgép). • Jegyárak, előjegyzések, még kapható jegyek.
Repülőgép helyfoglalás Lekérdezések: • Egy adott városból egy másikba mely járatok indul-nak egy hozzávetőlegesen megadott időpontban. • Mely ülőhelyek szabadok. • Mennyi egy jegy ára.
Repülőgép helyfoglalás Adatmódosítások: • Egy vevő helyfoglalása egy adott járatra. • Egy ülőhely kiadása. • Egy menüválasztás bejegyzése.
Banki rendszerek Adatelemek: • Ügyfelek nevei és címei. • Folyószámlák és hitelszámlák egyenlegei. • Az ügyfelek és a számlák között fennálló kapcso-latok (pl. kinek melyik számla felett van aláírási joga).
Banki rendszerek Lekérdezések: • Egy adott számla egyenlege. Adatmódosítások: • Egy adott számlára vonatkozó befizetés vagy ki-fizetés.
Vállalati nyilvántartások Adatelemek: • Eladásokra vonatkozóak. • Kimenő és bejövő számlákra vonatkozóak. • Dolgozókra vonatkozóak (név, cím, fizetés, nye-reség-részesedés).
Vállalati nyilvántartások Lekérdezések (jelentések): • Kinnlevő számlák. • Dolgozók havi fizetése. Adatmódosítások: • Minden egyes eladás, vásárlás, számlakibocsátás, számlakifizetés. • Dolgozók felvétele, elbocsátása, előléptetése.
Adatbázis-kezelő rendszerek Kezdetben egyedi programok készültek az egyes válla-latoknál a különböző adatok nyilvántartására. A tömeges alkalmazási igény kikényszerítette az adat-formátumok szabványosítását, és általános célú adatbá-ziskezelő szoftverek kifejlesztését.
Relációs adatbázis-kezelők E. F. Codd: A relational model of data for large shared data banks. Communications of the ACM, 13 (1970), 377-387. Az adatokat a felhasználók felé táblázat (reláció) for-májában jelenítjük meg (a háttérben persze bonyolult struktúrák is lehetnek). A lekérdezések magas szintű nyelv segítségével való-sulnak meg, amely jelentősen növeli az adatbázis programozók hatékonyságát.
Relációsadatbázisok Számlák
Relációs adatbázisok Számlák nevű reláció Attribútumok (oszlopok, mezők): számlaszám, egyenleg, típus Lekérdezés (SQL): SELECTegyenleg FROM Számlák WHEREszámlaszám = 67890;
Relációs adatbázisok • Vizsgáld meg a FROM után szereplő reláció min-den sorát. • Válaszd ki azokat a sorokat, amelyek a WHERE után megfogalmazott követelményeknek eleget tesznek. • Add meg eredményként ezeknek a soroknak a SELECT után megadott attribútumait.
Relációs adatbázisok Még egy lekérdezés (SQL): SELECTszámlaszám FROM Számlák WHEREtípus='betétszámla'ANDegyenleg < 0;
Relációs adatbázisok A gyakorlatban a rendszernek optimalizálnia kell a lekérdezést: hatékony végrehajtási módot kell találni még akkor is, ha a lekérdezésben szereplő relációk nagyon nagyok. Az IBM volt az első olyan cég, amely relációs adat-báziskezelő rendszereket árusított. Ma is a relációs adatbázis-kezelő rendszerek a legel-terjedtebbek a piacon.
Adatbázis-kezelő rendszerek felépítése „Lekérdezés”- feldolgozó Tranzakció- kezelő Tárkezelő Adatok, metaadatok
Adatok, metaadatok Az ábra alján az adatok tárolására szolgáló hely látható. Ez a rész nem csak adatokat, hanem metaadatokat is tar-talmaz, ami az adatok szerkezetét írja le (relációs adat-báziskezelő esetén a relációk nevei, attribútumok nevei, attribútumok típusai).
Indexek Az adatbázis-kezelő rendszerek gyakran indexeket hasz-nálnak az adatok elérésére. Az index olyan adatstruktúra, amely lehetővé teszi, hogy az adatelemeket gyorsan megtaláljuk, ha ismerjük a hoz-zá tartozó értékek bizonyos részét.
Indexek A leggyakrabban előforduló példa olyan index, ame-lyiknek a segítségével egy reláció azon sorait keres-hetjük meg, amelyekben az egyik attribútum értéke adott. Az indexek a tárolt adatok közé tartoznak, viszont az, hogy mely attribútumokra léteznek indexek, a meta-adatok részét képezik.
Tárkezelő A tárkezelő feladata a kért információk beolvasása a tá-rolóhelyről, illetve az adatok módosítása, ha a felette ál-ló rendszerszintek ilyen irányú kérést fogalmaznak meg. Lehetne az operációs rendszer fájlkezelő része is, de a hatékonyság érdekében az adatbázis-kezelők általában közvetlenül felügyelik az adatok lemezen való tárolását.
Tárkezelő A tárkezelő két részből áll: • Fájlkezelő: fájlok lemezen való elhelyezkedését tartja nyilván, az állomány blokkjait írja/olvassa ha a puffer-kezelő erre kéri. • Pufferkezelő: a fájlkezelő segítségével adatblokkokat olvas be a lemezről és kiválaszt egy memóriaterületet, ahol az adott blokkot tárolni fogja; Egy lemezblokkot a memóriában tarthat egy ideig, de ha a blokk által foglalt memóriára egy másik blokknak van szüksége, akkor a blokkot visszaírja a lemezre.
Lekérdezés-feldolgozó A lekérdezés-feldolgozónak nevezett egység feladata, hogy a lekérdezéseket, illetve egyéb adatbázis-műveleteket (adatok és metaadatok módosítása), amelyek gyakran egy magas szintű nyelven vannak megfogalmazva, egyszerű utasítások sorozatává alakítsa. Gyakran a lekérdezés-feldolgozás legnehezebb része a le-kérdezés optimalizálása, vagyis egy megfelelő végrehajtási terv kiválasztása.
Példa Tegyük fel, hogy egy bank adatbázisában a követke-ző két reláció található: Az ÜGYFELEK reláció tárolja az egyes ügyfelek ne-vét, címét és személyi azonosítóját. A SZÁMLÁK reláció tárolja az egyes számlák szám-laszámát, egyenlegét és a számla tulajdonosának sze-mélyi azonosítóját (feltesszük, hogy minden számlá-nak csak egy tulajdonosa van).
Példa A következő kérdésre szeretnénk választ kapni: Adjuk meg az összes számla egyenlegét, amelynek tulajdonosa Kovács István. Egy meglehetősen költséges terv a következő: Nézzük végig az ÜGYFELEK táblát, amíg meg nem találjuk Kovács Istvánt (remélhetőleg csak egy van), majd a SZÁMLÁK táblából gyűjtsük ki azokat a sorokat, amelyekben Kovács István személyi azonosítója szerepel.
Példa Ha az ÜGYFELEK táblához van indexünk az ügyfél nevére, akkor az első fázis gyorsan megy. Ha a SZÁMLÁK táblához is van indexünk, méghoz-zá a személyi azonosítóra, akkor a második fázis sem tart sokáig. Általában 8-10 lemezolvasásnál nincs többre szükség, ha mindkét index rendelkezésre áll, ellenkező esetben viszont több százezer lemezolvasásra is szükség lehet.
Lekérdezés-feldolgozó Bár ebből a példából úgy tűnhet, hogy egy lekérdezés optimalizálása mindössze annyiból áll, hogy használ-junk indexeket, ha léteznek, valójában a dolog ennél sokkal összetettebb. A bonyolult lekérdezések sokszor lehetővé teszik, hogy átrendezzük az elemi műveleteket, és így nagyon sok végrehajtási terv adódik.
Tranzakció-kezelő A tranzakció-kezelő rész felelős a rendszer sértetlen-ségéért. Ennek kell biztosítania, hogy az egy időben futó lekérdezések és módosítások ne ütközzenek össze egymással, és hogy a rendszer még rendszer-hiba esetén se veszíthessen adatokat.
Tranzakció-kezelő A tranzakció-kezelő kapcsolatot tart a lekérdezés-feldolgozóval, hiszen a konfliktusok elkerüléséhez tudni kell, hogy az aktuális lekérdezések éppen mely adato-kon dolgoznak, és épp a konfliktusok megakadályozá-sáért késleltethet bizonyos műveleteket (zárolás). Kapcsolatot tart a tárkezelővel is, mert az adatok védel-mére szolgáló módszerek többnyire magukban foglalják a módosítások naplózását.
Tranzakció-kezelő Az adatbázis-kezelők többnyire megengedik a felhasz-nálóknak, hogy egy vagy több lekérdezést vagy módo-sítást egy tranzakcióba csoportosítsanak. A tranzakció tulajdonképpen olyan műveletek egy cso-portja, amelyeket egymás után egy egységként kell vég-rehajtani. Az adatbázisrendszerek gyakran sok tranzakció egyide-jű végrehajtását engedik meg, ezek helyes lefutásának biztosítása is a tranzakció-kezelő feladata.
Tranzakciók A tranzakciók „helyes” lefutásával szembeni elvárá-sokat négy pontban szokták összefoglalni: • Atomosság. Megköveteljük, hogy egy tranzakció vagy teljes egészében hajtódjon végre, vagy sem-mi ne hajtódjon végre belőle. Például az automatából történő pénzfelvétel és a hozzá kapcsolódó megterhelés az ügyfél számlá-ján egyetlen atomi tranzakciót kell, hogy alkosson.
Tranzakciók • Következetesség. Egy adatbázisban akkor beszélhe-tünk a következetes állapot fogalmáról, amikor az adatok megfelelnek bizonyos elvárásoknak (feltételek-nek).
Tranzakciók Például egy repülőgép-helyfoglalási adatbázisban egy megfelelő következetességi feltétel, hogy egyetlen ü-lőhelyet se rendeljünk hozzá két különböző utashoz. Noha ezt a feltételt megsérthetjük a tranzakció alatt (pl. utasok átrendezése), a tranzakció-kezelőnek biz-tosítania kell, hogy a tranzakció befejezése után az adatbázis ismét következetes állapotba kerüljön.
Tranzakciók • Elkülönítés. Amikor két vagy több tranzakció egyi-dejűleg fut, azok kihatását el kell különíteni egymás-tól. Ez azt jelenti, hogy semmiféle olyan eredményt vagy kihatást nem tapasztalhatunk az adatbázisban, amit a két tranzakció egyidejű futása okozott, és ami nem fordult volna elő, ha a két tranzakció egymás után fut le.
Tranzakciók Például ha két ügynök éppen ugyanarra a járatra ad el jegyet és a járaton már csak egy hely van, akkor az e-gyik kérést teljesíteni kell, a másikat pedig vissza kell utasítani. • Tartósság. Ha egy tranzakció befejeződött, akkor an-nak eredménye nem veszhet el rendszerhiba esetén sem, még akkor sem, ha a rendszer közvetlenül a tranzakció befejezése után hibásodik meg.
Adatbázis-kezelő rendszerek Az ábra tetején három különböző fajta input látható: • Lekérdezések (adatokra vonatkozóan): • Egy általános lekérdező-interfészen keresztül. Például a rendszer megengedi SQL lekérdezé-sek begépelését. • Egy alkalmazói program interfészén keresztül. Általában nem tehetünk fel akármilyen kérdést, de amit igen, azt általában egyszerűbben tehet-jük meg (mezők kitöltése ACCESS-ben).
Adatbázis-kezelő rendszerek • Módosítások (adatokra vonatkozóan): hasonló, mint a lekérdezéseknél. • Sémamódosítások: az ezekre vonatkozó utasításokat csak az arra illetékes személyek, az adatbázis admi-nisztrátorok adhatják ki.
Adatbázis-kezelő rendszerekkel kapcsolatos főbb tevékenységek Adatbázis-tervezés • Hogyan alakítsunk ki egy jól használható adatbázist? • Mely információk kerüljenek be az adatbázisba? • Milyen legyen az adatok szerkezete? • Milyen feltételezésekkel éljünk az adatelemek típusára és értékeire vonatkozóan? • Hogyan kapcsolódjanak egymáshoz az adatelemek?
Adatbázis-kezelő rendszerekkel kapcsolatos főbb tevékenységek Adatbázis-programozás • Hogyan fejezzük ki az adatbázisra vonatkozó lekérde-zéseket és egyéb műveleteket? • Hogyan használjuk ki az adatbázis-kezelő rendszerek egyéb lehetőségeit, mint amilyenek a tranzakciók vagy a triggerek (ellenőrző procedurák)?
Adatbázis-kezelő rendszerekkel kapcsolatos főbb tevékenységek Adatbázis-megvalósítás • Hogyan készítsünk el egy adatbázis-kezelő rendszert? • Hogyan valósítsuk meg a lekérdezés-feldolgozót, a tranzakció-kezelőt? • Hogyan szervezzük meg az adatok tárolását, hogy az adathozzáférés hatékony legyen?
Az ACCESS adatbázis objektumai • TÁBLA: Az adatokat tárolja (reláció). • LEKÉRDEZÉS: Szelektálja, rendezi, elemzi, módosítja az adatokat, új táblát hozhat létre. Jelentések, űrlapok alapját képezheti. • ŰRLAP: Adatok bevitele, megjelenítése és módosítása rekordonként, diagram. • JELENTÉS: Táblák és lekérdezések adatait összegzi elemzés, nyomtatás végett. • MAKRÓ: Műveletsort tárol automatikus végrehajtáshoz. • MODUL: ACCESS Basic programot tartalmaz.
Fogalom-definíciók • REKORD: az adattábla egy sora (egy entitásra vonatkozó adatokkal) • MEZŐ: az adattábla egy oszlopa (azonos típusú adatokkal - attributum) • MEZŐNÉV: az adatoszlop elnevezése • INDEX: olyan mező (oszlop), mely szerint a szűrést felgyorsítjuk • KULCS: olyan indexelt mező, melyben nincs két agyforma érték
Fogalom-definíciók • KIFEJEZÉS: képlet, mely az adattábla adataiból új információt vezet le • KIFEJEZÉS-SZERKESZTŐ: olyan eszköz, mellyel egyszerűen hozhatók létre képletek • SZÁMÍTOTT MEZŐ: az adattábla olyan oszlopa, melyet kifejezés állít elő. Ennek kiszámítása csak futtatással (jele „!”) lehetséges • SZŰRÉS: rekordok (sorok) szelekciója, melynek logikáját a szűrési feltétel írja elő
Lekérdezés típusok • Módosító: átírja az adattábla adatait • Törlő: rekordokat (sorokat) töröl a táblából • Választó: új táblát hoz létre levezetett adatokból • Tábla-készítő: mint a választó, de az eredmény valódi tábla lesz • Kereszttáblás: sor és oszlopfejléccel kombinált összesítő lekérdezés • Hozzáfűző: egyik táblából másikba tehetünk át rekordokat