Objektum-orientált adatbázisok Alapfogalmak

Slides:



Advertisements
Hasonló előadás
ADATBÁZISOK.
Advertisements

Adatbázis gyakorlat 1. Szerző: Varga Zsuzsanna ELTE-IK (2004) Budapest
C++ programozási nyelv Gyakorlat hét
Adatbázisok SQL. TARTALOM Szijártó M.2 Témakörök  Az SQL tulajdonságai  A műveletek fajtái  Objektum-műveletek  Lekérdezések Tulajdonságok és műveletek.
Programozás III OOP ALAPOK.
Adatbázis kezelés. Hierarchikus modell Legrégebbi modell, ma már nem használatos. Az adatokat fákban tároljuk, ahol minden pont a szegmens adatokat, és.
EE/R adatmodell (Extended E/R) 1 Az objektum orientált szemlélet elterjedésével egyre nőtt az igény az olyan SDM (Semantic Data Model) modellek iránt,
Microsoft Access V. Készítette: Rummel Szabolcs Elérhetőség:
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Programozás alapjai.
Adatbázis-kezelés.
OBJEKTUMORIENTÁLT PROGRAM
16. Tétel. Adatbázis: Olyan adatgyűjtemény, amely egy adott feladathoz kapcsolódó adatokat szervezett módon tárolja, és biztosítja az adatokhoz való hozzáférést,
Bevezetés a Java programozásba
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
Vizuális modellezés Uml és osztálydiagram UML eszközök
Programozás II. 3. Gyakorlat C++ alapok.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Adatbázis rendszerek II.
A Java programozási nyelvSoós Sándor 1/17 Java programozási nyelv 4. rész – Osztályok II. Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai.
Adatbázis-kezelés ACCESS program:
2006. október 2.Markó Tamás, PTE TTK1 Az Oracle SQL 5. Nézettáblák létrehozása, módosítása és törlése.
Osztott alkalmazások kezelése. VIR elosztott architektúra indítékai: - meglévő komponensek integrációja - WEB / Internet elterjedése (nemzetköziség) -
Nézettáblák létrehozása, módosítása és törlése
1 Sramó András Adatbázis-technológia VI. előadás Adatbázis-technológia 6. előadás Objektum-orientált adatbázisok.
Az UML kiterjesztési lehetőségei
Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék
Bevezetés a C++ programozási nyelvbe
XML támogatás adatbázis-kezelő rendszerekben
SQL, Relációs adatmodell
Objektumok. Az objektum információt tárol, és kérésre feladatokat hajt végre. Az objektum adatok (attribútumok) és metódusok (operációk,műveletek) összessége,
Objektumorientált adatbázisok és szabványok Ispány Márton.
Anyagadatbank c. tárgy gyakorlat Féléves tematika Adatbázis alapfogalmak, rendszerek Adatmodellek, adatbázis tervezés Adatbázis műveletek.
Adatbázisrendszerek világa
Dr. Krauszné Dr. Princz Mária Adatbázis rendszerek I.
Készítette: Tóth Ervin
Adatbázis-kezelés JAG,
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Hernyák Zoltán Programozási Nyelvek II.
Hernyák Zoltán Programozási Nyelvek II.
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Objektumorientált programozás
V 1.0 Szabó Zsolt, Óbudai Egyetem, Programozási Paradigmák és Technikák Programozási eszközök Interfészek Generikus.
Adatbázis kezelés. Az adatbázis tágabb értelemben egy olyan adathalmaz, amelynek elemei – egy meghatározott tulajdonságuk alapján – összetartozónak tekinthetők.
Adatbázis kezelés.
Adatbázis-kezelés.
Adatbázis-kezelés Probléma: az excel kezelhetetlen túl sok adat esetén
Egyenesvonalú (lineáris) adatszerkezetek
1 Objektum orientált programozás Öröklődés: többszörös öröklődés, konstruktorok, destruktorok, overloading Nagy Szilvia.
Adatbázis alapfogalmak
Webprogramozó tanfolyam
Adatbáziskezelés. Adat és információ Információ –Új ismeret Adat –Az információ formai oldala –Jelsorozat.
Ficsor Lajos CPP2 / 1 Származtatási mechanizmus a C++ nyelvben Ficsor Lajos Miskolci Egyetem Általános Informatikai Tanszék.
Gyurkó György. Az OO programozás és tervezés története 1960-as évek: SIMULA (véletlen folyamatokat szimuláló programok írása) az OO nyelvek őse 1970-es.
1 Objektum orientált programozás Az objektumok és az osztályok – példányosodás Nagy Szilvia.
Kiterjesztések szemantikája: Szemantikai tartomány : Adatoknak, vagy értékeknek egy nem üres halmazát szemantikai tartománynak nevezzük. Jelölése: D. Egy.
Adatbázisszintű adatmodellek
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
Programozás III JPA.
Bevezetés Adatbázisok használata. Mi is az adatbázis? Az adatbázisok ma már az élet számos területén alapvető fontossággal bírnak (Google, Amazon, Flickr,
A szoftver mint komplex rendszer: objektumorientált megközelítés.
Adatbázis alapismeretek
Kovács Gergely Péter Bevezetés
Hernyák Zoltán Programozási Nyelvek II.
Relációs adatmodell, normálformák
Adatbázis-kezelés 2. Relációs adatbázisok.
Adatbázis-kezelés.
Cattel, Barry: The Object Data Standard: ODMG 3.0, Academic press
Előadás másolata:

Objektum-orientált adatbázisok Alapfogalmak Ispány Márton 2009. November 30.

Változó kihívások az adatbázis rendszerekkel szemben Tradicionális adatmodellek (relációs, hálózatos, hierarchikus) sikere a tradicionális alkalmazásoknál Növekvő igény a komplex adatbázis alkalmazások iránt, pl. CAD/CAM, CIM, telekom, GIS, multimédia Komplex objektum-struktúrák megjelenése, hosszabb futamidejű tranzakciók, új adattípusok (képek, filmek, nagy szöveges állományok) Igény arra, hogy kezelni tudjunk tetszőleges adattípust a hagyományos lekérdező nyelvek megtartásával OO programozási nyelvek elterjedése, a hagyományos adatbázis rendszerek nehézkesen működnek együtt OO nyelvekkel (C++, Java, Smalltalk)

Objektum-orientált (OO) adatbázis rendszerek Object Databases: Objektum-orientált adatbázisok Object Database Management Systems (ODBMS): Objektum-orientált adatbázis-kezelő Fő jellemző: a tervező specifikálni tudja mind a sokszorosan összetett objektumok szerkezetét, mind az ezeken az objektumokon alkalmazható műveleteket

Példák ODBMS-re Objektum-relációs rendszerek: a tradicionális DBMS-ek OO szemlélettel való bővítései (Oracle) Tisztán OO rendszerek kísérleti prototípusai: ORION (MCC), OpenOODB (Texas Instruments), IRIS (HP), ODE (AT T Bell Labs) Kommerciális tisztán OO rendszerek: GEMSTONE/S Object server (GemStone Systems), ONTOS DB, Objectivity/DB, Versant Object Database, ObjectStore, Ardent Szabványosítás az ODMG (Object Database Management Group) konzorcium keretében (ld. később)

OO fogalmak áttekintése Objektum-orientált (OO) szó eredete az OO programozási nyelvekre vezethető vissza SIMULA nyelv (60’s évek vége): az osztály fogalmának bevezetése, egy objektum belső adatstruktúrájának leírása egy osztály deklarációban Absztrakt adattípus fogalmának bevezetése: a belső adatstruktúra elrejtése, az alkalmazható külső műveletek meghatározása (encapsulation – egységbezárás, tokosodás) Első tiszta OO nyelvek egyike: Smalltalk (Xerox PARC), üzenet átadás és öröklődés Hibrid OO nyelvek: C++

Objektum Két komponense van: állapot (érték) és tulajdonság (művelet) (korai definíció) ,,Hasonló’’ a program változójához kivéve, hogy összetett adatstruktúra is lehet és a programozó speciális műveleteket definiálhat rajta Az objektumok az OO nyelvekben tranziensek (átmenetiek), a futás befejeztével törlődnek Az objektumok az ODBMS-ekben perzisztensek (állandóak), eltárolódnak, később kinyerhetőek és megoszthatóak más programokkal Egy ODBMS általában több OO programnyelvhez kapcsolódik állandó és osztott objektumokat szolgáltatva számukra

További jellemzők Direkt kapcsolat a valós világ és az adatbázis objektumai között az OID révén Tetszőlegesen összetett szerkezetű objektum megengedett (minden az objektummal kapcsolatos információ tárolható, míg a relációs adatbázisokban az információ sok relációban szóródik szét) Instance változók: azon értékeket hordozzák, melyek az objektum belső állapotát írják le. Hasonló a relációs modell attribútumához kivéve, hogy a külső felhasználók számára nem láthatóak. Teljes egységbezárás: minden a felhasználók által használható műveletnek előre definiáltnak kell lenni. (Túl szigorú, pl. a lekérdezésekhez tudni kell az attribútum neveket, az ad-hoc lekérdezéseket nehéz specifikálni.)

További jellemzők Az egységbezárás támogatására a műveletek két részből állnak: interfész (felület) és metódus (törzs). Az első a művelet nevét és paramétereit írja le, a második a művelet implementációját specifikálja. Típusok és osztályok hierarchiája és öröklődése Reláció-kezelés: az egységbezárás miatt ez elrejtésre került a külső felhasználók számára (korai rendszerek problémája), az ODMG szabvány ezt megoldotta a bináris kapcsolatok explicit megjelenítésével, inverz hivatkozási párral Verzió-kezelés: egy objektumnak időbeni története van, ennek a nyomonkövetése. Sémaevolúció (ld. ALTER TABLE)

További jellemzők Művelet túlterhelés (operator overloading): ugyanaz a művelet többféle típusú objektumon is végrehajtható, a művelet nevéhez több különböző implementáció tartozik attól függően, hogy milyen objektumra kívánjuk alkalmazni. (operátor polimorfizmus -- polymorphism) Késői kötés: a futás során kapcsolódik össze a művelet neve és a megfelelő implementáció.

Objektum azonosító Az adatbázisban tárolt minden különböző objektum kap egy azonosítót: objektum azonosító (OID - object identifier). Feladata: az adatbázis objektumainak egyértelmű azonosítása, segítségével objektumok közötti hivatkozásokat tudunk létrehozni és kezelni. Egy program alkalmas típusú változójához is hozzárendelhetjük ha szükséges. Tulajdonságok: megváltozhatatlanság, egyértelműség, láthatatlanság (külső felhasználó szempontjából), ábrázolás hosszú egész Objektumok és értékek: a legtöbb rendszer külön kezeli, az objektumok megváltozhatatlan OID-vel rendelkeznek, míg az értékeknek nincs OID-jük (így más objektumok nem hivatkozhatnak rájuk) és csak magukban állnak. Egyes rendszerek megengednek OID nélküli komplex struktúrákat.

Objektumok OO databázisokban egy összetett objektum állapota más objektumok alapján határozódik meg ún. típus konstruktorok segítségével. Objektumok formális leírása egy hármassal történik: (i,c,v), ahol i az objektum azonosítója, c a típus konstruktor és v az objektum állapota (jelenlegi értéke) Alapvető konstruktorok: atom, rekord, halmaz További konstruktorok: lista, zsák (bag), tömb

A konstruktorok értelmezése (i, atom, érték): az i azonosítójú objektum állapota a v atomi értéket veszi fel (i, halmaz, {i1, i2, …, in}): az i azonosítójú objektum egy halmaz, amely az i1, i2, …, in (általában azonos típusú) objektumokból áll (i, rekord, <a1:i1, a2:i2, …, an:in>): az i azonosítójú objektum egy n hosszú rekord, melyben aj a j-edik attribútum neve, ij pedig annak az objektumnak az azonosítója melyet értéknek felvesz (i, lista, [i1, i2, …, in]): az i azonosítójú objektum egy rendezett lista (azonos típusú) a felsorolásbeli azonosítójú objektumokból (i, tömb, [i1, i2, …, in]): az i azonosítójú objektum egy egy-dimenziós tömb a listabeli azonosítójú objektumokból

Konstruktorok összehasonlítása A lista abban különbözik a halmaztól, hogy rendezett. A tömb abban különbözik a listától, hogy a dimenzója véges (ismert). A zsák abban különbözik a halmaztól, hogy ugyanaz az objektum többször is szerepelhet.

Konstruktorok alkalmazása és osztályozása Ez az objektum modell megengedi a korábban definiált és más konstruktorok tetszőleges mélységű egymásba ágyazását. Mivel az összetett (nem-atomi) objektumok más, egyszerűbb objektumokra hivatkoznak az objektum azonosítók révén, az aktuális állapot csak az atomi típusú objektumok állapotaiban jelenik meg. Gyűjtemény (kollekció – collection) konstruktor típusok: halmaz, lista, tömb, zsák. Strukturált konstruktor típusok: rekord (hasonló a struct konstruktorához a C(++) nyelvnek)

Példák objektumokra Egy vállalathoz kapcsolódó objektumok, használt konstruktorok: atom, halmaz, rekord, i1, i2, … a rendszer által generált objektum azonosítók. O1=(i1, atom, `Debrecen’) O2 =(i2, atom, `Miskolc’) O3 =(i3, atom, `Budapest’) O4=(i4, atom, 5) O5=(i5, atom, `Kutatás’) O6=(i6, atom, `1988-05-22’) O7=(i7, set, {i1, i2, i3}) O8=(i8, rekord, <Rnév:i5, Rszám:i4, Vezető:i9, Telephely:i7, Alkalmazottak:i10, Projektek:i11>) O9=(i9, rekord, <Vezető:i12, Kezdő_dátum:i6>) O10=(i10, halmaz, {i12,i13,14}) O11=(i11, halmaz, {i15,i16,17}) O17=(i17, rekord, <Vnév:i18, Knév:i19, Szsz:i20, Fizetés:i21, Részleg:i8>)

Objektumok összehasonlítása Erős egyenlőség: két objektum azonos állapotban van ha a gráfjaik minden lehetséges szempontból (pl. az OID-k minden szinten) megegyeznek. Gyenge egyenlőség: Két objektum egyenlő állapotban van ha a gráfjaik szerkezete megegyezik és a gráfban lévő atomi értékek is megegyeznek (de pl. a gráf közbenső szintjein az OID-k már nem feltétlen)

Példa objektumok összehasonlítására O1=(i1, rekord, <a1:i4, a2:i6> O2=(i2, rekord, <a1:i5, a2:i6> O3=(i3, rekord, <a1:i4, a2:i6> O4=(i4, atom, 10) O5=(i5, atom, 10) O6=(i6, atom, 20) O1 és O3 között erős egyenlőség van hiszen gráfjaik teljesen megegyeznek O1 és O2 között gyenge egyenlőség van hiszen gráfjaik szerkezete és az atomi értékek benne megegyeznek, de két különböző OID (O4 ill. O5) szerepel benne ezért nincs erős egyenlőség

Típus konstruktorok Az Object Definition Language (ODL) foglalja magukba a korábban definiált és más típusokat létrehozó konstruktorokat. Arra használjuk, hogy az OO adatbázis séma adatszerkezetét hozzuk létre velük.

Műveletek egységbezárása Cél: absztrakt adattípusok kezelése, információ-elrejtés (szemben a tradicionális relációs modellel, ahol minden reláció összes attribútumával együtt látható a felhasználók és külső programok számára) Egy objektumtípust viselkedésének leírásával definiálunk, melyet az objektumtípushoz külső hozzáférést biztosító műveleteken alapulnak. Műveletek: objektumok létrehozása, törlése, állapotának módosítása, egyes részeihez való hozzáférés biztosítása ill. ezek kombinációi

Műveletek egységbezárása Műveletek felépítése: interfész (szignatúra) mely a műveletek nevét és paramétereit definiálja (látható), implementáció (metódus) az objektum belső adatszerkezetét és az eléréséhez szükséges műveletek leírását tartalmazza (rejtett) Egy metódus hívása egy üzenetküldéssel történik az objektum felé, hogy hajtsa végre azt. Teljes egységbezárás: túl erős követelmény, általában az objektumok szerkezetét két részre, látható és rejtett attribútumokra osztjuk

Műveletek egységbezárása A módosítás (update) műveletek egységbezárása: előnye hogy kevés integritási megszorítást kell előredefiniálni, ezeket a metódusokba lehet beleprogramozni. Így ezek a megszorítások automatikusan kikényszeríthetőek Objektumtípusok definiálása a class kifejezéssel történik Jellemző műveletek: objektum konstruktor illetve destruktor Pontozott minősítés: objektum_név.művelet

Objektumok állandóságának biztosítása Tranziens és perzisztens objektumok Általában nem minden objektumtípus lesz állandó (perzisztens) egy adatbázisban, ezt külön biztosítani kell Az állandóság biztosítása: elnevezési mechanizmussal vagy elérhetőséggel Elnevezési mechanizmus: egyértelmű és állandó nevet ad egy objektumnak, mellyel hivatkozhatunk rá külső programokból (belépési pont) Elérhetőségi mechanizmus: segitségével perzisztens objektumokból érhetünk el további objektumokat (így elég kevés számú perzisztens objektumot definiálnunk)

Objektumok állandóságának biztosítása Egy B objektum elérhető az A objektumból ha az objektum gráfban hivatkozások (élek) egy sorozata vezet A-ból B-be define class IRODA_SET; type set (IRODA); operations add_iroda(d: IRODA): boolean; (új iroda hozzáadása) remove_iroda(d: IRODA): boolean; (iroda törlése) create_iroda_set: IRODA_SET; (új iroda-halmaz létrehozása) destroy_iroda_set: boolean; (iroda-halmaz megszüntetése) end IRODA_SET; persistent name MINDEN_IRODA: IRODA_SET; d:=create_iroda; (új iroda létrehozása a d változóban) b:=MINDEN_IRODA.add_iroda(d); (d perzisztenssé tétele) A MINDEN_IRODA objektum az IRODA osztály extentje, amely minden IRODA típusú objektumot perzisztenssé tesz.

Típus (osztály) hierarchia Számos objektumot szeretnénk kezelni Új típusok létrehozása korábbiakból Típus: (név, attribútumok, műveletek) Függvények: attribútumok (instance változók), műveletek. Attribútum: argumentum nélküli függvény TYPE_NAME: function, …, function Példa: SZEMÉLY: Név, Cím, Szül_dátum, Kor, Szsz ahol a Kor művelet, amellyel az életkort számolhatjuk ki, a többi pedig attribútum.

Típus (osztály) hierarchia Szubtípus (altípus): egy olyan új típus, amely egy már definiált típus összes függvényét tartamazza Szupertípus (szülőtípus): az a típus, amelyből a szubtípust származtattuk Példa: DOLGOZÓ: Név, Cím, Szül_dátum, Kor, Szsz, Fizetés, Alk_kezdete, Beosztás HALLGATÓ: Név, Cím, Szül_dátum, Kor, Szsz, Szak, Tan_átlag DOLGOZÓ subtype-of SZEMÉLY: Fizetés, Alk_kezdete, Beosztás

Típus (osztály) hierarchia HALLGATÓ subtype-of SZEMÉLY: Szak, Tan_átlag Típus hierarchia: az összes szuper/szub típus kapcsolat rendszere Átnevezés: hierarchia révén származtatott függvények átnevezése

Extentek Ugyanolyan típusú objektumok egy kollekciója A cél az, hogy az objektumainkat állandóvá tegyük Általában az összes azonos típusú objektum szerepel a típushoz tartozó extentben Object: minden objektumot tartalmazó extent