Dolování v objektových datech. Ivana Rudolfová



Podobné dokumenty
Transkript:

Dolování v objektových datech Ivana Rudolfová

Relační databáze - nevýhody První normální forma neumožňuje vyjádřit vztahy A je podtypem B nebo vytvořit struktury typu pole nebo množiny SQL omezení omezený počet vestavěných datových typů, dlouhé SQL dotazy pro DB se složitějšími vztahy oddělení dat a chování objektů

Objektově-orientované DB uživatelem definované datové typy zapouzdření dat a chování objektu třídy objektů, dědičnost

Objektově-orientované DB - nevýhody nedostatek nástrojů pro manipulaci s objekty (Object Query Language) problémy se standardizací přechod z relační DB na objektověorientovanou DB může být složitý a drahý malá rozšířenost objektově-orientovaných DB

Objektově-relační DB rozšíření relačního modelu možnost definovat komplexní datové typy, hierarchie tříd, dědičnost, zapouzdření, možnost definovat metody přechod od relačních DB k objektově-relačním je snadný

Dolování dat v OO a OR systémech komplexní data neumožňují použití obvyklých metod pro dolování dat metody musí být schopné pracovat s objekty metody musí být schopné pracovat s komplexními datovými typy, musí respektovat dědičnost a hierarchii tříd možnost použít databázové schéma (hierarchii použitých tříd)

Dolování dat v OO databázích založené na generalizaci generalizované atributy, generalizované třídy generalizace pomocí generalizačních operátorů, které jsou různé pro různé typy atributů operátory je nutné specifikovat pro jednotlivé OO databáze (závisí na použitých typech atributů a jejich konkrétních hodnotách) existují obecná pravidla, jak pracovat s některými datovými typy výsledkem jsou data cube obsahující generalizované třídy

Generalizace identifikátorů objektů objekty jsou instancemi tříd identifikátory jsou generalizovány na jména tříd třídy jsou součástí třídní hierarchie třída může být generalizována na jméno její nadřazené třídy

Generalizace jednoduchých atributů jednoduché atributy: numerické hodnoty nebo výčtové typy numerické hodnoty lze generalizovat pomocí shlukování do tříd výčtové typy vyžadují specifikaci konceptuální hierarchie, různé stupně generalizace např. atribut umístění s hodnotou Brno je možné generalizovat takto: Brno Morava Česká republika Evropa

Generalizace strukturovaných dat strukturovaná data: seznamy a množiny jednotlivé prvky lze generalizovat samostatně (na méně specifickou úroveň), výsledkem je opět množina lze odvodit obecný atribut pro celou množinu (např. počet prvků množiny), výsledkem je jednoduchý atribut seznamy lze generalizovat podobně, pouze je nutné brát v úvahu pořadí prvků

Agregace a aproximace generalizaci je možné provádět na základě agregace nebo aproximace vhodné pro atributy s velkým množstvím hodnot, prostorová a multimediální data agregace atribut celku určíme pomocí agregační funkce z hodnot atributu dílčích celků aproximace atribut celku bude odpovídat hodnotě atributu většiny prvků

Generalizace zděděných a odvozených vlastností není důležité, které vlastnosti jsou zděděné a které jsou specifické pro danou třídu, generalizace probíhá stejně generalizaci vlastností odvozených aplikací metody dané třídy je možné řešit pomocí nové metody, která provede generalizaci, nebo je možné provést generalizaci dat získaných aplikací metody

Generalizace v OO databázích jednotlivé objekty mohou odkazovat na jiné, posloupnost odkazů může být dlouhá, dlouhé vazby však obvykle nejsou tak významné, proto generalizaci je možné provádět na základě atributů objektu a přímých vazeb při získávání znalostí z DB se generalizační operátory aplikují opakovaně

OO přístup k získávání víceúrovňových asociačních pravidel asociační pravidla jsou získávány v souladu s konceptuální hierarchií modelu konceptuální hierarchie musí být obvykle specifikována odborníkem, není možné využívat dotazovací jazyk OO přístup používá hierarchii tříd jako konceptuální schéma, tzn. není nutné ho specifikovat, protože každý objekt je instancí nějaké třídy, lze použít dotazovací jazyk

Dolování častých vzorů v OO datech hledání častých vzorů pro specifikovanou dotazovanou třídu každý vzor se skládá ze zlomků zlomek vzorku lze vyjádřit výrazem X i :T i, kde X i je proměnná reprezentující objekt a T i je třída tohoto objektu nové vzory jsou generovány ze stávajících rozšířením některého zlomku daného vzoru rozšíření zlomku závisí na jeho typu

Rozšiřování zlomků vzoru zlomek odpovídající jednoduchému atributu může být rozšířen hodnotou daného typu zlomek jehož typem je třída může být rozšířen novým zlomkem pro každý atribut a každou podtřídu dané třídy zlomek jehož typem je kolekce může být rozšířen zlomky reprezentujícími jednotlivé členy kolekce nově vytvořený vzor = následník, původní vzor = předchůdce

Časté vzory vzor je považován za častý, jestliže mu odpovídá minimální daný počet objektů dotazované třídy a příslušných podtříd minimální podpora, minimální frekvence udává se v absolutních nebo relativních hodnotách (v procentech)

Algoritmus OR-FP Vstup: databáze D, název dotazované třídy, minimální požadovaná frekvence častých vzorů Výstup: množina častých vzorů Postup: 1. Vytvoří se první zlomek, který odpovídá dotazované třídě a počet objektů této třídy a jejích podtříd odpovídá frekvenci tohoto vzoru. Je-li skutečná frekvence menší než požadovaná algoritmus končí a vrací prázdnou množinu

Algoritmus OR-FP 2. V cyklu se provádí rozšíření jednotlivých zlomků, zjišťuje se frekvence jednotlivých zlomků, je-li větší než požadovaná frekvence, zlomek se přidá do množiny častých vzorů, které se v dalším cyklu opět rozšiřují. Cyklus končí, jestliže v předchozím průchodu nebyl nalezen žádný zlomek s dostatečnou podporou 3. Algoritmus vrací sjednocení množin všech nalezených vzorů

Příklad databáze Kino schéma databáze: class Person { name: String; address: String; salary: Float; } class Director under Person { directs: set of Movie; }

Databáze Kino class Actor under Person { acts_in: Set of Movie; } class Movie { title: String; year: Int; actors: set of Actor; director: Director; }

Databáze kino příklad dat v databázi o1:actor = { Zdenek Sverak, Praha, 15000, {o4}} o2:actor = { Libuse Safrankova, Brno, 18000, {o4}} o3:director = { Jiri Menzel, Praha, 25000, {o4}} o4:movie = { Postriziny, 1980, {o1, o2}, {o3}}

Databáze Kino Příklady možných častých vzorů X0:Person.salary = x1:float = (15000,20000) X0:Person, X0:Actor.ats_in = X2:set of Movie = {X3:Movie.title = X4:String = Postriziny } X1:Person:Actor.salary:float =(15000,20000),.acts_in:set of Movie = {X2:Movie.title:String = Postriziny }