ORM Mapping Objects to Relational Databases Irodalom Thomas
ORM – Mapping Objects to Relational Databases Irodalom: Thomas Conolly – Caroline Begg: Database Systems http: //www. agiledata. org/essays/mapping. Objects. html
ORM – O/R Mapping n n n Az alkalmazásfejlesztések nagyrésze OO nyelven történik (Java, C++, C#) Az alkalmazások az adatokat viszont relációs adatbázisokban tárolják. Impedance mismatch: n n n A két világ között eltérésekből fakadó nehézségeket jelenti. Eltérő fogalmak használata, melyek nem mindegyikének van megfelelője a másik világban. Két dolgot kell megértenünk: n n A folyamatot, ahogy az objektumokat leképezzük relációs adatbázisokba És azt, hogy ezt hogyan tudjuk megvalósítani
ORM – O/R Mapping n Alapfogalmak n n Az osztály attribútumából a relációs adatbázisban 0 vagy több oszlop lesz (mivel néhány attribútumot ideiglenes tárolásra használunk, vagy kiszámolható a többiből) Vannak olyan attribútumok az osztályban, amelyek maguk is objektumok, azaz osztályok közötti kapcsolat áll fenn. (Később képezzük le) A legegyszerűbb leképezés: egyszerű osztályattribútum egy tábla egy oszlopa lesz. Egy osztály általában egy tábla lesz (később az öröklés miatt ezt kiegészítjük)
ORM – O/R Mapping
ORM – O/R Mapping n Különbségek az ábrán n A táblában csak egy oszlop van n A táblában van kulcs, az osztályban nincs. A táblák közötti kapcsolat külső kulcs, az objektumok referenciákkal hivatkoznak egymásra. n n Fel kell venni még két oszlopot Vagy ki kell számolni a 3 oszlop értékét, amikor felolvassák a táblából, illetve tároláskor össze kell őket adni (lazy initialization) Shadow information (Szellem információ): az a járulékos információ, hogy az objektumnak ismernie kell az adatbázisbeli azonosítóját. Különböző adattípusokat használnak
ORM – O/R Mapping n Shadow Information (szellem információ) n A shadow információ: n n minden olyan információ, amely az objektumok karbantartásához kell, a tároláshoz szükségesek, aminek általában nincs üzleti jelentése Pl: Elsődleges kulcs; vagy timestamp, verzió szám, számláló (konkurenciavezérléshez) Az UML diagrammokon megjelenhetnek, az elején – jellel és <<persistence>> jellemzővel (nem UML szabvány, csak az író ötlete) Shadow információ lehet egy boolean jel, amely megmutatja, hogy az objektum létezik-e már az adatbázisban. (is. Persistent attribútum)
ORM – O/R Mapping
ORM – O/R Mapping n Öröklési struktúrák leképezése 1. 2. 3. 4. A teljes osztályhierarchiát egy táblára képezzük le Minden konkrét osztályt saját táblára képezünk le Minden osztályt saját táblára képezünk le Az osztályokat egy generikus tábla struktúrára képezzük le
ORM – O/R Mapping n Öröklési struktúrák leképezése A teljes osztályhierarchiát egy táblára képezzük le 1. • • Egy táblában jelenik meg az osztályhierarchia minden attribútuma Kiegészül a tábla egy elsődleges kulccsal A verzió: kiegészül a tábla egy típussal, amely megmutatja, hogy a személy egy ügyfél, egy dolgozó vagy mindkettő B verzió: a tábla az osztályoknak megfelelő számú boolean oszloppal egészül ki, amely megmutatja, hogy az adott osztályba tartozik-e
ORM – O/R Mapping n Öröklési struktúrák leképezése Minden konkrét osztályt saját táblára képezünk le 2. • • Minden osztályhoz egy tábla készül A táblák azokat az attribútumokat tartalmazzák, amelyek a saját osztályukban vannak illetve amelyeket örököltek Az absztrakt osztályokat nem képezi le (Person) Minden táblának saját elsődleges kulcsa van
ORM – O/R Mapping n Öröklési struktúrák leképezése Minden osztályt saját táblára képezünk le 3. • • Minden osztályhoz egy tábla készül A táblák azokat az attribútumokat tartalmazzák, amelyek a saját osztályukban szerepelnek. A tábláknak az elsődleges kulcsa Person tábla elsődleges kulcsa, amely egyben külső kulcs is a másik 3 táblában. A Customer osztály adatai két helyen vannak tárolva, a Customer és a Person táblában.
ORM – O/R Mapping n Öröklési struktúrák leképezése 3. Minden osztályt saját táblára képezünk le
ORM – O/R Mapping n Öröklési struktúrák leképezése 4. Az osztályokat egy generikus tábla struktúrára képezzük le
ORM – O/R Mapping n Öröklési struktúrák leképezése Az osztályokat egy generikus tábla struktúrára képezzük le 4. • • Ez a megoldás nem csak öröklési struktúrákra alkalmas, hanem a leképezés minden formájára. A séma nem teljes, de a célnak megfelelő. Egy atomi értéket a Value tábla tárol. Az Attribute. Type tábla az alaptípusokhoz tárol sorokat.
ORM – O/R Mapping n Többszörös öröklés leképezése n n Ekkor egy osztálynak két szülő osztálya van (a legtöbb nyelv nem támogatja). A következő ábrán a 3 megoldás látható.
ORM – O/R Mapping n Objektum kapcsolatok leképezése n n n Három objektum kapcsolat létezik: asszociáció, aggregáció és kompozíció Végül mindháromból külső kulcs kapcsolat lesz A leképezésnél az objektumkapcsolatok két jellemzőjével kell foglalkozni: a számossággal (1: 1, 1: n, n: m) és az iránnyal (egyirányú és kétirányú). n n n Az egyirányú kapcsolatnál az egyik objektum tud a másikról, míg a másik nem tud az egyikről (Employee, Position (nem tud az Employeeról)) A kétirányú kapcsolatnál mindkét résztvevő tud a másikról (Employee, Division) A relációs adatbázisok csak a kétirányú kapcsolatot ismerik
ORM – O/R Mapping n Objektum kapcsolatok leképezése n 1: 1 kapcsolat leképezése: n n 1: n kapcsolat leképezése: külső kulccsal, a sok oldal mutat az egy oldalra (Employee, Division) n Vagy kapcsolótáblával N: m kapcsolat leképezése: n Kapcsoló táblával n n az egyik tábla elsődleges kulcsa a másik táblában külső kulcs Kapcsolótáblával Egy táblába tesszük a kettőt
ORM – O/R Mapping n Eszközök n n A programozási nyelvben egy „virtuális adatbázist” hoznak létre Csökkentik a megírandó kód mennyiségét Hátránya: a teljesítmény kárára mehet Pl: Hibernate, Eclipse. Link, Enerprise Java. Beans, Java Data Objects, LINQ to SQL, Quick Object
- Slides: 21