Térinformatikai adatbázisok 4. előadás Felhasználtam Dr. Benczúr András korábbi jegyzeteit, illetve Pat Browne Spatial Databases kurzusának (Dublin Institute of Technology) jegyzetét
Elérhetőségek, információk Szalai-Gindl János Márk (ELTE, Információs Rendszerek Tanszék) Email: szalaigindl@inf.elte.hu Szoba: 2.507 (déli tömb) Honlap: http://szalaigj.web.elte.hu/index.php/terinformatikaiadatbazisok-eloadas/ Irodalom: Rigaux-Scholl-Voisard: Spatial Databases with Application to GIS (Academic Press 2002.) 2
Relációs modell kiterjesztése ADTkkel A megszokott értékek mellett ADT-k kezelését is lehetővé tesszük attribútum értéke: milyen típusú és milyen műveletek vannak rajta értelmezve Az előzőekben definiált tér-adattípusokat használjuk a kiterjesztésben Referencia sémák reprezentálása: Minden entitás (egyed) típus reláció a megfelelő attribútumokkal Az 1:n kapcsolatok: szokásos elsődleges kulcs idegen kulcs reprezentálás Közigazgatási egységek: mindenütt van geometria, pedig összerakható az megyékből; hasznos redundancia, ritkán változik! másik oldalról: populáció csak megyéknél idegen kulcs hivatkozási egység ÚJ: a region adattípus megjelenése 3
Relációs modell kiterjesztése ADTkkel Közigazgatási egységek (csak ezt nézzük meg, a többi hasonlóan) Create Table Country (country_code integer, country_name varchar (30), geometry region, Primary Key (country_code)) Create Table State (state_code integer, state_name varchar (30), country_code integer, geometry region, Primary Key (state_code), Foreign Key (country_code) References Country) Create Table County (county_code integer, county_name varchar (30), state_code integer, population integer, geometry region, Primary Key (county_code) Foreign Key (state_code) References State) 4
Referencia-kérdések a kiterjesztett relációs modellben ALPHA kérdések a jól ismert SQL közönséges kérdései select from where Pl.: ALPHA-ADM3: az USA lakosságának száma: select sum(c2.population) from Country c1, State s, County c2 where c1.country_name = "USA" and s.state_code = c2.state_code and c1.country_code=s.country_code Fontos tulajdonsága a relációs modellnek: az xxx_code alapján történő tartalmazási viszony join-nal történő kifejezése 5
Referencia-kérdések a kiterjesztett relációs modellben SPAT kérdések: speciális függvényekre is szükségünk lesz (a region, line, point ADT típusok műveletei) where-ben feltételek, kifejezések select-ben kifejezések, aggregálók SPAT-ADM4: a San Francisco megyével szomszédos megyék ugyanabból az államból select c1.county_name from County c1, County c2 where c2.county_name = "San Francisco" and c1.state_code = c2.state_code and Meets (c1.geometry, c2.geometry) 6
Referencia-kérdések a kiterjesztett relációs modellben SPAT-ADM5: Kalifornia állam megjelenítése minden szinten van geometria: select geometry from State where state_name = "California" ha csak County szinten lenne: select RegionUnion(c.geometry) from County c, State s where s.state_code = c.state_code and s.state_name = "California" 7
Referencia-kérdések a kiterjesztett relációs modellben SPAT-ADM6: megyék, amelyek nagyobbak Kalifornia állam legnagyobb megyéjénél select county_name from County where Area(County.geometry) > (select max(area(c.geometry)) from County c, State s where s.state_name = "California" and s.state_code = c.state_code) SPAT-R3: az Interstate 99 autóút hossza select sum(length(s.geometry)) from Highway h1, HighwaySection h2, Section s where h1.highway_name = "I99" and h1.highway_code = h2.highway_code and h2.section_code = s.section_code 8
Referencia-kérdések a kiterjesztett relációs modellben SPAT-ADMR1: az összes autóút, amely át megy Kalifornia államon select distinct h1.highway_name from State s1, Highway h1, HighwaySection h2, Section s2 where s1.state_name = "California" and h1.highway_code = h2.highway_code and h2.section_code = s2.section_code and OverlapsLR (s2.geometry, s1.geometry) SPAT-ADM-LU1: jelenítsük meg San José megye minden lakóterületét select Intersection(l.geometry, c.geometry) from County c, Land_Use l where c.county_name = "San Jose" and l.land_use_type = "residental area" and Overlaps (l.geometry, c.geometry) 9
Referencia-kérdések a kiterjesztett relációs modellben SPAT-ADM-LU2: a közigazgatási egységek és a föld-használat témák fedése select county_name, l.land_use_type, Intersection(c.geometry, l.geometry) from County c, Land_Use l where Overlaps(c.geometry, l.geometry) INTER kérdések közül csak egyet nézzünk meg képernyő interakcióként jön a @point INTER-R6: az autóút leírása, amelynek szakaszára rámutatunk a képernyőn select h2.highway_name, h2.highway_type from HighwaySection h1, Highway h2, Section s where h1.highway_code = h2.highway_code and h1.section_code = s.section_code and PointInLine (s.geometry, @point) 10
Objektum-orientált modellek rövid OODBMS áttekintés Nincs egyetlen, szabványosított modell, bár egy kvázi standard javaslat van az Object Database Management Group ODMG modell (1993) Objektum azonosság: oid élete végéig azonosít egy objektumot, függetlenül az attribútum értékektől Típusok, osztályok, metódusok: objektum: (oid, értékek, metódusok) érték-típus: atomi értékek (string, integer) + oid (egy másik objektumé), összetett típus konstruktorok: pl. tuple (sor), set (halmaz) vagy list (rendezett halmaz/felsorolás) azonos érték-típus objektumok: egy osztályt definiálnak, viselkedés: metódusok halmazával van kifejezve, amelyek az osztályhoz tartozó objektumokon hajthatóak végre 11
Objektum-orientált modellek rövid OODBMS áttekintés Egységbezárás: osztály: absztrakt adattípus implementációja, egységbezárás eltakarja az adatokat, a szerkezetet és a metódusokat egységként: objektumokként kezeli Öröklődés: osztály alosztály (ISA hierarchia) típus öröklődik, finomodik: pl. több attribútum általánosítás specializálás többszörös öröklődés 12
Objektum-orientált modellek a referencia séma reprezentálása Minden egyes téma, és minden egyes ADT egy osztály által van materializálva Fontos eltérés: nem kell explicit azonosító (primary key), nem kellenek a xxx_code attribútumok Hivatkozás befoglalóra: pl. country_in_state, state_in_county Kétféle térbeli osztály: témák: egy-egy osztály ADT-k: egyszerű vektor spagetti modelltől kezdve a komplex topológiai modellekig lehet különböző lehetséges struktúrákat venni Class Highway tuple (highway_name: string, highway_type: string, sections: list(section)) Class Section tuple (section_name: string, number_lanes: integer, city_start: City, city_end: City, geometry: Line) Class City tuple (city_name: string, population: integer, geometry: Region) 13
Objektum-orientált modellek referencia kérdések OQL stílusban ALPHA-ADM1: lakosok száma San Francisco megyében select c.population from c in Counties where c.county_name = "San Francisco" Megjegyzés: itt a c egy OID a Counties class-ból Ha Counties típusa tuple (attribútumokkal), akkor oid.attr_név: olyan, mint egy metódus SPAT-R3: az Interstate 99 autóút hossza Tegyük fel, hogy az All_highways: set(highways) a belépési pont az adatbázishoz sum(select s.geometry length() from h in All_highways, s in h.sections where h.highway_name = "I99") 14
Feltételeket leíró adatmodell A térbeli objektumok logikai modellezésének egy alternatív megközelítése feltételeket leíró adatmodell (constaint data model) Relációs DB-k fő korlátozó tényezője térbeli adat szempontból: végtelen relációkat nem tud reprezentálni és manipulálni térbeli pontok végtelen halmazának kezelése, mint végtelen sok sorból álló reláció Feltétel DB-k (constraint database) főcélja, hogy a relációs DB-ket kiterjeszti a végtelen relációk kezelésével Eredményül olyan adatmodellt kapunk, amely felöleli a klasszikus (véges rel.) és térbeli adatokat (végtelen rel.), és a térbeli lekérdezéseket tiszta relációs nyelvvel meg tudjuk fogalmazni 15
Téradatok modellezése feltételekkel A fenti ábrán látható pontokat az alábbi bal oldali SPAT reláció reprezentálja, a konvex négyszögön belüli pontokat (végtelen sok) pedig a jobb oldali SPAT2: x y 1 1 7 3 4 4 7 1 x y 1 1 1.001.. 1 7 3 16
Téradatok modellezése feltételekkel Átmenetileg tekintsünk el a végtelen sor problémájától térobjektum ábrázolása, esetleg végtelen sorral Két objektum metszete: obj1 obj2: select x, y from obj1, obj2 where obj1.x = obj2.x and obj1.y = obj2.y Lényegtelen lett, hogy milyen típusú (tartomány, poligon vonal stb.) Hogyan lehetne a tartományokat végesen reprezentálni megtartva a fenti egyszerű relációs lehetőséget? feltételekkel 17
Téradatok modellezése feltételekkel végtelen relációk véges reprezentálása Véges ponthalmaz az előbbi ábrán: φ SPAT1 (x = 1 y = 1) (x = 7 y = 3) (x = 4 y = 4) (x = 7 y = 1) A konvex tartomány: négy egyenes által adott félsíkok metszete: φ SPAT2 (y x) (y 1) (x 7) (x + 3y 16 0) Töröttvonal: pl. az alábbi ábrán lévő vektor módban a pontok listája: L =< [4,3], [6,5], [8,2], [10,5] > 18
Téradatok modellezése feltételekkel végtelen relációk véges reprezentálása Az előbbi töröttvonal feltétel reprezentációval: φ s1 4 x 6 3 y 5 x y 1 = 0 φ s2 6 x 8 2 y 5 3x + 2y 28 = 0 φ s3 8 x 10 2 y 5 3x 2y 20 = 0 φ L φ s1 φ s2 φ s3 (Diszjunktív Normál Forma) Tartomány: ha nem konvex, akkor konvex tartományokra daraboljuk: P = T 1 T 2 T n φ T1 a konvex tartomány feltételformulája φ P φ T1 φ T2 φ Tn Az alábbiakat használjuk a formulákban: aritmetikai kifejezések között egyenlőséget, egyenlőtlenséget ilyenek diszjunkcióját és konjunkcióját 19
Téradatok modellezése feltételekkel végtelen relációk véges reprezentálása Ilyen feltétel: szimbolikus reláció-sor: végtelen pontot jelent A lekérdezés eredménye lehet-e ugyanilyen? (A klasszikus relációknál így van) például: két objektum φ obj1 és φ obj2 metszete: {x, y φ obj1 φ obj2 } uniója: {x, y φ obj1 φ obj2 } Áttértünk kalkulusra: maga a kérdés ugyanolyan, mint a feltételek. Nem vezet ki belőle, formálisan kezelhető. 20
Téradatok modellezése feltételekkel az eddigiek összefoglalása Absztrakt szint: az absztrakt relációké, amelyek lehetnek végesek vagy végtelenek a felhasználót nem foglalkoztatja egy reláció végessége, ő egységesen táblák halmazának látja az adatbázist Szimbolikus szint: támogatja a végtelen relációk véges reprezentációját az adat reprezentáció és manipulálás technikai értelmezését nyújtja Fizikai szint: tárolja a relációkat és teljesíti a lekérdezéseket adatbázis hozzáférés biztosításával (ezzel nem foglalkoztunk) 21
Köszönöm a figyelmet! 22