Teoretická východiska deduktivních databází
Transkript
UČEBNÍ TEXTY OSTRAVSKÉ UNIVERZITY ______________________________________________ Přírodovědecká fakulta DEDUKTIVNÍ DATABÁZE (DISTANČNÍ VÝUKOVÁ OPORA) Zdeňka Telnarová 2003 ________________________________________ Ostravská univerzita 1 Úvod ........................................................................................................... 4 2 Teoretická východiska deduktivních databází........................................... 6 2.1 Datový model a jazyk v DATALOGu................................................. 7 2.2 Interpretace klauzule, model a logický důsledek................................. 9 2.3 Graf závislostí a rekurze .................................................................... 12 2.4 Bezpečná pravidla.............................................................................. 12 2.5 Vyhodnocování nerekurzívních pravidel........................................... 13 2.6 Rekurzivní pravidla ........................................................................... 16 2.7 Negace v pravidlech .......................................................................... 17 3 Deduktivně objektové systémy řízení báze dat ........................................ 19 3.1 Florid ................................................................................................. 20 3.2 Gedblog ............................................................................................. 20 3.3 Illustra ................................................................................................ 21 3.4 ODE ................................................................................................... 21 3.5 Validity .............................................................................................. 22 3.6 RockRoll............................................................................................ 22 3.7 P/FDM ............................................................................................... 22 4 Deduktivně objektový databázový systém ConceptBase a jeho základní komponenty ................................................................................................. 24 4.1 Jazyk Telos v ConceptBase ............................................................... 25 4.2 Jednoduchý model v Telos ................................................................ 28 4.3 Predikátový jazyk CBL jako součást Telos ....................................... 29 4.4 Dotazování v ConceptBase................................................................ 31 4.5 Modelování a metamodelování v ConceptBase ................................ 36 5 Využití deduktivních pravidel k zachování integrity dat.......................... 45 5.1 Pojem deduktivní integrita................................................................ 45 5.2 Princip deduktivní integrity v relačních datových modelech ............ 46 5.3 Nevýhody deduktivní integrity v relačních datových modelech ....... 47 5.4 Integritní omezení v ConceptBase..................................................... 48 6 Metodická doporučení k integraci deduktivních pravidel do návrhu informačního systému.................................................................................. 51 6.1 Úvod do metodiky ............................................................................. 52 6.2 Analýza .............................................................................................. 61 2 6.3 Návrh ..................................................................................................67 6.4 Prototyping deduktivních pravidel .....................................................81 7 Demonstrační úloha...................................................................................88 7.1 Analýza subsystému Komunikace účastníků vzdáleného vyučování.88 7.2 Návrh subsystému Komunikace vzdáleného vyučování ..................101 7.3 Prototyping deduktivních pravidel ...................................................112 8 Korespondenční úkol...............................................................................115 9 Závěr........................................................................................................116 10 Použitá literatura....................................................................................117 3 1 ÚVOD Systémy řízení báze dat jsou jednou z nejpoužívanějších technologií, které byly v oblasti informačních technologií vyvinuty. Jejich použití však zdaleka není tak snadné, jak mnohdy naznačují propagační a komerční publikace. Problémy reprezentace a zpracování dat jsou stále aktuálnější a rozhodně nelze říci, že všechny problémy uživatelů jsou řešeny a vyřešeny optimálně. Donedávna většina dat, která byla v databázové technologii zpracovávána, byla uložena ve formě jednoduchých relačních tabulek, jejichž struktura byla definována s využitím jednoduchých datových typů. Moderní databázové aplikace ovšem potřebují manipulovat s objekty, které nelze snadno transformovat do relačních tabulek. Výzkum na poli databázové technologie byl postaven před úkol, jak tento problém řešit. Jako dlouhodobě výhodná investice se jeví přechod k objektově relačním databázovým systémům. Tyto SŘBD kombinují výhody moderních objektově orientovaných programovacích jazyků s rysy relačních databází jako jsou např. vícenásobné pohledy a neprocedurální dotazovací jazyky. Objektová infrastruktura zároveň poskytuje možnost definování vlastních datových typů a funkcí. S přechodem na objektově relační databázovou technologii vznikla potřeba modifikace metodiky datového modelování. Snaha přiblížit databázové koncepty reálnému světu a potřebám složitých databázových aplikací vede k vývoji systémů řízení báze dat směrem k objektové orientaci, k aktivním databázím, deduktivním databázím, temporálním, prostorovým, textovým či multimediálním databázím. S vývojem objektově orientované databázové technologii úzce souvisí vývoj nových metodologií pro analýzu, návrh a implementaci informačních systémů s databází, které jsou založeny na objektech. Jedná se např. o metodologie OMT, Booch Method, Jacobson Methodology, Martin/Odell Methodology, Wirfs/Brock Methodology, Methodology Coada a Yourdona, Fusion, Syntropy, IDEA Methology, atd. Zjednodušeně bychom mohli konstatovat: “Moderní databázové systémy, to jsou transakce, objekty a pravidla“ [4]. Transakce jsou klíčovým rysem databázové technologie, protože garantují integritu a konzistenci databáze. Všeobecně jsou známy vlastností transakcí, označované jako ACID (atomicity, consistency, isolation, durability). Databázové objekty jsou strukturovány do perzistentních tříd, které jsou organizovány v hierarchii generalizace – specializace, které navzájem na sebe odkazují a které jsou asociovány s metodami. Velmi inovačním prvkem jsou spolu s objekty rovněž pravidla. Pravidla můžeme chápat ve dvou dimenzích. Jedná se o pravidla deduktivní a o pravidla aktivní. Deduktivní pravidla umožňují odvozovat nové informace na základě exitujících informací, uložených jako data v databázi a zároveň je možno využít deduktivních pravidel k zajištění integrity databáze. 4 Aktivní pravidla zajišťují vykonávání operací v případě, nastala-li určitá událost. Aktivní pravidla vykonávají akce (tzn. provádějí databázové operace nebo volají externí programy). Aktivní pravidla jsou často v relačních databázových systémech označována jako triggery. Ve vývoji systémů řízení bází dat se od prvopočátku jednalo o tzv. datovou nezávislost, tj. nezávislost dat na jejich fyzické implementaci a nezávislost dat na aplikačních programech. S využitím objektové orientace je možno mnoho procedur a funkcí (které byly dříve součástí aplikačních programů) převést do popisu struktury databáze, kde jsou metodami jednotlivých tříd. Chování objektu není v takovém případě záležitostí aplikačního programu, ale báze dat. Můžeme tedy hovořit o další formě nezávislosti dat na aplikacích (metody nejsou součástí aplikace, ale schémat). Deduktivní přístup k databázové problematice zavádí další typ nezávislosti. Jedná se o tzv. nezávislost znalostní (její koncept byl uveden Friesenem v roce 1994). Znalost není součástí aplikace, nýbrž součástí datového schématu. Objekty, deduktivní a aktivní pravidla hrají velkou roli v rozšíření znalostní nezávislosti dat na aplikačních programech. Hlavní výhoda znalostní nezávislosti je v tom, že objekty a pravidla se uplatňují napříč aplikacemi. Tak, jako s přechodem od relačních databází k objektovým vzešla potřeba modifikace metodiky analýzy, návrhu a implementace informačních systémů s databází, stejná potřeba vzniká s přechodem k databázím deduktivním. Jakým způsobem modifikovat, resp. rozšířit metodiku o nové koncepty založené na deduktivních pravidlech? To je základní otázka, které se budeme věnovat při studiu předkládané výukové opory. 5 2 TEORETICKÁ VÝCHODISKA DEDUKTIVNÍCH DATABÁZÍ Cíl: Po prostudování této kapitoly bude umět definovat základní pojmy, popsané v klíčových slovech, dále budete schopni: - navrhovat bezpečná pravidla, - sestavit jednoduchý logický program s využitím Hornových klauzulí, - vytvořit graf závislostí, - vyhodnotit nerekurzivní pravidla, - vyhodnotit rekurzivní pravidla. Klíčová slova: EDB, IDB, dedukce, deduktivní pravidlo, formule, klauzule, Hornovy klauzule, interpretace klauzule, graf závislostí, rekurze, bezpečnost pravidel, vyhodnocování pravidel. Deduktivní databáze jsou založeny na podpoře teorie dokazování a jsou schopné dedukce dodatečných faktů z faktů, které jsou uloženy v extenzionální databázi. Mají zabudovány speciální deduktivní axiomy a pravidla dedukce. Deduktivní pravidla společně s integritními omezeními odvozují fakta, která jsou obvykle označovány jako intenzionální databáze. Deduktivní databáze se tedy skládá ze dvou složek, extenzionální databáze (EDB) a intenzionální databáze (IDB). Deduktivní datový model využívá dvou typů konceptů. Základní koncepty jsou uloženy v databázi (EDB) a odpovídají relacím v relačním datovém modelu nebo objektům v objektovém datovém modelu. Odvozené koncepty nemusí být uloženy v databázi, jsou obvykle dočasné a uchovávají mezivýsledky operací. Tyto koncepty jsou označovány jako intenzionální koncepty. Základním stavebním kamenem deduktivních databází jsou deduktivní pravidla, vyvinuta a demonstrována na paradigmatech logického programování v programovacím jazyku Prolog (Colmerauer a Kowalski, 1979). Hlavním smyslem deduktivních pravidel je reprezentace obecných deklarativních znalostí. Uplatnění deduktivních pravidel je možné jak v relační, tak objektové databázové technologii. Jazyk SQL a podobné jazyky pro manipulaci s daty, založené na relační algebře a relačním kalkulu, nemají dostatečnou vyjadřovací sílu a nejsou schopny vyjádřit uzávěr tranzitivních závislostí a všeobecné agregace v relačním datovém modelu. Tranzitivní uzávěr (podle [17]) databáze nebo deduktivní databáze (X,R), kde X je extenzionální databáze a R je množina pravidel, je databáze Y, která zahrnuje X a veškerá fakta, odvozená použitím pravidel z R. Logická pravidla využívající funkčních symbolů 6 mohou vyjádřit jakýkoliv výpočet tak, že ten může být zapsán v konvenčním programovacím jazyku. Dokonce logická pravidla bez funkčních symbolů (např. jazyk DATALOG) mají sílu vyjádřit výpočet větší než konvenční DQL (Data Query Language). Příklad 2-1: Mějme predikát manažér(Z,M) a předpokládejme, že má hodnotu true tehdy, když zaměstnanec Z odpovídá přímo manažéru M. Můžeme definovat další predikát vedoucí(Z,V), který nabývá hodnoty true, když V je manažérem zaměstnance Z nebo jeho manažéra , ….. Predikát vedoucí(Z,V) je tranzitivním uzávěrem manažéra(Z,M). Predikát vedoucí(Z,M) můžeme vyjádřit: a) vedoucí(Z,M) ← manažér(Z,M) b) vedoucí(Z,M) ← vedoucí(Z,A) & manažér(A,M) Příklad ilustruje rekurzivitu deduktivních pravidel. Pravidla definují pravdivé instance predikátů. 2.1 Datový model a jazyk v DATALOGu V datalogovské interpretaci se na databázi nahlíží jako na množinu faktů, kdy faktem je instance v odpovídající relaci. Fakt je tedy logický predikát, obsahující jako své argumenty pouze konstanty. Základní predikáty odpovídají databázovým relacím a jsou definovány na úrovni definice schématu databáze, zatímco odvozené predikáty jsou definovány pravidly. Pojem schéma databáze je rozuměn ve smyslu [15], kde je schéma databáze dáno množinou schémat relací, z nichž každé lze vyjádřit zadáním jména relace a množiny atributů včetně domén a množinou integritních omezení. Datový model v DATALOGu je model založený na klauzulární logice, která je speciálním typem predikátové logiky vhodným pro logické programování, s některými omezeními. Predikátovému symbolu v DATALOGu odpovídá stejně jako v predikátové i klauzulární logice jeho interpretující relace. Na rozdíl od relační algebry, relace nemají pojmenované atributy. Komponenty relací mají fixní pozice a odkazy na sloupce jsou možné prostřednictvím této pozice. Je-li např. p predikátový symbol, pak můžeme provést odkaz p(X,Y,Z), kde X označuje první komponentu nějaké n-tice v relaci P, která odpovídá predikátu p. DATALOG na rozdíl od predikátové či klauzulární logiky nepovoluje funkční symboly v argumentech predikátů, argumenty mohou být pouze proměnné a konstanty. Průvodce studiem: Obecně mohou pravidla obsahovat i funkční symboly. Máte-li zájem se s touto problematikou seznámit blíže, problémem definice pravidel 7 s použitím funkčních symbolů a především metodami vyhodnocování takových pravidel se podrobně zabývá publikace [16]. 2.1.1 Atomická formule Základním stavebním kamenem DATALOGu jsou atomické formule. Atomická formule je ve tvaru p(A1, A2, …An). Argumentem může být proměnná nebo konstanta. Predikátový symbol je asociován s určitým počtem argumentů a můžeme použít p(K) k označení predikátu stupně K. Atomické formule lze konstruovat rovněž s aritmetickými porovnávacími predikáty =, <, >, …V tom případě se jedná o atomickou formuli s vestavěnými predikáty a formule se zapisuje ve tvaru např. X < Y nebo <(X,Y). První způsob zápisu je označován jako infixová notace, druhý prefixová notace. Vestavěné predikáty nemusí reprezentovat konečné relace. 2.1.2 Klauzule a Hornovy klauzule Literálem se rozumí buď atomické formule nebo negované atomické formule. Negovaná atomická formule se označuje ¬p(A1,…,An). Negovaná atomická formule se nazývá negativní literál. Nenegovaný literál je pozitivní literál. Klauzule je součet (logické OR) literálů. Hornova klauzule je klauzule s nejvýše jedním pozitivním literálem, tj. klauzule, která má obecně (zde s vynecháním atributů) tvar ¬p1 ∨ ¬p2 ∨...∨ ¬pn ∨ q. Klauzule tohoto typu lze, jak je známo, přepsat do tvaru implikace (p1 & p2 &...& pn ) → q , který je vhodný pro formulování logických pravidel. To je totiž tvar formule umožňující vyjádřit, že q je logickým důsledkem současné platnosti předpokladů p1 , p2 ,..., pn . Z toho důvodu jsou formule v Hornově klauzulárním tvaru základem pro formulování problémů v klauzulární logice, logickém programování i deduktivních databázích. Hornova klauzule je buď: • Jeden pozitivní literál, např. p(X,Y), který se označuje jako fakt. • Jeden nebo více negativních literálů, čímž je chápáno integritní omezení. • Pozitivní literál a jeden nebo více negativních literálů, což vyjadřuje deduktivní pravidlo ¬p1 ∨ … ∨ ¬pn ∨ q. Logickým ekvivalentem tohoto zápisu je zápis p1 ∧ p2 … ∧ pn → q. V DATALOGu se vyjádří Hornova klauzule ve tvaru: q ← p1 & …&pn, 8 kde: q je hlava pravidla (consequent), p1& …&pn je tělo pravidla (antecedent). Kolekce Hornových klauzulí tvoří logický program. Proměnné, které se vyskytují pouze v těle, mohou být existenčně kvantifikovány, zatímco ostatní proměnné jsou univerzálně kvantifikovány v celém pravidle. Příklad 2-2: 1) 2) 3) 4) 5) 6) sourozenec(X,Y) ← rodič(X,Z) & rodič(Y,Z) & X <>Y bratranec(X,Y) ← rodič(X,Xp) & rodič(Y,Yp) & sourozenec(Xp,Yp) bratranec(X,Y) ← rodič(X,Xp) & rodič(Y,Yp) & bratranec(Xp,Yp) příbuzný(X,Y) ← sourozenec(X,Y) příbuzný(X,Y) ← sourozenec(X,Y) & rodič(Y,Z) příbuzný(X,Y) ← příbuzný(Z,Y) & rodič(X,Z) Například pravidlo 1) říká, že pro všechny X a Y je X sourozencem Y tehdy, jestliže existuje Z takové, že Z je rodičem obou X i Y a přitom X a Y není tentýž jedinec. 2.2 Interpretace klauzule, model a logický důsledek 2.2.1 Interpretace atomů Stejně jako v predikátové logice souvisí pojem atomu s pojmem predikátu a ten zase s pojmem relace i v klauzulární logice. Schéma syntaxe n-árního predikátu <n-ární predikátový symbol>(<atribut>, <atribut>,..,<atribut>) odpovídá schématu jeho interpretující relace stejné arity <jméno relace>(<atribut>, <atribut>,..,<atribut>). Atributy uvedené v závorkách schématu relace i schématu odpovídajícího predikátu, se stejně jako v predikátové logice i v relační teorii nazývají deskriptory, neboť slouží k popisu toho, co jednotlivé výrazy v závorce za predikátovým symbolem znamenají. Příklad schémtua predikátu : matka(<matka>, <dítě>) 9 zamezí nejasnostem, ke kterému ze dvou termů predikátu se vztahuje event. ohodnocení pomocí objektů z podmnožiny matek universa diskursu a ke kterému se vztahuje ohodnocení prvky podmnožiny dětí. Predikát může mít jakoukoliv aritu, ale pokud nějakou má, je jí pro účel interpretace přiřazena odpovídající interpretující relace stejné arity. Interpretace atomu musí postupovat na základě pravdivostní hodnoty predikátu. Je-li atomem n-ární predikátový symbol p(t1, t2,...,tn), kde t1, t2,...,tn jsou konstanty nebo proměnné, které se po svém ohodnocení staly rovněž konstantami, nabývá atom pravdivostní hodnoty true, právě když (t1, t2,...,tn) je prvkem relace R interpretující predikátový symbol p. Protože klauzule v Datalogu má tvar q ← p1 & …&pn, je interpretována jako false v jediném případě, a to v tom, kdy jsou všechny atomy p1 , …, pn jejího těla interpretovány jako true a atom q hlavy je interpretován jako false. 2.2.2 Dedukce modelem množiny pravidel Definice 2-1 podle [15] Model množiny pravidel je množina faktů (predikátů s konstantami jako argumenty), které po dosazení do všech pravidel ohodnocují všechna pravidla hodnotou true. Je tedy nutné současné splnění všech pravidel. Příklad2-3: Jsou předpokládána pravidla: 1) p(X) ← q(X) 2) q(X) ← r(X) Tato pravidla říkají, že je-li r true, pak q je taky true a je-li q true, je taky p true. Jeden možný model je model M1 = {r(1), q(1), p(1), q(2), p(2), p(3)}. Pravidla mají hodnotu true pro argumenty uvedené v modelu. Pro všechny ostatní argumenty mají hodnotu false. Důkaz: X=1 Po dosazení do pravidla (1): true ← true Po dosazení do pravidla (2): true ← true X=2 Po dosazení do pravidla (1): true ← true Po dosazení do pravidla (2): true ← false 10 X=3 Po dosazení do pravidla (1): true ← false Po dosazení do pravidla (2): false ← false Ať je provedena jakákoli substituce, pravidla vždy nabývají hodnoty true. Z toho vyplývá, že M1 je modelem množiny pravidel {(1), (2)}. Při použití pravidel k definování operací nad databází se předpokládá, že instance databáze dává hodnotu true tehdy, když odpovídající relace obsahuje tento fakt jako svou n-tici. Nechť r je databázový predikát a p, q jsou predikáty, definované využitím r. Lze předpokládat, že r(1) je true, zatímco r(X) je false pro X <> 1. Existuje další model M2 = {r(1), q(1), p(1)}. Existuje konečný počet modelů s databází, která má pouze r(1) true. M2 je minimální model, tzn. že nelze zaměnit žádný fakt z true na false, aniž by byl porušen model dokazující databázi {r(1)}. M1 nemá tuto vlastnost minimality. Model M1 se získá použitím definice logických důsledků. 2.2.3 Formální odvozování logického důsledku Stejně jako v predikátové (klauzulární) logice i v Datalogu existují dva přístupy k prověřování, resp. generování logických důsledků databáze. První z nich je již zmíněný sémantický přístup vycházející z modelů množiny předpokladů, druhým je přístup čistě formální, pro nějž není nutné zabývat se pravdivostními hodnotami atomů klauzulí. Tato interpretace vychází z axiomů použitých v důkazu. Z faktů v databázi může být získán další fakt použitím pravidel jako jejich logický důsledek. Logickým důsledkem množiny pravidel je každý fakt, který byl z databáze formálně odvozen použitím pravidel. Všechna fakta lze odvodit použitím pravidel s axiomem if…then. To znamená, že substitucí dokázaných faktů do daných faktů jsou vytvořena další fakta. V tomto smyslu lze definovat význam kolekce pravidel v existenci množiny faktů odvoditelných z daných faktů. Tvar pravidla je následující: hlava ←tělo resp. consequent ← antecedent 2.2.4 Výpočtová definice Vychází z vytvoření algoritmu pro stanovení, zda potencionální fakt (predikát s konstantami jako argumenty) je pravdivý nebo nepravdivý. Například se může jednat o algoritmus nalezení minimálního modelu pro množinu pravidel. Pravidla lze např. převést na soustavu rovnic relační 11 algebry. Takto získané rovnice lze řešit iterativně, obdobně jako soustavu algebraických rovnic. Výsledek řešení soustavy rovnic relační algebry se nazývá pevný bod. 2.3 Graf závislostí a rekurze Graf závislostí obsahuje predikáty jako uzly grafu a orientované hrany grafu vyjadřují tu skutečnost, že predikát p je odvoditelný z predikátu q. To znamená, že existuje pravidlo se subcílem označeným predikátem p a s hlavou označenou predikátem q. p q Logický program je rekurzivní, jestliže jeho graf závislostí má jeden nebo více cyklů. Predikáty, které jsou součástí jednoho nebo více cyklů, se nazývají rekurzivní predikáty. V příkladu 2-2 se předpokládá, že predikát rodič je koncept obsažený v EDB a predikáty sourozenec, bratranec a příbuzný jsou součástí IDB, rodič(R,D) znamená, že R je rodičem D. Graf závislostí: příbuzný bratranec sourozenec rodič Obr. 2-1 2.4 Bezpečná pravidla Podmínkou při definování pravidel je (mají-li mít operace nad databází smysl), aby byly operace prováděny nad konečnými relacemi. Existují dva zdroje, které vedou k nekonečným relacím: • Proměnná se vyskytuje pouze ve vestavěném predikátu. • Proměnná se vyskytuje pouze v hlavě pravidla. Pravidla by měla mít tu vlastnost, že nebudou vytvářet z konečných relací relace nekonečné. Existují v podstatě dva způsoby, jak zabezpečit výše 12 uvedenou vlastnost. Jednou možností je limitovat každou proměnnou, která se objeví v pravidle a druhou možností je povolit pouze ordinární (ne vestavěné) predikáty, které korespondují s konečnými relacemi. 2.4.1 Formální limitování proměnných podle [15] 1) Každá proměnná, která se objeví jako argument v ordinárním predikátu v těle pravidla je limitována. 2) Každá proměnná X, která se objeví ve výrazu typu X = a nebo a = X (kde a je konstanta) je limitována. 3) Proměnná X je limitována, pokud se objeví ve výrazu typu X = Y, kde Y je limitována proměnná. Pravidlo je definováno jako bezpečné, jestliže všechny jeho proměnné jsou limitovány. Příklad pravidel, která nejsou bezpečná: p(X,Y) ← X = Y limitovány p(X,Y) ← q(Y) proměnné X,Y nejsou proměnná Y je limitována výrazem q(Y), ale proměnná X není limitována Příklad bezpečného pravidla: P(X,Y) ← q(X,Z) & T = b & Y = T proměnné X, Z sou limitovány výrazem q(X,Z), proměnná T je limitována výrazem T = b, proměnná Y je limitována výrazem Y = T. 2.5 Vyhodnocování nerekurzívních pravidel V dalším textu budou předpokládána pouze bezpečná pravidla, která neobsahují negace. Taková pravidla jsou označována jako pravidla “datalogovská”. V atalogovské třídě pravidel existuje způsob převedení nerekurzivních pravidel do výrazů relační algebry a lze vždy nalézt takové uspořádání ve vyhodnocovaných pravidlech, že relace v ěle zrovna vyhodnocovaného pravidla jsou k ispozici [14]. Nechť existuje pravidlo r obsahující predikáty p1, …pn. Je-li toto pravidlo nerekurzivní, pak lze vytvořit graf závislostí p1, …, pn tak, že existuje-li hrana pi → pj, pak i < j. Jednotlivé relace lze vypočíst v ořadí p1, …, pn, přičemž při výpočtu relace pi se objeví pouze dříve vypočtené predikáty. Výpočet relace pro každý predikát pi lze podle [15] rozdělit do dvou kroků: 1) Pro každé pravidlo r, které má pi v lavě, se stanoví relace odpovídající tělu pravidla jako přirozené spojení dílčích relací, jejichž predikáty se vyskytují v ěle pravidla r. V ěle pravidla se vyskytují predikáty relací z BD, resp. IDB. Protože se jedná o 13 nerekurzivní pravidlo, lze předpokládat, že všechny relace z DB s redikáty pk, kde k < i jsou již vypočteny. 2) Vypočte se projekce relace získané v odě 1) dle proměnných vyskytujících se v ěle pravidla. Pokud existuje více pravidel rm, která mají pi v lavě pravidla, pak se bod 1) provede pro každé pravidlo rm a následně se provede sjednocení všech dílčích relací. Příklad 2-4: Příklad vychází z pravidla 2) v příkladu 2-2: bratranec(X,Y) ← rodič(X,Xp) & rodič(Y,Yp) & sourozenec(Xp,Yp) Nechť jsou vypočteny relace R a S pro predikáty rodič a sourozenec. Pravidlo 2) lze převést na rovnici relační algebry, která má následující tvar: B(X,Xp,Y,Yp) = R(X,Xp) ∗ R(Y,Yp) ∗ S(Xp,Yp) Operátor ∗ je operátor přirozeného spojení, který je asociativní a komutativní, tzn. nezáleží na pořadí uvedených predikátů. Relace B(X,Xp,Y,Yp) se skládá ze čtveřic (a,b,c,d) takových, že: (a,b) je obsažena v R (c,d) je obsažena v R (b,d) je obsažena v S Všechny čtveřice (a,b,c,d), které po dosazení do těla pravidla ohodnocují formuli jako true, tvoří relaci B. Příklad 2-5: Příklad demonstruje vyhodnocování nerekurzivních pravidel dle [15]. Nechť existují následující čtyři pravidla. 1) p(a,Y) ← r(X,Y) 2) p(X,Y) ← s(X,Z) & r(Z,Y) 3) q(X,X) ← p(X,b) 4) q(X,Y) ← p(X,Z) & s(Z,Y) Predikáty r a s jsou EDB predikáty, z čehož lze předpokládat existence relací R a S. Predikáty p a q jsou IDB predikáty, pro které je nutné vypočítat relace P a Q. Nejdříve je třeba vylepšit pravidla 1) a 3) odstraněním konstanty a opakované proměnné v hlavách pravidel. Pravidla lze upravit následovně: 1) p(X,Y) ← r(Z,Y) & X=a 2) p(X,Y) ← s(X,Z) & r(Z,Y) 14 3) q(X,Y) ← p(X,b) & X=Y 4) q(X,Y) ← p(X,Z) & s(Z,Y) Výpočet algebry: relace P se provede převedením pravidel na operace relační P(X,Y) = πX,Y(R(Z,Y) ∗ {a}) ∪ πX,Y(S(X,Z) ∗ R(Z,Y)) kde: πX,Y je projekce atributů X,Y, {a} je unární konstantní relace, ∗ je operace přirozeného spojení, ∪ je operace sjednocení. Dále se vypočte relace Q: Výraz pro dílčí relaci p(X,b) je: πX (σZ=b(P(X,Z)) kde: Z je libovolně zvolená proměnná, σZ=b je podmínka selekce, πX je projekce atributu X. Výše uvedený výraz přinese do relace q(X,Y) pouze atribut X. Relace však obsahuje i atribut Y, jehož hodnoty se rovnají hodnotám atributu X. Atribut Y do relace přinese výraz πY(P(Y,W)), kde W je opět libovolně zvolená proměnná. Kartézský součin (označený operátoren x) těchto dvou projekcí za podmínky, že X = Y je vyjádřením pravidla 3). σX=Y(πX(σZ=b(P(X,Z))) x πY(P(Y,W))) Pravidlo 4) lze zapsat výrazem: πX,Y (P(X,Z) ∗ S(Z,Y)) Výsledná relace Q je: Q(X,Y) = σX=Y(πX(σZ=b(P(X,Z))) x πY(P(Y,W))) ∪ πX,Y(P(X,Z) ∗ S(Z,Y)) 15 2.6 Rekurzivní pravidla Pravidlo je rekurzivní, pokud ve své hlavě obsahuje predikát shodný s predikátem v těle pravidla. Rekurzivní pravidla se vyskytují v dotazech na tranzitivní uzávěr množiny závislostí (chápaný ve smyslu [17]). Takový dotaz se skládá ze dvou pravidel. Startovacího pravidla, které je nerekurzivní a zabezpečuje bázi rekurze a rekurzivního pravidla, které zabezpečuje indukci. 2.6.1 Vyhodnocování rekurzívních pravidel Při vyhodnocování rekurzivních pravidel (tj. v grafu závislostí jednotlivých predikátů se vyskytuje cyklus) je situace složitější v tom, že výpočet dílčí relace obsahuje výraz, který ještě není vyhodnocen. Základní myšlenkou deduktivních databází je možnost odvozování faktů použitím pravidel a další využití těchto faktů k odvozování dalších faktů. Existuje-li konečná databáze EDB, na kterou se použijí datalogovská pravidla, existuje pouze konečný počet různých faktů, která mohou být odvozena. Tato fakta musí být ve tvaru p(a1, …, ak), kde p je IDB predikát a a1, …,ak jsou konstanty databáze. Pomocí pravidel lze vyjádřit graf závislostí uvedený na obr.2-1 a to s následujícím označením relací pro uvedené predikáty: R … rodič S … sourozenec B … bratranec P … příbuzný Graf závislostí pak lze podle [15] vyjádřit následujícími pravidly: 1) S(X,Y) = πX,Y(σX<>Y(P(X,Z) ∗ P(Y,Z))) 2) B(X,Y) = πX,Y(R(X,Xp) ∗ R(Y,Yp) ∗ S(Xp,Yp)) ∪ πX,Y(R(X,Xp) ∗ R(Y,Yp) ∗ B(Xp,Yp)) 3) P(X,Y) = S(X,Y) ∪ πX,Y (P(X,Z) ∗ R(Y,Z)) ∪ πX,Y(P(Z,Y) ∗ R(X,Z)) Výpočet relace B z pravidla 2) vyžaduje znalost B(Xp,Yp), ovšem tato relace ještě není vypočtena. Pravidlo 2) je třeba transformovat do soustavy rovnic relační algebry. Takto získané rovnice lze řešit iterativně, obdobně jako soustavu algebraických rovnic. Řešením soustavy rovnic relační algebry je tzv. pevný bod. Metoda pevného bodu je jedna z metod odvozování faktů z pravidel obsahujících rekurze. Vstupem do metody je kolekce datalogovských pravidel s EDB predikáty r1, …., rk a IDB predikáty p1, …, pk včetně příslušných relací R1, ….Rk. Výstupem je nejmenší pevný bod, který představuje množinu faktů odvoditelných z dané množiny pravidel. Pevný bod se získá řešením datalogovských rovnic získaných z pravidel. 16 2.7 Negace v pravidlech Situace, kdy je potřeba do těla pravidla umístit negativní literál je celkem frekventovaná. Čistě teoreticky již takové pravidlo není Hornovou klauzulí. Při přepisu takového pravidla do relační algebry by bylo nejjednodušší použít operace doplňku, který ovšem není základní operací relační algebry, a proto je vhodnější použít operaci rozdílu. Doplněk konečné množiny může být nekonečný a tato situace není přípustná z hlediska bezpečnosti deduktivních pravidel. Z uvedeného důvodu nelze nad doplňkem provádět operace selekce a spojení. Problém může nastat, pokud se v těle pravidla vyskytne proměnná pouze v negativním literálu. V takovém případě je třeba proměnnou eliminovat. Příklad 2-6: Nechť existují predikáty muž(X), rodič(X,Y) a pomocí deduktivních pravidel je odvozen predikát není_otec(X). není_otec(X) ← muž(X) ∧ ¬rodič(X,Y) Odstranění proměnné Y: otec(X) ← muž(X) ∧ rodič(X,Y) není_otec(X) ← ¬otec(X) Přepis do relační algebry: není_otec(X) = muž(X) - πX (rodič(X,Y)) V souvislosti s výskytem negace v těle pravidla vyvstává problém stratifikace. Stratifikace může být dosaženo pouze tehdy, lze-li pravidla rozdělit do takových vrstev, že k vyhodnocení každé vyšší vrstvy jsou vyžadována pouze fakta vyhodnocena v nižší vrstvě. Stratifikace nemůže být dosaženo, pokud se v pravidle vyskytuje koncept závislý na sobě samém jak negativně, tak rekurzivně. Nechť existuje množina pravidel, ve které se vyskytují predikáty p, q. Existuje-li pravidlo ve tvaru p ← ¬ q a zároveň existuje v grafu závislostí hrana z p do q, je daná množina pravidel nestratifikovatelná. Pro zjištění, zda daná množina pravidel je či není stratifikovatelná existuje jednoduchý algoritmus, který zároveň rozdělí pravidla do vrstev, ve kterých mají být vyhodnocována. Algoritmus je např. popsán v [15]. Pojmy k zapamatování: EDB, IDB, 17 dedukce, deduktivní pravidlo, formule, klauzule, Hornovy klauzule, interpretace klauzule, graf závislostí, rekurze, bezpečnost pravidel, vyhodnocování pravidel Úkoly k zamyšlení: 1. Navrhněte pravidlo, které nebude bezpečné. Zdůvodněte, proč je tomu tak. 2. Navrhněte soubor pravidel, která budou obsahovat rekurzi. 3. Vytvořte praktický příklad pro odvození faktu z množiny faktů a pravidel. Kontrolní otázky: 1. Jaké mohou být argumenty predikátů v Datalogu? 2. Uveďte příklad atomické formule s vestavěným predikátem. 3. Co je logickým ekvivalentem k zápisu¬p1 ∨ … ∨ ¬pn ∨ q a jak vypadá zápis takovéto Hornovy klauzule v Datalogu? 4. Vytvořte graf závislostí k příkladu 2-1. 18 3 DEDUKTIVNĚ OBJEKTOVÉ SYSTÉMY ŘÍZENÍ BÁZE DAT Cíl: Po prostudování kapitoly 3 budete lépe rozumět důvodům k přechodu od relačních databází k databázím objektovým a deduktivním, resp. objektovědeduktivním. Dále budete umět krátce charakterizovat některé systémy řízení báze dat založené na objektově-deduktivních paradigmatech. Klíčová slova: Deduktivní databáze, objektově-orientované systémy řízení báze dat, Florid, Gedblog, Illustra, ODE, Validity, RockRoll, P/FDM. Průvodce studiem: Problémy spojené s klasickým návrhem informačních systémů lze rozdělit do dvou skupin. Hlavní problém přináší ta skutečnost, že reálný svět je mnohem složitější než je schopen postihnout jeho model (informační systém). Dalším problémem je korektnost informačního systému a uspokojivá transformace dotazů sestavených v přirozeném jazyce do jazyka umělého, včetně interpretace odpovědí. Snaha řešit tyto problémy posouvá výzkum a vývoj v oblasti databázových technologií směrem k technologiím objektovým a deduktivním. Deduktivní databáze reprezentují přístup, který vznikl z požadavku rozšíření vyjadřovací síly relačního jazyka a zároveň zachování jeho neprocedurality. Nezanedbatelná výhoda deduktivních databází ovšem spočívá rovněž v redukci dat, kdy je možno nahradit velké množství dat několika deduktivními pravidly. Zajímavý je příklad F.Bryho, který realizoval informační systém veřejné dopravy s využitím deduktivní databáze. „Pravidlo: Je-li svátek, platí jízdní řád jako v neděli nahradí mnoho konkrétních denních jízdních řádů“ [14]. Zajištění větší flexibility při řešení multimediálních a distribuovaných požadavků je problém, jehož řešení se spojuje se vznikem objektověorientovaných databází. Objektově-orientované systémy řízení báze dat by měly zajistit větší flexibilitu při práci s velkými objemy dat, při práci s komplikovanými transakcemi a při zakomponování databází do moderních distribuovaných architektur (např. COBRA). Současné trendy ve vývoji databázové technologie ukazují, že vedle tradičních databázových systémů 2. generace budou vyvíjeny systémy pro bohatší podporu struktur objektů a pravidel. Požadavky jsou kladeny na správu objektů a implementaci pravidel. Ve většině deduktivně objektových systémů řízení báze dat jsou pravidla zabudována do metod tříd, což vede k duplicitním kódům. Vhodnější přístup k využití deduktivních pravidel je možné spatřovat v udržování pravidel zvlášť (jako samostatné objekty) a 19 umožnit na ně konstruovat i dotazy. Vzhledem k univerzalitě a širokému využívání jazyka SQL se dá předpokládat, že zůstane zachován i ve většině budoucích databázových systémů. To ovšem nebrání implementaci objektových a deduktivních jazyků, jak jsou toho příkladem jazyky O-Telos a Chimera, jejichž charakteristice se budeme ještě v této opoře věnovat. I když spojení deduktivně objektová databáze není jediné možné a bylo vyvinuto několik deduktivně relačních systémů řízení báze dat, založených na DATALOGu (LDL, NAIL!, POSTGRES), výzkum a vývoj se v současné době zaměřuje především na spojení těchto dvou přístupů, tj. objektového a deduktivního. V této souvislosti lze jmenovat např. systémy ConceptBase, Florid, Gedblog, Illustra, ODE, Validity RockRoll, P/FDM. Systém ConceptBase je podrobně popsán v kapitole 4 a je snadno dosažitelný v plně funkční podobě na Internetu včetně nezbytné dokumentace. (http://www-i5.informatik.rwth-aachen.de/CBdoc/cbaccess.html). Následuje krátká charakteristika ostatních, výše uvedených systémů řízení báze dat. Podrobnější popis by byl nad rámec předkládané výukové opory. Pro bližší seznámení se s popisovanými systémy jsou uváděny odkazy na další materiály, vesměs na URL adresy. 3.1 Florid Florid je deduktivně objektový databázový systém, který využívá jazyka Flogic k definování datových struktur a dotazování. F-logic je navržen jako logický, deklarativní jazyk, který akceptuje objektově-orientované modelování dat, a který kombinuje deklarativní sémantiku a expresivitu deduktivních databázových jazyků s bohatými modelovacími schopnostmi objektově-orientovaných datových modelů. Systém Florid podporuje definice schémat databáze včetně vícenásobné dědičnosti. Vyhodnocování logických programů je založeno na postupu zdola-nahoru vycházejícího z DATALOGu. Florid umožňuje komunikaci s web servery a tudíž zabezpečuje přístup k web dokumentům. Florid byl vyvinut na univerzitě v Mannheimu a Freiburgu. Více informací o jazyku F-logic lze získat na URL adrese: http://foldoc.doc.ic.ac.uk/foldoc/foldoc.cgi?F-Logic nebo na adrese http://www.cs.sunysb.edu/~kifer/dood/. 3.2 Gedblog Gedblog je logický systém řízení báze dat (založený na logické databázové teorii), který má schopnost zpracovávat ne-grafické i grafické informace. Byl vyvinut jako rozšíření systému Edblog právě o možnost zpracování grafických informací. Gedblog využívá logické teorie založené na různých typech klauzulí: 20 • • • • Hornovy klauzule (pravidla pro vyjádření intenzionální databáze a fakta pro extenzionální databázi). Integritní omezení jsou interpretována tak, že instance hlavy pravidla jsou dedukovány, jestliže tělo pravidla je vyhodnoceno jako true. Kontroly podmínek platnosti (check). Syntaxe podmínek platnosti je: A1&….&An → B1 &….&Bm Transakce, které představují vykonání modifikace extenzionálních dat za situace, jsou-li splněny stanovené podmínky. Více informací o systému lze získat na adrese: http://rep1.iei.pi.cnr.it/projects/GEDB/. 3.3 Illustra Illustra je vcelku nový systém řízení báze dat (z r. 1995), který spojuje relační systém s objektovou orientací a s aktivními pravidly. Illustru bychom mohli označit jako objektově relační systém řízení báze dat, který disponuje relačním datovým modelem, jazykem SQL a který je rozšířen o objektovou orientaci (dědičnost, metody, …). Pro definování struktur databáze. Illustra disponuje vestavěnými datovými typy a jakýmikoli uživatelem definovanými datovými typy. Dědičnost se vztahuje jak na atributy, tak na funkce. Funkce v Illustře jsou části kódu, zapsaného v SQL nebo v C, které mohou být uchovávány v databázi a mohou být volány. Pravidla využívá Illustra k tomu, aby přebírala zodpovědnost za správnost manipulace s daty (jednoduché operace Insert, Delete, Update), tzn. pravidla slouží převážně k definování integritních omezení. 3.4 ODE Systém ODE je založen na databázovém programovacím jazyku O++, který je rozšířením jazyka C++ o podporu řízení dat jako jsou transakce, perzistentní objekty a aktivní pravidla. V ODE je koncept aplikační domény modelován prostřednictvím tříd, jejichž syntaxe a sémantika je inspirována jazykem C++. ODE využívá jak perzistentních, tak volativních objektů (pozn. perzistence, resp. volativnost není vlastnosti tříd, nýbrž vlastností objektů). Deduktivní pravidla systém ODE nepodporuje, pouze pravidla aktivní, která se v ODE nazývají triggery. Pokud chceme možností deduktivních pravidel využít i v systému ODE, je třeba je transformovat do triggerů. To znamená převést deklarativní výraz na O++ funkci. Transformovat lze rovněž rekurzivní pravidlo využitím rekurzivní funkce jazyka O++. Generická integritní omezení systémem ODE přímo podporována nejsou. Integritní omezení jsou přeložena do aktivních pravidel (triggerů). Při překladu je třeba replikovat všechna aktivní pravidla, která vznikla transformací deduktivních pravidel, v příslušných třídách, protože ODE nepodporuje necílené koncepty (pozn. pojem cílený resp. necílený koncept bude vysvětlen dále). 21 Pro více informací lze sáhnout na adresu: http://www.nada.kth.se/~sam/Pim/Db/userguide.html. 3.5 Validity Validity patří do skupiny deduktivně objektových databázových systémů. Často se vyskytuje termín deduktivní a objektově-orientované databáze (DOOD). Současný výzkum v oblasti deduktivních databází je zaměřen na spojení deduktivních schopností s objektově orientovanými databázemi za účelem kombinace výhod expresivity objektových datových modelů a deklarativního stylu logického programování. Validity je prvním komerčním produktem na tomto poli výzkumu a vývoje. Deduktivní jazyk implementovaný v systému Validity se nazývá DEL (Datalog Extended Language). DEL umožňuje uživatelem definované typy, jednoduchou i vícenásobnou dědičnost, metody. Deklarativní DEL je jazykem pro psaní formulí, které jsou používány jako deduktivní pravidla a integritní omezení. Příkazový DEL je databázový programovací jazyk, umožňující zapisovat aplikační transakce, těla funkcí a metody. Současná verze systému Validity neumožňuje zapisovat aktivní pravidla. Více informací o systému Validity lze získat např. z článku Oris Friesen, Alexandre Lefebvre, Laurent Vieille: VALIDITY: Applications of a DOOD System. EDBT 1996: 131-134, Springer. 3.6 RockRoll RockRoll je deduktivní a objektově-orientovaný databázový systém, který disponuje příkazovým databázovým jazykem ROCK a deduktivním dotazovacím jazykem ROLL. ROCK může být použit pro definování schématu databáze a pro manipulaci s daty, zatímco ROLL se využívá k tvorbě dotazů a k definování deklarativních metod. Více informací lze nalézt na adrese: http://www.cee.hw.ac.uk/Databases/rnr.html. 3.7 P/FDM P/FDM je systém řízení báze dat, který byl navržen pro řešení netradičních aplikací, jako jsou aplikace pro návrh databází. Jedná se o systém založený na datovém modelu v Prologu, který je rozšířen o některé rysy objektověorientovaných datových modelů. Manipulace s daty je realizována jednoduchými operacemi, implementovanými jako procedury v Prologu. Kromě Prologu je součástí P/FDM i kompilátor jazyka Daplex (jazyk pro definice dat a manipulaci s daty). Daplex je deklarativní jazyk vysoké úrovně. Výstupem z kompilátoru Daplexu je prologovský program, který obsahuje vložená volání jednoduchých databázových operací. Daplex obsahuje optimalizátor dotazů, který využívá heuristické vyhledávání. Kompilátor je schopen přeložit generická integritní omezení vyjádřená v Daplexu do fragmentů programu v Prologu, který hlídá integritu dat 22 při aktualizaci databáze. P/FDM disponuje grafickým uživatelským rozhraním, založeným na formulářích. Ve vývoji je verze systému, která bude využívat tří-rozměrnou grafiku. Systém pracuje ve vyspělém víceuživatelském režimu. Ucelenou představu o systému lze získat prostudováním web stránek na adrese http://www.csd.abdn.ac.uk/~pfdm/. Průvodce studiem: Kromě výše zmíněných SŘBD existují a jsou více méně ověřovány i další systémy, jako např. Algres, LDL++, Quixote, Aditi, Coral, XSB a další. Některé z nich jsou volně dostupné na Internetu, v některých z nich již byly vytvořeny četné aplikace. Většinou se jedná o systémy vyvinuté na západoevropských a amerických univerzitách. Pojmy k zapamatování: Deduktivní databáze, objektově-orientované systémy řízení báze dat, Florid, Gedblog, Illustra, ODE, Validity, RockRoll, P/FDM. Úkoly k zamyšlení: Pokuste se najít na Internetu některé další systémy řízení báze dat, které vykazují charakteristiky deduktivních databází. Krátce je popište včetně tříd aplikací, na kterých již byly využity. Kontrolní otázky: 1. Co je hlavní výhodou deduktivních databází? 2. Jaké jsou základní charakteristiky deduktivních systémů pro řízení báze dat (SŘBD)? 3. Jaké znáte deduktivní SŘBD? 23 4 DEDUKTIVNĚ OBJEKTOVÝ DATABÁZOVÝ SYSTÉM CONCEPTBASE A JEHO ZÁKLADNÍ KOMPONENTY Cíl: Po prostudování této kapitoly budete umět: - vyjmenovat klíčové charakteristiky ConceptBase, - vyjmenovat a popsat vzory tvrzení v ConceptBase, - vyjmenovat a vysvětlit Telosovské axiomy, - sestavit jednoduchý model v Telos, - sestavovat literály a formule v Telos, - sestavovat dotazy v Telos, - převést E-R diagram na CB graf. Klíčová slova: ConceptBase, Logický, rámcový a grafický formát, Telos, vzory tvrzení, třídy znalostní báze, Telosovské axiomy, CBL, dotazování, model, metamodel. Systém ConceptBase je rozšířením relačních databázových systémů ve dvou směrech. Jednou oblastí je zavedení objektově orientovaných abstrakcí do datového modelu, dalším rozšířením je zabudování deduktivních abstrakcí a v tomto ohledu je systém ekvivalentem logických a sémantických sítí. Co se týká architektury, systém ConceptBase je systémem s architekturou klient server. V ConceptBase je implementován jazyk pro reprezentaci znalostí Telos. Databáze v ConcetBase je objektovou databází s pravidly jako atributy tříd. Hlavní rozšíření je v přidání komplexních domén, sdílených objektů a procedur do databáze. Znalostní reprezentace vychází z deduktivních databází nebo ze sémantických datových modelů. Jazyk Telos umožňuje integrovat deduktivní a objektově-orientované datové modely. Průvodce studiem: Veškeré definice, axiomy a vzorce, použité v této kapitole, jsou přebrány od autorů systému ConceptBase (Lehrstuhl Prof. Dr. Matthias Jarke, c/o ConceptBase Team). Většina literatury pro zpracovní této kapitoly byla získána prostřednictvím Internetu na zdrojové adrese http://wwwi5.informatik.rwth-aachen.de/CBdoc/. 24 Definice 4-1 podle[25] ConceptBase je deduktivní objektově orientovaný systém řízení metadatabází, zaměřený především na konceptuální modelování. Systém má implementován jazyk Telos. Klíčové charakteristiky: • • • • • • • • • • • Logický, rámcový a grafický pohled na uložené objekty. Neomezená možnost rozšiřování hierarchie tříd. Deduktivní pravidla a integritní omezení jako atributy tříd. Dotazy jako třídy s omezeným členstvím. Komplexní pohledy. Aktivní pravidla se schopností aktualizovat databáze a spouštět externí programy. Perzistentní objekty s možným přístupem k historii objektů. Úroveň meta pravidel a integritních omezení pro axiomatické rozšíření jazyka. Optimalizace dotazů. Grafický prohlížeč. Interface pro deklaraci dotazů a tvorbu Telosovských objektů. Všechny třídy, meta třídy, instance, atributy, pravidla, integritní omezení a dotazy jsou reprezentovány jako objekty. Každý objekt může být aktualizován po dobu životního cyklu objektové báze. Dokonce členství ve třídě je reprezentováno jako objekt. Sémantika Telosu je založena na DATALOGu. Schopnost metamodelování dovoluje využívat heterogenní modelovací jazyky jako E-R diagram, OMT, atd. jako Telosovské metatřídy, jejichž pravidla a integritní omezení zakóduje do axiomů např. procesem generalizace. Metatřídy mohou existovat v rámci stejné objektové báze. Objekt popsaný v jednom modelovacím jazyku může být spojen s objektem popsaným v jiném modelovacím jazyku. ConceptBase sleduje klient-server architekturu. Klientský program se může spojit s ConceptBase serverem a měnit data s využitím komunikačního protokolu Internetu. Programovací interface umožňuje uživateli vytvářet vlastní klientské aplikace v Jave, C nebo Prologu. ConceptBase využívá X11 interface, který nabízí grafické, tabulkové a textové nástroje pro editování a prohlížení objektové báze. 4.1 Jazyk Telos v ConceptBase Model vytvořený v jazyce Telos zevšeobecňuje dřívější datové modely a znalostní reprezentace, jako E-R diagram nebo sémantické sítě a spojuje je s predikátovými tvrzeními a dočasnými informacemi. 25 Příklad 4-1: Následuje stručné popsání reality, na které budou demonstrovány některé příklady kapitoly 4. Společnost má zaměstnance, někteří z nich mohou být manažéry. Zaměstnanci mají jméno a plat, které se může občas měnit. Jsou přiřazeni k oddělení, které je vedeno manažérem. Vedoucí zaměstnance může být odvozen od oddělení zaměstnance a manažéra oddělení. Žádnému zaměstnanci není dovoleno vydělat více, než vydělává jeho vedoucí. Telos podporuje tři různé formáty pro zápis příkazů. Základním formátem je formát logický, který umožňuje začlenit jazyk predikátových tvrzení pro deduktivní pravidla, dotazy a integritní omezení. Dalšími formáty je formát grafický (sémantická síť) a formát rámcový (frame). Oba formáty jsou založeny na formátu logickém a jsou z něho odvozeny. 4.1.1 Logická interpretace znalostní báze Znalostní báze v Telosu je založena na konečné množině vzájemně propojených tvrzení, která jsou zde chápána jako objekty. KB = {P(oid, x, l, y, tt)| oid, x, y, tt ∈ID, l ∈ LABEL }, kde: oid je identifikátor, který je klíčem v znalostní bázi, ID je neprázdná množina identifikátorů, LABEL je neprázdná podmnožina jmen, x je zdroj, l je jméno, y je cíl, tt je doba trvání. Objek x má vztah s objektem y, kde jméno vztahu je l. Vztah se předpokládá do doby tt. 4.1.2 Vzory tvrzení V ConceptBase jsou rozeznávány čtyři vzory tvrzení a jsou jim dávána následující jména: 1) Individuals P(oid, oid, l, oid, tt) Toto tvrzení vytváří objekt oid se jménem l, jehož trvání se předpokládá do doby tt. 2) InstanceOf relationship (instantiations) 26 P(oid, x, *instanceof, y, tt) Toto tvrzení vytváří instanci x třídy y do doby tt. 3) IsA relationships (specializations) P(oid, x, *isa, y, tt) Toto tvrzení vytváří třídu x jako specializaci třídy y do doby tt. 4) Attribute Všechna další tvrzení. 4.1.3 Předdefinované třídy Telosovské znalostní báze Telos využívá strukturální axiomy, jejichž úplný výčet je uveden v publikaci [18]. Tyto axiomy jsou spojeny s předdefinovanými třídami, které jsou automatickou součástí každé Telosovské znalostní báze. Individual obsahuje všechny individualy jako instance InstanceOf obsahuje všechny konkretizace jako instance IsA obsahuje všechny specializace jako instance Attribute obsahuje všechny atributy jako instance Proposition obsahuje všechna tvrzení jako instance Class obsahuje všechny třídy (včetně sebe) jako instance Token obsahuje ty individualy, které již nemohou mít instance SimpleClass obsahuje individualy, které mohou mít instance, které jsou Token MetaClass obsahuje individualy, které mohou mít instance, které jsou SimpleClass Metameta Class obsahuje individualy, které mohou mít instance, které jsou MetaClass Navíc Telos využívá vestavěných tříd jako Integer, Real a String. 4.1.4 Některé Telosovské axiomy Uživatelé nepracují přímo s tvrzeními, ale s jejich textovou (frame) nebo grafickou (sémantická síť) podobou. Tyto formáty nejsou založeny na oid objektů, ale na jejich komponentě label. Aby bylo garantováno jednoznačné mapování, musí platit axiom pojmenování. Axiom pojmenování Jméno individualu musí být jednoznačné, jména všech atributů společného zdrojového objektu musí být rovněž jednoznačná. 27 Specializační axiom Cílový objekt specializace dědí všechny instance svého zdroje. Dle příkladu 4-1 všechny instance třídy Manažér jsou zároveň instancemi třídy Zaměstnanec. Konkretizační axiom Jestliže p je tvrzení, které je instancí tvrzení P, pak zdroj p musí být instancí zdroje P a cíl p musí být instancí cíle P. 4.2 Jednoduchý model v Telos Nechť existuje následující jednoduchý model: O so b a P a cien t Lék Jakub P en icilín Obr. 4-1 Pak tvrzení, korespondující s uvedenými objekty a vztahy, jsou následující: 1) Proposition(Osoba, Osoba, -, Osoba) 2) Proposition(Pacient, Pacient, -, Pacient) 3) Proposition(#1, Pacient, *isa, Osoba) 4) Proposition(Lék, Lék, -, Lék) 5) Proposition(#2, Pacient, bere, Lék) 6) Proposition(Penicilín, Penicilín, -, Penicilín) 7) Proposition(#3, Penicilin, *instanceof, Lék) 8) Proposition(Jakub, Jakub, -, Jakub) 9) Proposition(#4, Jakub, *instanceof, Pacient) 10) Proposition(#5, Jakub, lék1, Penicilín) 11) Proposition(#6, #5, *instanceof, #2) 28 Oid, výše označováno #, je generováno systémem. Objekty, korespondující s tvrzeními 1), 2) a 4), jsou individualy. Ostatní objekty se nazývají atributy a to atributy instanční, které mají třetí komponentu *instanceof a atributy specializační, které mají třetí komponentu *isa. Je-li tvrzení ve formě Proposition(oid, x, *instanceof, c), pak x je instancí c (c je třídou x). Je-li tvrzení ve formě Proposition(oid, c, *isa, d), pak c je subclass d (d je superclass c). 4.3 Predikátový jazyk CBL jako součást Telos Predikátový jazyk CBL se využívá k vyjádření integritních omezení, deduktivních pravidel a dotazů. Proměnné, použité ve formulích, musí být kvantifikovány a spojeny s typem, který limituje rozsah možných instancí z množiny instancí dané třídy. Obvykle je znalostní báze omezena do doby rollbacku, která závisí na typu formule. KBrbt = {P(oid, x, l, y, tt) in KB | rbt during tt} Integritní omezení je vyhodnocováno v aktuální KB (rbt představuje aktuální čas prováděné transakce). Rollback pro dotaz je dán dobou vyhodnocení dotazu. Význam použitých symbolů je shodný s významem odpovídajících symbolů v kapitole 4.1.1. 4.3.1 Literály, umožňující přístup k Telos objektům 1) (x in c) resp. in(x,c) infixová, resp. prefixová notace Objekt x je instancí třídy c. 2) (c isA d) resp. IsA(c,d) Objekt c je specializací třídy d. 3) (x m y) resp. A(x,m,y) Objekt x má atribut, jehož hodnoty jsou instance objektu y. Takto definovaný vztah je instancí kategorie atributů s označením m. 4) From(p, x) Objekt p má zdroj v objektu x. 5) To(p, y) Objekt p má cíl v objektu y. 6) Label(p, l) Objekt p má jméno l. Následující literály definují druhou třídu formulí: 7) x < y, x > y, x <= y, x >= y, x = y, x <> y, kde x,y musí být instance třídy Integer nebo Real. 8) x = = y 29 Objekty x a y jsou totožné. 4.3.2 Kvantifikovatelné proměnné Formule s univerzálním kvantifikátorem má tvar: Forall x | c F nebo forall x(x in c) → F Pro všechny instance x třídy c platí formule F. Formule s existenčním kvantifikátorem má tvar: Exists x | c F nebo exists x (x in c) and F Existuje instance x třídy c, pro kterou platí formule F. 4.3.3 Restrikce pro formule Každá konstanta, obsažená ve formuli F, musí být jméno existujícího objektu v Telosovské znalostní bázi nebo je to konstanta vestavěné třídy Integer, Real nebo String. Každý atribut (x m y) obsažený ve formuli musí mít unikátní jméno m ve znalostní bázi. Definice 4-2 podle[25] Legální integritní omezení je CBL formule, která splňuje uvedené restrikce. Příklad 4-2: Zapišme integritní omezení pro plat zaměstnance/manažéra (vycházeje z příklady 4-1), když platí, že plat zaměstnance/manažéra nesmí být větší než 10.000,- Kč Forall x | Zaměstnanec y | Integer (x plat y) → y <= 10000 30 Forall x | Manažér y | Integer (x plat y) → y <= 10000 Definice 4-3 podle[25] Legální deduktivní pravidlo je CBL formule splňující uvedené restrikce a mající formát: forall x1 | c1 … forall xn | cn R → lit(a1, …, am) kde: lit je literál typu 1) 2) nebo 3), proměnné a1, …, am odpovídají proměnným x1, …xn, které jsou tříd c1 , …ca, R je formule. V Telosu jsou pravidla a integritní omezení definována jako atributy tříd. Text formule je uzavřen do znaků “$“. Následující formule definuje šéfa zaměstnance jako deduktivní pravidlo a stanovuje integritní omezení pro plat zaměstnance, kdy plat zaměstnance nesmí být větší než plat jeho šéfa. Zaměstnanec with Rule ŠéfRule: $forall z | Zaměstnanec m | Manažér (exists o | Oddělení (z oddel o) and (o vedoucí m)) → ( z šéf m) $ constraint PlatHranice: $ forall z | Zaměstnanec b | Manažér x,y | Integer (z šéf b) and (z plat x) and (b plat y) → x < y $ End 4.4 Dotazování v ConceptBase 4.4.1 Začlenění dotazů do objektově orientované databáze Z abstraktního pohledu databáze organizují informace do množin objektů. V objektově orientovaných databázích jsou tyto množiny nazývány třídami a jejich elementy jsou omezovány ne příliš komplikovanými výrazy. Podobné výrazy pro popis tříd objektů (tzv. konceptuální popisy neboli koncepty) jsou zkoumány v umělé inteligenci, kde se vyskytují v jazycích pro reprezentaci znalostí. Tato podobnost mezi databázovým výzkumem a oblastí umělé inteligence nabízí možnost využití rozumných technik pro koncepty při popisech schémat tříd a dotazů v objektově orientované databázi. Dotazy po jejich vyhodnocení vracejí množiny objektů. Objektově-orientované databáze nabízí možnost znovu použít dotazy, 31 protože jejich schémata jsou obvykle bohatší a detailnější než schémata relačních databází. Hodnoty atributů jsou omezeny typy tříd, třídy mohou mít podtřídy s dodatečnými omezeními. 4.4.2 Schéma a dotazovací jazyk Třídy jsou seskupením konečné množiny objektů ( instancí tříd). Předpokládejme, že podmínka pro členství může být vyjádřena výrazem v logice 1. řádu. • Vztahy podtříd • Třídy jsou organizovány v hierarchii. Každá instance třídy je také instancí supertřídy. Deklarace atributů Objekty mohou mít atributy, které nabývají hodnot z domén. Domény jsou omezeny třídami. Podtřídy mohou mít atributy omezeny rozsahem podtřídy. Atributy mohou být specifikovány jako funkce a mají většinou jednu hodnotu, je-li to nutné, pak mají vždy jednu hodnotu. Konceptuální jazyk je velmi podobný jazykům pro definování schémat a dotazů v OODB. Koncept je intenzionální popis množin objektů zkonstruovaných z primitivních konceptů a atributů. Komplexní koncept může být zkonstruován z existujících konceptů. 4.4.3 Třídy dotazů Dotazování v objektových databázích znamená získávání uložených objektů, které odpovídají zadaným podmínkám. V relačních databázích jsou dotazy konstruovány pomocí operací relační algebry a odpovědí jsou opět relace např. množiny n-tic. V objektově orientovaných databázích jsou množiny reprezentovány objekty a je přirozené objekty použít jak pro popis dotazu, tak pro výsledek dotazu, tedy odpověď. Otázkou je, zda odpověď může vytvářet nový objekt, či zda odpověď je nutno uložit do existujícího objektu. V ConceptBase objekty dotazů musí být společné instance všech supertříd. V dotazu lze specifikovat tzv. odvozené koncepty, které se specifikují v klauzuli derived. Forma této specifikace je: Ij: (a1:C1).(a2:C2)…(an:Cn), kde: Ij je návěští, ai jsou atributy, 32 Ci jsou třídy. Návěští odpovídají odvozeným konceptům a dále se využívají v klauzuli where pro porovnávání hodnot vytvořených konceptů. Dotazy obsahují omezení (constraints), která definují další podmínky pro objekty zahrnuté do odpovědi dotazu. Omezení jsou specifikována logickými formulemi podobně jako omezení při definování schématu tříd. Ve formuli se může objevit i návěští. Proměnná this odkazuje na odpověď dotazu. Definice 4-4 podle[25] V ConceptBase jsou dotazy definovány jako speciální třídy, jejichž instance jsou odpověďmi na příslušné dotazy. Dotazy jsou instancemi systémové třídy QueryClass. QueryClass je definována: Individual QueryClass in Classs isA Class with attribute retrieved_attribute: Proposition; extenzionálních atributů computed_attribute: Proposition intenzionálních atributů attribute, single constraint:MSFOLquery End pozn. projekce pozn. projekce pozn. restrikce Je-li specifikován dotaz, musí být odpověď instancí supertřídy, tj. v rozsahu hodnot definovaných supertřídou. Příklad 4-3: Definujme Manažéry - odboráře, jako ty manažéry, kteří jsou členovy odborů. Individual Odbory in Class End Individual ČlenOdborů in Class with attribute odbory:Odbory End QueryClass ManažérOdborář isA Manažér, ČlenOdborů end QueryClass ManažérOdborář isA Manažér, ČlenOdborů with retrieved_attribute 33 odbory:Odbory; plat: Integer End Retrieved attribute je obdobou projekce v relační algebře. Atributy musí být prezentovány v jedné ze supertříd querytřídy. V našem příkladu atribut odbory se dědí ze třídy ČlenOdborů a plat se dědí ze třídy Manažér. CBQL vyžaduje projekci atributů v dotazu. Každá odpověď musí zahrnovat projekci atributů. Příklad 4-4: Specifikujme hodnotu atributu VysokýPlat jako plat Manažéra-odboráře, který je větší než 60.000,-Kč. QueryClass VysokýManažérOdborář isA ManažérOdborář with retrieved_attribute plat:VysokýPlat End Individual VysokýPlat in Class isA Integer with rule VysokýPlatpravidlo: $forall m/Integer (m >= 60000) → (m in VysokýPlat) $ End Třída hodnot atributů VysokýPlat je podtřídou vestavěné třídy Integer, tj. každá odpověď, která vyhovuje dotazu na atribut VysokýPlat vyhovuje i dotazu na atribut plat. ConceptBase pracuje s tzv. query constraint. Jejich definice vychází z definice deduktivního pravidla. Definice 4-5 podle[25] Nechť Q je query třída s integritním omezením F, které obsahuje předdefinovanou proměnnou this. Pak query pravidlo je definováno jako formule forall this/Proposition F → Q(this) ConceptBase automaticky generuje řešení (this in Q) z literálu Q(this). Příklad 4-5: Zjistěme všechny Vysoké-manažéry-odboráře, jako Manažéry-odboráře, kteří mají VysokýPlat. QueryClass VysokýManažerOdborář isA ManažérOdborář with 34 retrieved_attribute odbory:Odbory constraint vysokýmanažérpravidlo: $ exists s/VysokýPlat (this plat s) $ End V dotazu se také mohou objevovat tzv. vypočítávané atributy. Tyto vypočítávané atributy se definují pro danou třídu, nikoliv pro její supertřídu. Rozsah hodnot je definován pomocí deduktivního pravidla. Předpis pro výpočet hodnoty vypočítávaného atributu je součástí pravidla v dotazu. Literál, jako odpověď na tento dotaz Q(this, v), obsahuje instance dotazu obsažené v this a vypočítané hodnoty atributu obsažené ve v. Pak je query pravidlo definováno jako formule: Forall this/Proposition forall v/C F → Q(this, v) kde: v jsou vypočítávané atributy, C jsou příslušné třídy atributů v. Příklad 4-6: QueryClass VysokýManažerOdborář2 isA ManažérOdborář with retrieved_attribute odbory:Odbory computed_attribute vedoucí: Oddělení constraint vysokýmanažérpravidlo: $ exists s/VysokýPlat (this plat s) and (~vedoucí vede this)$ End Pozn. V ConceptBase označení pro vypočítávaný atribut musí mít prefix ~ V dotazech je možno využít rekurze použitím rekurzivních deduktivních pravidel nebo odkazem na třídu dotazu. Dále je možno využívat dotazů s parametrem nebo parametry. Struktura dotazu s parametrem je: Individual GenericQueryClass isA QueryClass with Attribute Parameter:Proposition End 35 Parametry mohou být získané nebo vypočtené hodnoty atributů. 4.5 Modelování a metamodelování v ConceptBase Deduktivně objektový databázový systém ConceptBase lze využít při návrhu a implementaci informačních systémů s podporou metamodelování. Formální metamodel umožňuje formulaci sémantických podmínek mezi různými specifikacemi (např. vytvořenými různými týmy nebo technikami) a tím zabezpečuje koordinaci vývoje informačního systému. Metainformační systém řídí integraci schémat do IS. Schémata subsystému jsou totiž součástí jeho dat. Ve standardu ANSI IRDS (Information Resource Dictionary Standard) je na nejvyšší úrovni omezený E-R model (pouze s binárními vztahy). Jako příklad je možno uvést softwarovou databázi s relačním schématem, aplikačními programy, jejich modulární kompozicí, jejich vzájemnými závislostmi, odkazy na zdroje, atd. Aplikační data obsahují n-tice hodnot a odkazy na konkrétní programy. Nejvyšší úroveň takové softwarové databáze je založena na relačním datovém modelu. Relační model sám je uložen ve schématu ve standardu ANSI IRDS. Standard předpokládá uložení jak datového modelu, tak programů do schématu. 4.5.1 ConceptBase jako nástroj modelování ConceptBase disponuje metamodelovacím nástrojem k definování schémat každého subsystému. Na rozdíl od běžných databázových přístupů, ConceptBase není vhodný k rozlišování mezi datovou úrovní a úrovní schémat (úrovní dat a metadat). Na druhé straně vyžaduje abstrakční formalizmus podobný objektově orientovaným systémům (konstruktor, isa hierarchie, atd.). Důležitý požadavek se týká schopnosti vyjádření závislostí mezi objekty v subsystému. Datový model v ConceptBase zabezpečuje deduktivní formalizmus objektově orientovaného datového modelu. Deduktivní pravidla a integritní omezení jsou jedinými prostředky ke specifikování metod. Z tohoto pohledu je možno deduktivně objektovou databázi v ConceptBase chápat jako trojici: DOB = (OB, R, IC), kde: OB je extenzionální objektová báze, R jsou deduktivní pravidla, IC jsou integritní omezení. Databáze obsahuje předdefinovanou množinu strukturálních axiomů reprezentovanou formulemi v R a v IC. Obvykle je požadováno, aby OB a R vyhovovaly IC, což [25] zapisuje: 36 OB ∪ R╞ IC Extenzionální objektová báze je konečná podmnožina, kterou [25] zapisuje jako: OB ⊆{P(o, x, l, y)|o, x, y∈ID, l ∈ LAB}, kde: o je klíčem v znalostní bázi, ID je neprázdná množina identifikátorů s neprázdnou podmnožinou LAB všech jmen, komponenty o, x, l, y se nazývají identifikátor, zdroj, jméno vztahu a cíl, objekt x má vztah s objektem y, jméno vztahu je l. Elementy OB jsou označovány jako objekty. Extenzionální báze může být vizualizována jako strukturovaná sémantická síť. Objekty označované „individuals” představují uzly sémantické sítě. Objekty označované „instatiations“ a „specializations“ představují hrany (linky). Ostatní objekty jsou nazývány atributy. Sémantická síť může obsahovat linky mezi linkami. ConceptBase neomezuje počet úrovní, schéma může být instancí množiny metatříd, tyto mohou být instancemi metametatříd, atd. Uzávěr může být zabezpečen objektem Object a Class. ConceptBase umožňuje ekvivalentní syntaxi pro deduktivně objektové báze, tzv. frame syntaxi, která pracuje s názvy objektů, nikoli s identifikátory. ConceptBase je vybavena množinou axiomů (jejich plný výčet uvádí publikace [18]), které lze rozdělit do čtyř skupin: • Identita objektů a odkazů. • Tyto axiomy definují základ deduktivně objektové databáze. Zabezpečují unikátnost všech interních identifikátorů a referenční integritu všech elementů v OB. Externí pojmenování objektů. • Tyto axiomy garantují unikátní mapování objektů z různých forem (grafické, frame) do základní logické formy, ve které jsou objekty identifikovány pomocí unikátního identifikátoru. V praxi to znamená unikátní pojmenování objektů v grafické a frame formě. Definování abstraktních principů jako odvozených vztahů. • Jsou zavedeny tři predikáty In, Isa a A. Predikát In(x,y) značí, že objekt x je třídy y, Isa(c,d) značí, že objekt c je s objektem d ve vztahu ISA hierarchie. Predikát A(x,m,y) značí, že objekt x má atribut y s názvem m. Definování abstraktní sémantiky. 37 Tyto axiomy zabezpečují dědičnost ze supertřídy do subtřídy, mnohonásobnou dědičnost, generalizaci a konkretizaci. Metamodelování v ConceptBase Při vývoji softwarových subsystémů (jako např. informačních systémů) hraje velmi důležitou úlohu proces abstrakce. Metamodely umožňují popisovat abstraktní koncepty vývoje s tím, že se tyto koncepty stávají součástí databází stejně jako modelovaná data. ANSI standard definuje čtyři úrovně abstrakce při modelování. • Úroveň reálného světa. • Na této úrovni dochází k identifikaci reality, upřesnění objektů, jejich konkrétních vlastností a vztahů mezi nimi. Úroveň modelu. • Na úrovni modelu dochází k seskupování reálných objektů do tříd objektů a tříd atributů (v relační terminologii jsme zvyklí používat pojem doména) a rozpoznávání vztahů mezi třídami. Úroveň metamodelu. • Úroveň metamodelu se zabývá klasifikací typů vyskytujících se v modelu a abstrakcí vztahů mezi nimi. Metameta úroveň. Představuje vyjádření obecného v metamodelovacím procesu. konceptuálního elementů přístupu Metamodely jsou důležité během všech fází vývoje subsystému, klíčovou roli však hrají ve fázi analýzy a návrhu. Ve fázi analýzy model obsahuje popisy tříd objektů systému, vztahy mezi třídami, operace, které mohou být vykonávány v systému, přípustné návaznosti těchto operací. Tyto popisy jsou zahrnuty to tří modelů nazývaných objektový model, model operací a model životního cyklu. Fáze analýzy může rovněž obsahovat model chování systému. Ve fázi návrhu je popisováno, jak se jednotlivé objekty na sebe navzájem odkazují, jak se na objekty vztahuje dědičnost, jaké mají třídy objektů atributy a metody. Odpovídající modely jsou označovány jako graf interakce objektů, graf visibility, graf dědičnosti a popisy tříd. Ve fázi implementace jsou předchozí informace převedeny do příslušného programovacího jazyka. Součástí modelování je tvorba modelu datového slovníku. Jedná se o speciální model, nezařazený do partikulární úrovně abstrakce, protože doprovází celý modelovací proces a zahrnuje jak fázi analýzy, tak fázi návrhu. ConceptBase disponuje modelovacími technikami, odvozenými z E-R modelování, doplněnými o metamodelování s rozumnou množinou 38 omezení, zajišťujících konzistenci. ConceptBase může sloužit jako zásobárna vývojových předloh a může obsahovat jak metamodel, tak aktuální softwarový projekt. Součástí systému ConceptBase je grafický interface, který umožní uživateli zobrazit vztahy mezi vybranými třídami ze znalostní báze (sémantická síť). Kompatibilita s E-R modelem je zachována, tzn., že E-R model je možno převést na příslušnou sémantickou síť, přičemž je vyžadováno, aby atributy byly definovány jako vztahy mezi třídami. Převod E-R diagramu na CB graf E-R diagram disponuje dvěma konstrukty, je jimi entita a vztah. ConceptBase jako modelovací nástroj na úrovni logického formátu, disponuje jediným konstruktem a tím je tvrzení (Proposition), které je v modelu objektem. Různé vzory tvrzení jsou zapisovány, jak bylo popsáno výše. ConceptBase kromě logického formátu rovněž disponuje grafickým formátem, který umožňuje zakreslit tzv. sémantickou síť. K tomuto účelu je v metamodelování možno využít následujících grafických vzorů: Všechny instance tříd Vestavěné třídy (Boole, Integer, Real, String) jméno Vztahy pro přiřazení atributů Isa vztah Konkretizace (instanceof) Příklad 4-7: Příklad demonstruje definice modelu Ordinace v objektově deduktivním databázovém jazyku Telos. Definice na „Class“ úrovni Třída Ordinace jako subclass třídy Class Individual Ordinace in Class 39 End Třída Osoba v class Ordinace Individual Osoba in Ordinace with attribute jmeno : String; prijmeni : String; rc : String End Třída Pacient jako subclass Osoby (isA vztah) Individual Pacient isA Osoba with attribute poj : Pojistovna End pozn.(atribut poj nabývá hodnot z třídy Pojistovna) Třída Lekar jako subclass Osoby (isA vztah) Individual Lekar isA Osoba with attribute ico : Integer; smlouva : Smlouva End pozn.(atribut smlouva nabývá hodnot z třídy Smlouva) Třída Pojistovna v class Ordinace Individual Pojistovna in Ordinace with attribute kod : Integer; nazev : String End Třída Smlouva v class Ordinace Individual Smlouva in Ordinace with attribute cislo : Integer; lekar : Lekar; pojistovna : Pojistovna; dat_od : String; dat_do : String End pozn. (atribut pojistovna nabývá hodnot z třídy Pojistovna, atribut lekar nabývá hodnot z třídy Lekar) 40 Třída Navsteva v class Ordinace jako subclass objektu Lekar a Pacient Individual Navsteva in Ordinace isA Lekar,Pacient with attribute dat_nav : String; diagnoza : String; dat_kontr : String; lekar : Lekar End pozn.(atribut lekar nabývá hodnot z třídy Lekar) Definice na „Token“ úrovni Objekt Novak jako instance Osoby, Pacienta a Navstevy Individual Novak in Osoba,Pacient,Navsteva with attribute,jmeno novakovojmeno : "Jan" attribute,prijmeni novakovoprijmeni : "Novak" attribute,rc novakovorc : "5502150111" attribute,poj novakovapojistovna : VZP attribute,dat_nav dat_nav : "1.2.1999" attribute,diagnoza diagnoza : "152" attribute,dat_kontr dat_kontr1 : "15.2.1999"; dat_kontr2 : "16.2.1999" attribute,lekar lekar : Kral End Objekt Kral jako instance Osoby a Lekare Individual Kral in Osoba,Lekar with attribute,jmeno kralovojmeno : "Karel" attribute,prijmeni kralovoprijmeni : "Kral" attribute,rc kralovorc : "5501150222" 41 attribute,smlouva kralovasmlouva1 : 000199; kravolasmlouva2 : 000299 End Objekt VZP jako instance Pojistovny Individual VZP in Pojistovna with attribute,kod kodpojistovny : 111 attribute,nazev nazevpojistovny : "Vseobecna zdravotni pojistovna" End Objekt HP jako instance Pojistovny Individual HP in Pojistovna with attribute,kod kodpojistovny : 222 attribute,nazev nazevpojistovny : "Hornicka pojistovna" End Objekt 000199 jako instance Smlouvy Individual 000199 in Smlouva,Integer with attribute,cislo cislosmlouvy : 0001 attribute,dat_od plati_od : "1.1.1999" attribute,dat_do plati_do : "31.12.1999" attribute,pojistovna s_pojistovnou : VZP End Objekt 000299 jako instance Smlouvy Individual 000299 in Smlouva,Integer with attribute,cislo cislosmlouvy : 0002 attribute,dat_od plati_od : "1.1.1999" attribute,dat_do plati_do : "31.12.1999" attribute,pojistovna s_pojistovnou : HP 42 End Definice integritních omezení Následující integritní omezení popisují reálnou situaci, kdy: Lékař a pacient není tatáž osoba: Individual Navsteva in Ordinace,Class isA Pacient with attribute dat_nav : String; diagnoza : String; dat_kontr : String; lekar : Lekar attribute,constraint omezlekare : $forall p/Pacient l/Lekar x,y/String (p rc x) and (l rc y)→ x<>y $ End Lékař ošetří pouze toho pacienta, který je pojištěn u pojišťovny, s níž má daný lékař uzavřenou smlouvu: Navsteva with constraint omezpoj:$forall n/Navsteva l/Lekar s/Smlouva p/Pojistovna (n lekar l) and (n poj p) and (l smlouva s) → (p=s)$ End Graf modelu Ordinace Lekarna Osoba Pojistojna VZP Smlouva HP Lekar 000199 000299 Navsteva $forall n/Navsteva l/Lekar s/Smlouva … Pacient Kral $forall p/Pacient l/Lekar x,y/String … Novak obr. 4-2 Jak již bylo zmíněno, ConceptBase umožňuje tvorbu a administraci metamodelu včetně jeho grafické reprezentace ve formě sémantické sítě. 43 Pojmy k zapamatování: ConceptBase, Logický, rámcový a grafický formát, Telos, vzory tvrzení, třídy znalostní báze, Telosovské axiomy, CBL, dotazování, model a metamodel. Úkoly k zamyšlení: V příkladu 4-7 udělejte následující úpravy: 1. Do třídy Návštěva vložte atribut pacient, který bude odkazovat na třídu Pacient. 2. Na úrovni Token vložte dalšího pacienta. 3. Vytvořte integritní omezení, které bude kontrolovat, že datum návštěvy pacienta je menší než datum kontroly, na kterou je pacient na návštěvě pozván. Kontrolní otázky: 1. Vvyjmenujte čtyři vzory tvrzení, které používá ConceptBase. 2. Je-li tvrzení ve formě Proposition(oid, x, *instanceof, c), pak x je čím vzhledem k c ? Je-li tvrzení ve formě Proposition(oid, c, *isa, d), pak c je čím vzhledem k d? 3. Jaký má v ConceptBase kvantifikátorem? tvar formule s univerzálním 4. Jakých hodnot nabývá proměnná this v query pravidle? 5. Vyjmenujte čtyři úrovně abstrakce při modelování dle ANSI standardu. 44 5 VYUŽITÍ DEDUKTIVNÍCH PRAVIDEL K ZACHOVÁNÍ INTEGRITY DAT Cíl: Po púrostudování této kapitoly budete rozumět a umět vysvětliti pojmy definované v klíčových slovech a dále budete umět: - definovat nevýhody relačních databází v souvislosti s definováním a vyhodnocováním integritních omezení, - charakterizovat kompilační a vyhodnocvací fázi kontroly integrity dat, - charakterizovat syntaktická a sémantická integritní omezení. Klíčová slova: Deduktivní integrita, kompilační fáze, vyhodnocovací fáze, syntaktická integritní omezení, sémantická integritní omezení. 5.1 Pojem deduktivní integrita Relační model je znám jak svým solidním teoretickým základem, tak omezenými vyjadřovacími prostředky. V relačním modelu je využívána, jako základ pro vývoj deklarativních dotazovacích jazyků, matematická logika. Deklarativní dotazovací jazyk, založený na relačním kalkulu, je však ve svých vyjadřovacích možnostech omezen. Jednou z možností zvětšení expresivity dotazovacího jazyka, jak již bylo uvedeno v kapitole 2, je využití deduktivních pravidel. Snaha o zvýšení expresivity vede k využití deduktivních pravidel i pro definování integritních omezení. Definování integritních omezení pomocí deduktivních pravidel je v databázové literatuře označováno jako deduktivní integrita. Relační datový model vykazuje některé nevýhody: • Slabá možnost datového modelování, která je dána rozporem mezi složitostí reálného světa a jednoduchostí relačních konstruktů. • Slabá podpora pro vývoj aplikačních procedur a jejich znovu využití, hlavně nemožnost využití agregace a dědičnosti. • Slabá podpora vyhodnocování schématu při údržbě dat daná především slabou možností znovu využití již vyhodnocených struktur. Nejen z uvedených nevýhod vyplývá snaha o přechod od relačně deduktivní technologie k technologii objektově deduktivní. Zavedení pojmu „třída“ do integritních omezení vede k efektivnějším metodám při údržbě databáze ve smyslu zachování integrity dat. Integrita dat u relačních datových modelů je založena na velkém množství kontrol, které se provádí při jakékoli aktualizační operaci. Tyto kontroly 45 jsou součástí procedur nazývaných triggery. Agregace u objektově orientovaných databází dovoluje přidružit triggery k objektům obdobně jako atributy, což zabezpečuje mnohem větší efektivnost v optimalizaci vyhodnocování integrity a přitom triggery jsou přímo součástí databáze. Mechanizmus metatříd navíc dovoluje efektivní kontrolu integrity při aktualizační transakci využitím explicitních vztahů mezi třídami a podtřídami a tudíž triggery definované v třídách se uplatňují rovněž na všechny podtřídy. 5.2 Princip deduktivní integrity v relačních datových modelech Metody zachování integrity jsou založeny na známých principech poprvé popsaných v [12]. Předpokládá se, že databáze vyhovuje integritním omezením před zahájením transakce a možné narušení integrity může být zapříčiněno pouze touto transakcí. Kontrolu integrity dat po vykonání transakce je možno rozdělit do dvou fází: • Kompilační fáze, kdy je kompilovaná nová integrita, formulovaná v deklarativní podobě (tj. v logice 1. řádu). Tato fáze zabezpečuje transformaci formule do interní normální formy, generování zjednodušených parametrizovaných integritních omezení zodpovědných zvlášť za vkládání a rušení dat, uložení těchto omezení „blízko“ korespondujících dat a automatické spuštění vyhodnocovací fáze. • Vyhodnocovací fáze zajišťuje verifikaci transakce použitím zkompilované formule. Pro každý element, kterým má být databáze aktualizována jsou vyhledána korespondující data v relacích (kolekcích) a relevantní integritní omezení. Nedojde-li k chybě, je zabezpečena správnost transakce. 5.2.1 Kompilační fáze Integritní omezení je formule logiky 1. řádu, která musí být platná v každém stavu databáze. V podstatě může být chápána jako kontinuálně vyžadovaný booleovský dotaz, přičemž true je informace explicitně obsažená v databázi nebo odvoditelná použitím pravidel. Pro definici integritních omezení využijeme pojmu disjunktivní normální forma. Formule je (podle [11]) v disjunktivní normální formě, je-li disjunkcí několika podformulí (disjunktů), o nichž platí: • Každý disjunkt je konjunkcí konečně mnoha literálů. • V žádném disjunktu se sobě odpovídající pozitivní a negativní literály nevyskytují současně. 46 Definice 5-1 definice integritního omezení podle [19] Nechť Λ je množina pozitivních literálů deklarativního jazyka, L1, L2, …Lm ∈ Λ. Pak integritní omezení je dobře formovaná formule v disjunktivní normální formě zapsaná v jednom z následujících tvarů: ∃ x1, x2, …, xn(L1 ∧ L2, …∧ Lm ∧ R) nebo ∀ x1, x2, …, xn(¬L1 ∨ ¬L2, …∨ ¬Lm ∨ R) kde: každá proměnná x1, x2, …, xn se nachází v nejméně jednom z literálů L1, L2, …Lm, subformule R je buď formule bez kvantifikátorů nebo opět v jednom z uvedených tvarů, jestliže se některá z x1, x2, …, xn objeví v R, pak je volná, jiné, než kvantifikované proměnné nejsou povoleny. Definice 5-2 definice aktualizační transakce podle [19] Transakce je množina aktualizačních operací. Každá aktualizace je vyjádřena pozitivním nebo negativním literálem nad Λ. Pozitivní literál L představuje operaci vkládání informace L do databáze, negativní literál ¬L představuje výmaz informace L z databáze. Integritní omezení je relevantní k aktualizační operaci, jestliže doplněk aktualizační operace je sjednotitelný s literálem v integritním omezení. 5.3 Nevýhody deduktivní integrity v relačních datových modelech Relační model způsobuje neefektivní vyhodnocování deduktivních integritních omezení. Tato skutečnost je ilustrována na následujícím příkladu. Mějme relace: Lék(jméno: String, cena: Real) Pacient(jméno: String, adresa: String, sex: Char, věk: Integer, bere_lek: String) Trpí(pacient: String, příznak: String) Léčí(lék: String, příznak: String) Mějme integritní omezení: Forall p,d,a,s,x,o Pacient(p,a,x,o,d) and Léčí(d,s) → Trpí(p,s) 47 Jestliže se např. změní adresa Pacienta, musí být vyhodnocováno integritní omezení, ačkoliv tato změna neovlivňuje pravdivost formule, která integritní omezení definuje. Zefektivněním vyhodnocování deduktivní integrity se jeví přechod k deduktivně objektové databázi, která nabízení flexibilnější agregační abstrakci, uniformitu („všechno je objekt“) a jednoduchost. V některých případech dekompozice objektů vede až k úrovni atributů, která zefektivňuje vyhodnocování integritních omezení při aktualizačních operacích. 5.4 Integritní omezení v ConceptBase Příkladem jazyka, který je schopen popsat definice integritních omezení a deduktivních pravidel pomocí objektové orientace je jazyk Telos (systém ConceptBase), který mapuje všechny vztahy včetně definic objektů a všech jejich atributů do jednoduché datové struktury, tzv. tvrzení. Ze syntaktického hlediska jsou pravidla v Telos speciální formou integritních omezení. Rozdíl mezi deduktivními pravidly a integritními omezeními je ten, že deduktivní pravidla mohou vytvářet nová fakta z těch fakt, která jsou obsažena v extenzionální databázi. Integritní omezení společně s deklarací objektů jsou považována za základní axiomy (deduktivní axiomy produkované pravidly), které jsou po jejich implementaci v systému děděny a které omezují existující datové objekty. Integritní omezení v Telos jsou rozdělena na integritní omezení syntaktická a sémantická. 5.4.1 Syntaktická integritní omezení Syntaktická integritní omezení zahrnují: • Referenční integritu, která požaduje, aby atribut vždy odkazoval na existující databázový objekt. V ConceptBase je tato integrita automaticky hlídána v operaci „výmaz objektu“. • Entitní integritu, kdy každý objekt v bázi objektů musí mít své unikátní jméno různé od null. Každý objekt (frame) smí existovat v databázi pouze jednou a může obsahovat různé atributy. 5.4.2 Sémantická integritní omezení Sémantická integritní omezení zahrnují: • Doménovou integritu, která se zabezpečuje omezením typu hodnot, kterých může atribut nabývat. Každý atribut má v Telos definován příslušný datový typ, založený na základních doménách jako Numeric, Character, String, Boolean, Enumerated, Date/Time, 48 • Money. Dále je možno využívat uživatelem definované datové typy postavené na vyjmenovaných základních doménách. Omezení vztahů je sémantickým integritním omezením, které se vztahuje k následujícím oblastem: Omezení kardinalit. Model připouští kardinality 1:1, 1:N, N:1, N:M. ConceptBase využívá vestavěnou integritu single a necessary. Atribut označený „single“ se může vyskytovat 0 nebo 1 krát, atribut označený „necessary“ se může vyskytovat více než jednou. Obě označení (tedy single i necessary) očekávají právě jeden výskyt. Min-maxové integritní omezení ConceptBase nepodporuje. Omezení účasti ve vztahu specifikuje, zda objekt má povinnou účast ve vztahu nebo zda může objekt existovat nezávisle na jiném objektu (aniž by s ním vstupoval do vztahu). Tento typ integrity není přímo v ConceptBase podporován a musí být formulován explicitně. Všeobecná sémantická integritní omezení. Jedná se o explicitně formulovaná tvrzení, zabezpečující sémantické restrikce nad objekty, resp. třídami, které nejsou odvoditelné z předchozích tvrzení. Pro metamodelování v ConceptBase jsou nejdůležitější a zároveň nejnáročnější. Jsou to ta omezení, která jsou v ConceptBase definována v klauzuli constraints (vyskytuje se rovněž termín „generická IO“). Z ohledem na datové modelování v ConceptBase můžeme výše popsaná integritní omezení rozdělit do dvou tříd. „Inherent constraints“, která jsou automaticky zabezpečována ConceptBase a „Explicit Constraints“, která musí být explicitně v návrhu databáze formulována. Pojmy k zapamatování: Deduktivní integrita, kompilační fáze, vyhodnocovací fáze, syntaktická integritní omezení, sémantická integritní omezení. Úkoly k zamyšlení: Pokuste se zformulovat situace, kdy může dojít k narušení integrity dat. Berte v úvahu, že v databázi máte uložena data o více objektech, které vstupují do vzájemných vztahů. Pokuste se najít kategorie problémových oblastí. 49 Kontrolní otázky: 1. Jaké jsou nevýhody relačního datového modelu v souvislosti s kontrolou integrity dat? 2. V čem může objektový přístup pomoci řešit tyto problémy? 3. Co to jsou triggry? 4. Charakterizujte doménovou, entitní a referenční integritu. 50 6 METODICKÁ DOPORUČENÍ K INTEGRACI DEDUKTIVNÍCH PRAVIDEL DO NÁVRHU INFORMAČNÍHO SYSTÉMU Cíl: Po prostudování této kapitoly bude čtenář umět navrhovat objektový model podle metodologie IDEA. Bude umět integrovat do modelu odvozené koncepty (atributy, pohledy, třídy). Dále bude umět navrhnout dynamický model aplikační domény a především bude umět navrhovat deduktivní pravidla a integrovat je do modelu. Bude schopen navrhovat deduktivní pravidla pro odvozování dat a pro definování integritních omezení a to včetně pravidel rekurzívních. Bude schopen provádět prototyping deduktivních pravidel. Klíčová slova. Objektový model, dynamický model, analýza, návrh, odvozování dat, návrh integritních omezení, prototyping deduktivních pravidel. Průvodce studiem: V současné době stále ještě existují dva hlavní přístupy k vývoji informačních systémů, přístup strukturovaný a objektově orientovaný. Hlavním účelem strukturovaného přístupu je strukturovat postup při tvorbě informačního systému, zatímco hlavním účelem objektově orientovaného přístupu je vytvářet opakovaně využitelné komponenty. Objektový přístup vychází z přirozeného způsobu lidského myšlení, strukturovaný přístup je konstrukcí lidského intelektu. Dle názoru mnoha odborníků v této problematice budou obě metodologie, jak strukturovaná tak objektová, ještě velmi dlouho a úspěšně žít a fungovat vedle sebe. Během posledních 10-15 let bylo vyvinuto několik metodologií vývoje informačních systémů založených na objektově-orientované technologii. Patří mezi ně např. Booch metodologie, Jacobson metodologie, Martin/Odell metodologie, Wirfs/Brock metodologie nebo metodologie Coada a Yourdona. Zároveň se v poslední době stávají předmětem zájmu ve vývoji informačních systémů nové koncepty, jakými jsou deduktivní a aktivní pravidla. Příkladem metodologie, která s těmito koncepty pracuje je metodologie IDEA. IDEA je plně objektově orientovaná, jejímž hlavním předmětem zájmu a perspektivou zkoumání jsou data. Je jedním z výstupů IDEA projektu (1992-1996), jehož cílem bylo využít v praxi objektověorientované technologie a technologie založené na deduktivních a aktivních pravidlech v nových generacích databázových systémů. Hlavní přínos IDEA metodologie spočívá v uvedení některých zatím více méně teoreticky vymezených konceptů jako objekty, deduktivní a aktivní pravidla 51 do praktického využití vývoje informačních systémů. IDEA metodologie má klasickou strukturu. Je rozdělena do čtyř části: analýza, návrh, prototyping a implementace. Každá z těchto fází využívá výše zmíněných konceptů na různé úrovni abstrakce. V této kapitole se budeme zabývat metodikou integrace deduktivních pravidel do analýzy a návrhu IS. Použití této metodiky pak ukážeme na demonstrační aplikaci v následující kapitole. Výklad je zaměřen na metodologii IDEA, přičemž je dodržováno základní strukturování na analýzu, návrh, prototyping a implementaci. 6.1 Úvod do metodiky Hlavním předmětem zájmu této kapitoly, jakož i ostatně celé výukové opory je deduktivní pravidlo, a to na různých úrovních abstrakce, resp. v různých fázích vývoje informačního systému. Proto je nutné přesněji vymezit jeho úlohu a určit postavení v kontextu dalších konceptů, především v kontextu pojmu objekt. IDEA metodologie pracuje se dvěma modely a to s objektovým a dynamickým modelem. V následujícím textu je tedy věnována pozornost těmto modelům se zřetelem na možnost integrace deduktivních pravidel na úrovni analýzy, návrhu a prototypingu informačního systému. 6.1.1 Objektový model Objektový model (podle IDEA [ http://www.txt.it/idea/]) je množina konceptů a označení, která je využívána k vyjádření klíčových abstrakcí aplikační domény a jednotlivých vztahů mezi nimi. Hlavní roli hraje pojem objekt a třída. Objekty mají vnitřní strukturu a chování a shlukují se do tříd objektů. Objektový model vychází z rozpoznání nejdůležitějších objektů aplikace, jejich struktury, chování a vzájemných vztahů. 6.1.1.1 Objekty Objekt reprezentuje individuální koncept aplikace. Každý objekt je spojen s objektovým identifikátorem, který je generován systémem. Každý objekt v databázi, i v reálném světě, má svou identitu. Objekt kromě identifikátoru je spojen s kolekcí hodnot, tyto hodnoty jsou nazývány „statický stav objektu“. Statický stav objektu je aktualizován operacemi pro manipulaci s daty. Objekt je rovněž asociován s operacemi, které mohou být nad objektem prováděny. 6.1.1.2 Třídy Objekty se shlukují do množin objektů se stejnou strukturou a taková množina se nazývá třída. Objekt je pak členem (instancí) třídy. Objektový 52 model (v grafické reprezentaci IDEA) je zobrazován obdélníky se jmény tříd a pojmenovanými atributy s asociovanými datovými typy. Datové typy jsou atomické (integer, real, string, boolean, ..) a uživatelem definované, které jsou označovány jako tzv. domény. Null je polymorfní hodnota jakéhokoli datového typu, která reprezentuje neznámou hodnotu. Operace jsou označovány pomocí jména a kolekce parametrů. Každé jméno operace musí být jednoznačné v rámci třídy a různé od jmen atributů. Parametry mohou být vstupní a výstupní. Operací mohou být buď funkce (s jedním výstupním parametrem) nebo procedury (s více výstupními parametry). 6.1.1.3 Vestavěná integritní omezení Integritní omezení v databázové technologii hrají nezastupitelnou úlohu. Jejich existence patří k základním paradigmatům databázové technologie, jako je nezávislost dat na programech (aplikacích). Pro definování vestavěných integritních omezení mají již relační databázové systémy silné nástroje. Jsou jimi např.: • Notnull atributy, což jsou takové atributy, jejichž hodnoty musí být známy, tzn. nesmí být null. • Primary key je kolekce atributů, které jako celek jednoznačně identifikují každou instanci relace. • Unikátní atribut je atribut nebo kolekce atributů, jehož hodnota je unikátní pro každou instanci relace. 6.1.1.4 Generalizace - specializace a dědičnost Objektový model podporuje generalizaci - specializaci mezi třídami. Každá generalizace je vytvořena mezi jednou supertřídou a jednou nebo více subtřídami. Každá subtřída zahrnuje podmnožinu objektů supertřídy, které sdílejí stejné vlastnosti. Specializace pak představuje reverzní proces a v tomto smyslu je možno generalizaci chápat jako proces zevšeobecňování, zatímco specializace je proces hledání zvláštního. Hlavní výhodou zavádění generalizace je dědičnost. Díky dědičnosti jsou vlastnosti supertříd automaticky použitelné pro subtřídy. Znaky dědičnosti mohou být lokálně předefinovány. 6.1.1.5 Vztahy Vztahy jsou asociace mezi objekty, obvykle představují asociaci dvou objektů (binární vztahy), ovšem mohou existovat i asociace více objektů (nární vztahy). Tak jako jsou objekty spojovány do tříd, vztahy jsou rovněž tvořeny na úrovni tříd. Vztahy, stejně jako objekty (třídy) mohou mít atributy. Vztahy mohou zahrnovat objekty téže třídy, v tomto případě je nazýváme „kruhy“. Např. Kurz je předpokladem pro jiný Kurz, resp. Kurz musí splňovat předpoklady jiného Kurzu. 53 6.1.1.6 Kardinality Kardinalita je integritní omezení, které určuje počet objektů, které mohou vstupovat do vztahu. Kardinalita může být vyjádřena: • min, max - Minimální, resp. maximální počet objektů vstupujících do vztahu. • * - Nula nebo více objektů vstupuje do vztahu (v relační databázové technologii jsme zvyklí tento typ kardinality označovat jako tzv. nepovinné členství ve vztahu.) • + - Jeden nebo více objektů vstupuje do vztahu (v relační databázové technologii jsme zvyklí tento typ kardinality označovat jako tzv. povinné členství ve vztahu). 6.1.1.7 Referenční integrita Referenční integrita je omezení binárního vztahu v tom smyslu, že jedna třída je označena jako tzv. „odkazující“ a druhá jako tzv. „odkazovaná“. Pro odkazovanou třídu to znamená, že nemůže v rámci této třídy existovat objekt, který by nevstupoval do vztahu s objektem třídy odkazující. Standardní způsoby zachování referenční integrity jsou „Restrict“ a „Cascade“ (u některých SŘBD rovněž "Set null"). 6.1.1.8 Generické integritní omezení Konvenční databázové systémy podporují vestavěná integritní omezení, která jsou rovněž nazývána integritní omezení ve fixním formátu. Existují i další integritní omezení, v tzn. generickém formátu, která závisejí na specifikované aplikační doméně. Tato omezení mohou být podporována v jejich plné obecnosti pouze novými generacemi databázových systémů. Pro generická integritní omezení je využití deduktivních pravidel zvláště výhodné. Zavedení deduktivních pravidel pak bude představovat zcela nový pohled na to, jakým způsobem je možno definovat integritní omezení a jakým způsobem je možno udržovat konzistenci databáze. K vlastní integraci je rozumné provést rozčlenění IO do několika skupin: • Statická a dynamická omezení Statická omezení mohou být vyhodnocena v jednoduchém stavu databáze, tzv. v kontextu objektů a vztahů. Tato omezení lze dále rozdělit na omezení bezprostřední a omezení s odloženým vyhodnocením. Odložená vyhodnocení jsou prováděna před schválením transakce (commit), bezprostřední jsou prováděna v průběhu transakce. Dynamická omezení srovnávají dva stavy databáze, nazývané inicializační a koncový stav a jsou navrhována pro monitorování změn stavů. Např. stav objektů třídy Zkouška před započetím a na 54 • konci zkouškového období. Rovněž dynamické omezení může být buď vyhodnocováno bezprostředně (v průběhu transakce) nebo po ukončení transakce. Rozsah omezení Omezení definovaná v kontextu specifikovaných tříd jsou nazývána cílená omezení. V případě realizace integritního omezení formou deduktivního pravidla se bude jednat o predikát, který bude dohlížet na stav individuálních cílových objektů a bude poskytovat pro každý cílový objekt specifickou pravdivostní hodnotu. Predikát může taky odkazovat na ostatní objekty, které jsou spojeny vztahem s cílovým objektem. Na příklad Student se nezapíše do následujícího ročníku, pokud nemá splněn stanovený počet kreditů nebo přerušil studium. Všechna ostatní omezení jsou nazývána necílená omezení. Na příklad Student musí udělat Zkoušky Kurzů, které navštěvuje. Generická integritní omezení doporučuji odhalovat již ve fázi analýzy a ve fázi návrhu jejich neformalizovanou podobu, získanou ve fázi analýzy, transformovat do deduktivních pravidel (formální zápis generického integritního omezení). 6.1.1.9 Odvozené koncepty Odvozenými koncepty se rozumí takové koncepty, které se explicitně v databázi nevyskytují (nejsou součástí extenzionální databáze), ale které je možno na základě deduktivních pravidel odvodit. Odvozené koncepty jsou součástí intenzionální databáze. Objektový model může obsahovat třídy, atributy tříd a vztahy, jejichž instance nebo hodnoty jsou odvoditelné z ostatních instancí a jsou tedy dosažitelné z dat uložených v databázi. Odvozené instance lze reprezentovat jako dodatečné informace. Pravidla pro odvozování dodatečných informací jsou vytvářena ve fázi návrhu informačního systému. Odvozeným konceptem může být atribut, třída a pohled. 6.1.2 Dynamický model Dynamický model je (podle IDEA [ http://www.txt.it/idea/] ) založen na použití stavových diagramů, jako známého vizuálního formalizmu pro popsání vývoje dynamického systému. Stavový diagram vyjadřuje jak objekty reagují na události změnou svého stavu. Ve stavovém diagramu jsou postihnuty jak stavy související s jednou třídou objektů, identifikovanou v Objektovém modelu (targeted statecharts), tak stavy související s kolekcí tříd (untargeted statecharts). 55 6.1.2.1 Stavy tříd objektů Dynamický stav reprezentují výstupy všech významných událostí, které ovlivnily objekt v době jeho vzniku. Když je použit pojem „stav“ v dynamickém modelu, odkazuje se tím na abstraktní reprezentaci historie objektu nezávislé na jeho interní struktuře. Příklad: Stav objektu Student může být splňuje požadavky ke zkoušce nebo nesplňuje požadavky ke zkoušce. Události, které mohou ovlivnit splnění požadavků studenta jsou: napsat test aspoň na minimální počet bodů nebo napsat test na méně než minimální počet bodů. Stavový diagram by pak mohl vypadat následovně: uspět u testu Student se splněnými požadavky Student s neplněnými požadavky nespět u testu Obr. 6-1 6.1.2.2 Přechody Jsou šipky spojující zdrojové a cílové stavy. Přechody jsou pojmenované trojice E [ C ] / A, kde E je událost, která spouští přechod, C je podmínka, za které k přechodu má dojít a A je akce, která má být provedena. Standardní sémantika přechodů je taková, že jestliže se objeví událost, objekt změní stav a akce, je-li uvedena, se vykoná. Jestliže je událost vynechána, přechod je proveden automaticky po zadání stavu. Je-li uvedena podmínka, musí být splněna, aby došlo ke změně stavu. Události, spouštějící změnu stavu, mohou být tří typů: manipulace s objekty, volání operací nebo symbolické události. Události manipulace s objektem zahrnují operace create, modify, specialize, generalize. Události volání operace jsou označovány specifikovaným jménem operace následovaným seznamem parametrů. Jedná se o volání externí procedury nebo funkce. Symbolické události jsou označovány prostřednictvím uživatelem definovaných jmen a popsány generickým výskytem, který může ovlivňovat historii objektu, ale není nezbytně spojen s operacemi, popsanými v objektovém modelu. Na příklad symbolickou událostí může být událost Uspět u testu, resp. Neuspět u testu. 56 Každá akce může být vykonání symbolické události, volání operace, vykonání manipulace nad daty nebo jakákoliv jiná akce závislá na aplikaci jako např. start externí aktivity. Stav objektu může být taky dán vstupními a ukončujícími akcemi. Vstupní akce jsou provedeny, jakmile objekt do tohoto stavu vstupuje, ukončující akce jsou provedeny, jakmile objekt stav opouští. 6.1. 2.3 Dekompozice stavů: OR- substavy Stavy mohou být dekomponovány cestou upřesňování shora-dolů. ORsuperstav je síť OR-substavů. Sémantika OR-dekompozice je taková, že platí: Je-li objekt v superstavu, pak musí být v jednom ze substavů. Proces upřesňování shora-dolů může být použit na substavy rekurzivně a povoluje víceúrovňovou reprezentaci dynamiky komplexního systému. Výhodou je, že přechody stavů mohou spojovat stavy z různých úrovní abstrakce. Každý přechod z/do superstavu může představovat vícenásobné přechody, všechny se stejným jménem, vycházející z (vstupující do) jednoho z jeho substavů. Každý přechod stavu na dané úrovni abstrakce musí odpovídat aspoň jednomu přechodu stavu na nižší úrovni abstrakce. 6.1.2.4 Stavy kolekce tříd objektů Jedná se o stavy reprezentující dynamiku několika integrovaných tříd. Ve stavovém diagramu se tyto stavy znázorní tak, aby bylo zřejmé, že se jedná o stav skupiny objektů. Každá ze tříd obsažených v kolekci může být popsána svým stavovým diagramem (targeted statechart). 6.1.2.5 Dekompozice stavů: AND- substavy AND-dekompozice je mechanizmus k rozdělení (zjemnění) stavu do několika AND-substavů. Na rozdíl od OR-dekompozice, výskyt stavu v AND-superstavu implikuje existenci tohoto stavu v každém substavu. AND-dekompozice umožňuje popsat dynamiku celého systému komplexně (ačkoliv tento se může skládat z několika nezávislých částí). Přičemž znalost stavu celého systému vyžaduje znalost stavu všech jeho komponent. AND-substavy, rovněž nazývané ortogonální stavy, popisují dynamiku rozsáhlých nezávislých komponent. Mezi jednotlivými ortogonálními komponentami mohou být následující vazby: • Změna stavu v jedné komponentě může být podmíněna stavem jiné komponenty. • Změna stavu jedné komponenty může spouštět události produkované jinou komponentou. • Události produkované akcemi, spojenými se změnou stavu jedné komponenty, jsou vysílány na všechny ostatní komponenty. 57 AND-dekompozice jsou používány k zachycení dynamiky kolekce objektů. 6.1.3 Pravidla a operace Konvenční databázové systémy s pojmy pravidla a operace nepracují a jejich částečnou funkci plní dotazy. V deduktivně objektových systémech jsou pojmy operace a pravidla základními koncepty využívanými k získávání informací z databáze. Z formálního hlediska se jedná o deklarativní výrazy, jejichž vyhodnocením (vhodnou interpretací) lze získat dodatečné informace z databáze. S pojmem deduktivní pravidlo pracují deduktivní databáze ať již v relační databázové technologii, tak v technologii objektové. Důležité je najít pro deduktivní pravidlo správné místo ve smyslu jeho integrace do analýzy a návrhu informačního systému. 6.1.3.1 Deduktivní pravidla Jak již bylo uvedeno v kapitole 2, deduktivní pravidlo je výraz ve tvaru: hlava ← tělo , kde hlava je atomická formule a tělo je libovolná formule. Každá proměnná v hlavě pravidla se musí vyskytovat rovněž v těle pravidla. K definování téhož konceptu je možno použít několika pravidel. Příklad: Příklad definuje plat zaměstnance použítím deduktivních pravidel. X.plat=10000 ← inženýr(X), X.věk < 35 X.plat=15000 ← inženýr(X), X.věk > =35 X.plat=25000 ← manažér(X), skupina(Y), Y in X.vedoucí X.plat=35000 ← manažér(X), oddělení(Y), Y in X.ředitel 6.1.3.2 Stratifikace Deduktivní pravidla mohou na sobě navzájem záviset různým způsobem, buď hierarchicky nebo rekurzivně. Tato závislost může být vyjádřena tvrzením, že koncepty, odvoditelné na vyšší úrovni, mohou být vyhodnoceny pouze, pokud koncepty na nižší úrovni, na nichž jsou tyto koncepty vyšší úrovně závislé, již byly dříve vyhodnoceny. Každá úroveň je označována „strata“ a celkové vytváření úrovní se nazývá stratifikace množiny pravidel. Tento proces musí být pečlivě kontrolován, pokud se v pravidlech objeví negace. Negativní literály v deklarativních výrazech nemohou produkovat žádná nová tvrzení, ale mohou pouze potvrdit nebo vyvrátit tvrzení vytvořená v průběhu vyhodnocení jejich pozitivních výskytů se stejnými proměnnými. 58 Před vyhodnocením negace je třeba znát všechna pozitivní fakta, ze kterých může být vyjádřen závěr ve formě negace. Existují-li např. tvrzení, kdo je koho potomkem, pak pouze jejich plný výčet umožňuje potvrdit či vyvrátit tvrzení, kdo koho potomkem není. Stratifikace nemůže být dosaženo, pokud existuje odvozený koncept, který závisí jak rekurzivně, tak negativně na sobě samém. Množina pravidel obsahující takovýto rekurzivní cyklus, který zahrnuje negace, se nazývá nestratifikovatelná. Příklad: Příkladem nestratifikovatelné množiny pravidel mohou být např. následující dvě pravidla: Student(X) ← not Zaměstnanec(X) Zaměstnanec(X) ← not Student(X) Obě pravidla je třeba umístit na stejnou úroveň, protože jsou rekurzivně závislá. Zároveň by však měla být umístěna do různých úrovní, protože jeden na druhém negativně závisí. Taková situace je označována jako logický paradox a musí jí být zabráněno (při návrhu se nesmí vyskytnout). Další paradoxní situace může nastat, pokud k odvození konceptu je třeba vypočítat agregační funkci, jejímž argumentem je odvozovaný koncept. Tuto situaci je možno uvést na příkladu: X in Y.stejnýPříjem ← Zaměstnanec(X), Zaměstnanec(Y), X.plat = avg(Y.stejnýPříjem.plat) Zaměstnanec X má stejný příjem jako Zaměstnanec Y, jestliže X má plat rovný aritmetickému průměru platů zaměstnanců se stejným příjmem jako Y. Takovéto rekurzivní cykly zahrnující agregační funkce musí být rovněž vyloučeny. Stratifikovaná množina pravidel je pak množina pravidel, která vylučuje negační a agregační paradox. Kromě stratifikace, musí být pravidla rovněž bezpečná. Bezpečnost pravidel již byla popsána v kapitole 2, proto na tomto místě jí nebude věnována pozornost. 6.1.3.3 Deduktivní pravidla pro odvozování dat Deduktivní pravidla mohou být mocným nástrojem pro odvozování dat na základě extenzionálních dat uložených v databázi a odvozená data tvoří tzv. intenzionální databázi. Z hlediska potřeb vývoje informačního systému je výhodné uvažovat o využití deduktivních pravidel k odvozování tříd, atributů a pohledů. Využitím deduktivních pravidel lze odvodit další třídy, jejichž populace závisí na hodnotě nějakého atributu definované supertřídy. Populace mohou být odvozeny pouze pro subtřídy pomocí pravidel, která jsou definována v supertřídách. Pohledy jsou chápány jako virtuální objekty, 59 které vzniknou vyhodnocením dotazu nebo deduktivního pravidla a tím usnadňují tvorbu aplikace. K pohledům lze nastavit individuální přístup pro aplikace, což umožňuje vytvářet mechanizmus ochran. Data jsou vybírána z více tříd a k těmto datům je nastaven selektivní přístup. Jednou z důležitých aplikací deduktivních pravidel je výpočet odvozených atributů, tj. takových atributů, jejichž hodnota může být odvozena z hodnot jiných atributů. Tvůrce informačního systému by měl zvažovat, které atributy musí být součástí extenzionální databáze a které je možno odvodit. Speciální pozornost je třeba věnovat rekurzívním atributům. Nejjednodušší a nejpoužívanější forma rekurze je tranzitivní uzávěr binárního vztahu. Vztah je modelován tak, že typ atributu objektu odkazuje zpět na tento objekt. Tento typ vztahu bývá nazýván kruhovým vztahem, jak již bylo zmíněno v kap. 6.1.1.5. 6.1.3.4 Deduktivní pravidla pro definování integritních omezení Integritní omezení lze vyjádřit pomocí deduktivních pravidel, přičemž databázi vyhovuje dané integritní omezení, je-li hodnota pravidla „false“. Databáze není konzistentní, je-li hodnota deduktivního pravidla „true“. Integritní omezení, jak již bylo uvedeno u objektového modelu, je možno rozdělit na omezení bezprostřední a omezení s odloženým vyhodnocením. Kontrola omezení s odloženým vyhodnocením je prováděna po schválení transakce (commit), tzn. nejdříve je provedena celá transakce (např. aktualizace dat) a pak je kontrolována integrita dat. U bezprostřední kontroly je kontrola provedena po každé specifické operaci (nazývané řádek transakce). V obou případech je sémantika kontroly omezení následující. Jestliže po výpočtu příslušného deduktivního pravidla dojde k produkci hodnot do hlavy pravidla, tyto hodnoty jsou chápány jako nepovolená data a transakce je zrušena. Operace prováděné transakcí jsou zrušeny a databáze je uvedena do stavu před započetím transakce. 6.1.3.5 Operace Operace (v objektové terminologii nazývané metody) představují uživatelem definovaný mechanismus pro vyhledávání objektů a manipulaci s jejich obsahem. Operace mají dvě komponenty: podmínku operace a tělo operace. Podmínka je pravidlo, které garantuje deklarativní kontrolu během vykonávání operace. Vyhovují-li interpretace proměnných ve formuli specifikované podmínce, podmínka pro vykonání operace je splněna a operace může být vykonána. Tělo operace je procedura, která obsahuje zobrazovací, event. aktualizační databázové příkazy. 60 6.2 Analýza Během analýzy se dle metodologie IDEA vytvářejí dva modely. Objektový model a Dynamický model. Objektový model je rozšířeným E-R modelem, který představuje statický popis objektů v klasickém databázovém smyslu. Entity odpovídají třídám a vztahy odkazům mezi objekty. Třídy jsou popsány společně s jejich atributy a metodami. Model zahrnuje rovněž hierarchii tříd a integritní omezení. Dynamický model je založen na známém vizuálním formalizmu stavových diagramů. Je jich použito k vyjádření dynamiky objektů, ve smyslu událostí a podmínek, které způsobí změny a konsekvence změn stavů. Analýza je tedy proces sběru a specifikování požadavků ve formě Objektového a Dynamického modelu. Tato fáze je zaměřena na modelování reality s cílem vytvořit model spojený s příslušnou grafickou reprezentací, který bude obsahovat jednoduše popsané statické a dynamické rysy budoucí aplikace. Již ve fázi analýzy je třeba postupovat tak, aby navržená databáze splňovala požadavky pro znalostní nezávislost. O znalostní nezávislost se jedná tehdy, když znalost je součástí databáze, nikoli databázové aplikace. Analýza je proces transformace neformálních popisů na popisy semiformální. Analýza se zaměřuje na strukturu a vlastnosti klíčových domén abstrakce. Proces analýzy problému je možno rozdělit (podle IDEA) do těchto základních fází: hrubá analýzy, detailní analýzy a integrace s verifikací. 6.2.1 Hrubá analýza Je úvodní pohled na uživatelské požadavky s cílem stanovit hranice problému. V této fázi musí být zodpovězeny otázky: • Co jsou důležité abstrakce, které tvoří slovník problémové domény. • Co jsou hlavní funkce, které musí být zabezpečeny, aby byly splněny požadavky uživatele. Odpovědí na tyto dvě základní otázky tvoří dva hlavní výstupy hrubé analýzy a to je popis zdrojů a aplikací. Identifikace zdrojů je aktivita, u které je definován seznam konceptů aplikační domény tak, aby byla získána množina tříd zahrnutých do budoucího systému. Těmito třídami zdrojů mohou být hmotné předměty, koncepty, zaznamenané události, osoby, role, místa, atd. Identifikace aplikací směřuje k pochopení podstaty aplikací, které jsou uživatelem požadovány v dané aplikační doméně. Základní otázkou identifikace aplikací je, které funkce musí být vyvinuty ve vztahu ke sdíleným perzistentním konceptům aplikační domény. Výsledkem této fáze je seznam aplikací, popisující hlavní funkce vyvíjeného softwarového systému. 61 Před vyvíjením detailní analýzy je nutné stanovit rozlišovací úroveň řešení. Otázkou je, které zdroje, identifikované jako důležité elementy problémové domény, jsou důležité abstrakty, které mají být zahrnuty do řešení problému. Výsledkem této fáze bude kvalifikovaný seznam zdrojů. 6.2.2 Detailní analýza Je proces definování informačního obsahu, statických a dynamických vlastností, vzájemných vztahů zdrojů a aplikací definovaných v hrubé analýze. Výstupem této fáze je Objektový, Aplikační a Dynamický model a opravený seznam zdrojů a aplikací vytvořený ve fázi hrubé analýzy. Následující schéma zachycuje vstupy a výstupy detailní analýzy, jak s nimi pracuje IDEA metodologie. Seznam zdrojů Požadavky Detailní analýza Seznam aplikací Objektový model Dynamický model Aplikační model Opravený seznam zdrojů a aplikací Obr. 6-2 Detailní analýza, v případě využití deduktivních přístupů, bude rozlišovat dvě hlavní oblasti. Oblast struktury, kterou lze označit jako analýzu schématu a oblast znalostí, označovanou analýza znalosti. Analýza schématu zahrnuje třídy z hrubé analýzy včetně jejich atributů, vztahy mezi třídami, dědičnosti a operace jednotlivých tříd. Analýza znalostí se zaměřuje na odhalení sémantických vlastností elementů, které nejsou přímo uvedeny v Objektovém modelu. Analýza znalostí pak bude zahrnovat jak statické sémantické vlastnosti (všeobecná integritní omezení popsaná podmínkami validace dat), tak vlastnosti dynamické (odkazující na chování tříd v souvislosti s událostmi popsanými v Dynamickém modelu). 62 6.2.3 Analýza schématu Analýza schématu definuje strukturu perzistentních, sdílených informací aplikační domény. Pro každou třídu hrubé analýzy definuje atributy, operace a vztahy tak, aby byla zabezpečena očekávaná sémantika tříd. Výstupem této aktivity je kompletní Objektový model, zobrazující atributy tříd, jejich vztahy a dědičnost. 6.2.3.1 Identifikace atributů a vztahů V této fázi je třeba zodpovědět následující otázky: • Co jsou elementy charakterizující vnitřní strukturu objektů daných tříd? • Jaké jsou sémantické závislosti tříd? Při definování atributů je třeba zadat typ těchto atributů. Typem může být vestavěný typ nebo typ konstruktor. Analytik může rovněž definovat uživatelem definovaný typ s příslušnou sémantikou. Atributy a vztahy mohou být odvozeny, tj. mohou obsahovat odvozenou informaci z jiných položek Objektového modelu. Relevantní odvozovací pravidlo bude formalizováno ve fázi návrhu. 6.2.3.2 Identifikace hierarchií Dalším typem sémantických závislostí mezi třídami je existence vztahů dědičnosti. Pro definování dědičnosti je třeba zodpovědět následující otázky: • Je koncept vyjádřený danou třídou specializací konceptu vyjádřeného jinou třídou? • Jsou objekty jedné třídy podmnožinami objektů jiné třídy? Jsou-li obě odpovědi ano, pak mezi třídami existuje dědičnost. 6.2.3.3 Identifikace operací Každá třída je zavedena do schématu, aby plnila určitý úkol, resp. zodpovídala za provedení specifikovaných úkolů. Definice operací je aktivita, která identifikuje prováděné služby každým zdrojem pro zajištění těchto zodpovědností. Při identifikaci operací se objevují následující otázky: • Které operace zabezpečují interface definovaných tříd? • Jsou identifikované operace nutné a postačující k plnění zodpovědnosti tříd? Operace mohou být klasifikovány jako operace všeobecného použití, dynamické operace a operace aplikačních závislostí. 63 Operace všeobecného použití jsou služby, které spravují objekt od jeho vzniku až k zániku a obsahují: • Konstruktor, který vytvoří objekt podle pravidel nebo parametrů. • Destruktor, který zruší objekt a možnost asociovat informace, které závisí na jeho existenci. • Akcesor, který zpřístupní informace o objektu nebo množině objektů. • Transformer, který mění objekt. Všechny operace nemusí být vždy explicitně definovány. Konstruktor a destruktor může být implicitní. Akcesor může být rovněž implicitní podle toho, zda je k dispozici potřebný dotazovací jazyk. Dynamické operace jsou operace, které mění stav objektu v závislosti na události, která nastala a podmínkách, které byly splněny. Reakce na událost může být specifikována jako operace, jejíž vyvolání koresponduje s tím, že byla objektu ohlášena relevantní událost. Operace aplikačních závislostí ovlivňují jak Dynamický, tak Objektový model. Mohou být požadovány z více aplikací a jsou nezbytné proto, aby zabezpečovaly očekávané funkcionality tříd. 6.2.4 Analýza znalostí Analýza znalostí je nalézání a specifikování relevantních vlastností, které byly identifikovány během hrubé analýzy a vymezeny v analýze schématu. Otázky pro analýzu znalostí jsou: • Jaké podmínky musí třídy a vztahy splňovat, aby mohly být spolehlivou reprezentací reality? • Jaké podmínky musí splňovat operace tříd? • Jaké je chování identifikovaných tříd jako odezva na významné událost? Výstupem znalostní analýzy je množina integritních omezení kladených na Objektový model a popis stavů těch tříd, které projevují dynamické chování. Integritní omezení řeší omezení tříd (primární klíč, unikátní hodnoty atributů, notnull, atd.), kardinality (1:N, nepovinné:povinné, atd.) a referenční integritu Zvláštní pozornost si zasluhují generická integritní omezení, jak byla definována v kapitole 6.1.1.8. V rámci analýzy jsou generická integritní omezení definována v přirozeném jazyce, tedy neformalizovaně, je však již v této fázi rozhodnuto, o jaká generická integritní omezení půjde. V podstatě IDEA metodologie rozlišuje čtyři typy generických integritních omezení: statické bezprostřední, statické odložené, dynamické bezprostřední, dynamické odložené. Každé z nich může být zaměřeno na objekty jedné třídy (cílené) nebo na objekty více tříd (necílené). 64 6.2.4.1 Cílené/necílené integritní omezení Jestliže se integritní omezení vztahuje pouze na objekty jedné třídy, jedná se o cílené IO. O cílené IO se jedná rovněž tehdy, je-li aktualizační operace zaměřena na aktualizaci objektů jedné třídy, ale podmínky aktualizace jsou kladeny na více tříd. Cíleným objektem se zde rozumí objekt aktualizace a nikoli objekty tříd, které se vyskytují v podmínce, za které může k aktualizaci dojít. Jestliže integritní omezení zahrnuje objekty více tříd a není zřejmý jakýsi „centrální“ objekt, tj. objekt jedné třídy, jehož hodnoty budou aktualizovány, pak se jedná o necílené IO. 6.2.4.2 Statické/dynamické integritní omezení Pokud se integritní omezení vztahuje k jednomu stavu databáze (např. student získá určitý počet kreditů, pokud splní požadavky ke zkoušce a vykoná zkoušku), je takové IO definováno jako statické. Na druhé straně dynamické IO posuzuje dva stavy databáze, tzn. např. srovnává stav objektu student v předchozím a současném stavu databáze tedy před a po zápisu. 6.2.4.3 Bezprostřední/odložené integritní omezení Jestliže v rámci jedné transakce se vyskytuje operace, která může integritní omezení porušit a následuje operace, která databázi opět uvede do souladu s tímto integritním omezením, je zřejmé, že kontrola integritního omezení je prováděna až po ukončení této transakce. IO pak má statut s odloženou realizací. Na druhé straně, pokud v rámci transakce je IO narušeno a již nemá šanci být napraveno, je rozumné toto IO definovat jako bezprostřední a tudíž rovněž vykonat kontrolu IO ihned po ukončení operace. 6.2.4.4 Analýza funkčních závislostí Prvním krokem analýzy schématu je identifikace tříd a jejich atributů. Identifikace tříd je velmi náročný proces, který předpokládá dobrou znalost aplikační domény stejně jako zkušenost analytika. U jednotlivých tříd je třeba zvažovat oprávněnost jejich existence, respektive možnost či nutnost rozdělení třídy do více tříd. Zjištění, zda je třída adeptem na rozdělení není možné ponechat pouze na intuici a je vedeno především záměrem odstranit redundance v budoucí databázi. V relační databázové technologii existuje nástroj k odstranění redundancí založený na vyhledávání funkčních závislostí atributů a následné dekompozici relačních schémat. 6.2.5 Definice dynamiky Definice dynamiky (Dynamický model), jak ji vnímá IDEA je zaměřena na následující otázky: 65 • • Existuje nějaký objekt, který je ovlivňován minulostí? Které události jsou relevantní k minulosti objektu? Existuje nějaký objekt, jehož minulost ovlivňuje chování jiných objektů? Tato fáze analýzy představuje pohled na identifikované zdroje ve snaze nalézt relevantní události, stavy a změny stavů. Události mohou přicházet z různých zdrojů: z externího prostředí, z volání operace, z aktualizace objektu nebo mohou existovat události definované v aplikaci. Precizní zmapování událostí se provádí ve fázi návrhu. 6.2.6 Aplikační analýza Tato fáze je zaměřena na detailnější specifikace aplikačního seznamu, vytvořeného v hrubé analýze. V rámci aplikační analýzy jsou kladeny následující otázky: • Které výpočty aplikace provádí? • Které objekty aplikace čte resp. zapisuje? • Vyžaduje aplikace splnění nějakých podmínek (preconditions, postconditions)? • Produkuje aplikace události? Odpovědi na tyto otázky jsou shrnuty do popisu aplikace. Popis aplikace může být tvořen z následujících informací. Aplikace: Jméno Popis: Text Vstupy: Zdroje (entity, vztahy) Změny: Zdroje (entity, vztahy) Zprávy: Události Předpoklady : Podmínky Výsledky: Popis 6.2.7 Integrace a verifikace Tato fáze analýzy má dva základní významy. Integrovat různé pohledy na aplikační doménu v průběhu analýzy schématu a znalostní analýzy a ověřit, zda výsledný produkt analýzy odpovídá požadavkům uživatele. 6.2.7.1 Integrace Objektového a Dynamického modelu • 66 Všechny třídy, které se vyskytují ve zdrojovém nebo nezdrojovém stavovém diagramu musí být definovány jako zdroje v Objektovém modelu. • • • • Všechny události ve zdrojovém stavovém diagramu, korespondující s voláním operace, musí odpovídat lokálním nebo zděděným operacím v popisu třídy, na kterou se popis odvolává. Všechny akce ve zdrojovém nebo nezdrojovém stavovém diagramu musí odpovídat volaných operacím popsaným v příslušných třídách nebo nadtřídách. Všechny proměnné, vyskytující se v podmínkách, musí být definovány jako odpovídající třídy. V nezdrojových stavových diagramech odkazy z jednoho objektu na druhý musí být podporovány příslušným vztahem v Objektovém modelu mezi třídami. 6.2.7.2 Integrace Aplikačního, Objektového a Dynamického modelu • • Všechny třídy a atributy tříd čtené a zapisované aplikací nebo zmiňované v pre a post podmínkách musí být definovány v Objektovém modelu. Všechny události, která aplikace provádí, se musí objevit aspoň v jednom stavovém diagramu. 6.3 Návrh Návrh je proces převodu Objektového a Dynamického modelu do konceptuálního schématu, který zabezpečuje jednoznačnou specifikaci aplikační domény. Návrh je převedení semi-formálního tvaru analýzy do plně formálního tvaru. V rámci návrhu se provádí návrh schématu databáze, který představuje strukturální znalost. Po návrhu schématu databáze se provede návrh deduktivních pravidel, která byla neformálně popsána v analýze schématu, analýze znalostí a analýze funkčních závislostí. 67 6.3.1 Návrh schématu Návrh schématu (struktura a chování) Analýza Návrh pasivních pravidel (deklarativní znalost) Prototyping Návrh aktivních pravidel Obr. 6-3 Návrh schématu je sekvence transformací charakteristik z Objektového modelu, které jsou vyjádřeny pomocí vhodného formálního jazyka. Hlavním úkolem je transformace grafických popisů na textové. Vztahy z Objektového modelu se transformují do atributů objektových hodnot, které slouží jako odkazy mezi objekty. Separátně se berou v úvahu typy, třídy, generalizace a vztahy. Vztahy se modelují pomocí atributů, nakonec se navrhnou operace, které reprezentují chování jednotlivých komponent Objektového modelu. Návrh schématu představuje návrh typů, tříd, generalizací, vztahů a operací. 6.3.2 Návrh datových typů Je první aktivitou návrhu schématu, při které je třeba se zaměřit na využití vestavěných datových typů a na návrh uživatelem definovaných datových typů. Z důvodu komplexních atributů objektu se zavádí uživatelem definované datové typy. Uživatelem definované typy jsou zvláště výhodné tehdy, jsou-li využity u definování atributů více tříd nebo jako parametry více operací. Při návrhu atributů je třeba dbát na to, aby hodnoty atributů nevykazovaly individuální identitu a dynamiku. Nastane-li taková situace, pak je vhodné takový atribut navrhnout jako objekt. Podstatnou otázkou 68 v této fázi je: „Reprezentuje hodnota třídu nebo datový typ?“. Základním vodítkem může být tvrzení, že typy popisují hodnoty, zatímco třídy popisují objekty. 6.3.3 Návrh tříd Návrh tříd se hlouběji zabývá každou třídou Objektového modelu. Pro každý atribut a parametr operace se nastaví inicializační typy. Pro atributy a parametry operací se přesně určí datový typ. Pro jednotlivé třídy se zkoumá, zda objekty této třídy mohou existovat samostatně nebo pouze ve vztahu s objekty jiné třídy. Dalším krokem návrhu je zvážení, zda některé třídy není vhodné rozdělit. Kandidátem pro rozdělení jsou třídy s příliš velkým počtem atributů a operací. 6.3.4 Návrh generalizací Při návrhu generalizací musí být dodrženo minimálně jedno ze dvou kritérií, které musí splňovat navržená subtřída: • Musí existovat takový stav navržené subtřídy, který smysluplně rozšiřuje stav přímé nadřazené supertřídy a tím uchovává další informace. • Musí mít nějakou operaci nebo omezení, kterým disponují její objekty a přitom nejsou tyto operace resp. omezení podporovány přímou supertřídou. V souvislosti s generalizací je rozumné diskutovat, zda každá třída smí či nesmí míti více supertříd, resp. zda každý objekt supertřídy náleží nějaké subtřídě. V konceptuálním E-R modelu platí pravidlo, že schéma je korektní, má-li pouze jeden zdroj IsA hierarchie (analogie dědičnosti subtřídy ze supertřídy). Co se týká vztahu objektu supertřídy s objekt subtříd je možno uvažovat oba případy. Je-li vztah mezi super a subtřídou takový, že každému objektu supertřídy náleží aspoň jedna subtřída, jedná se o totální generalizaci, v opačném případě se jedná a parciální generalizaci. Jeli vztah mezi super a subtřídou takový, že každému objektu supertřídy náleží nejvýše jedna supertřída, jde o exkluzivní generalizaci. Z hlediska návrhu generalizací jsou preferovány exkluzivní totální generalizace. Pro zabezpečení konzistence generalizace by měla být dodržena následující pravidla: • Hierarchie generalizace je acyklická. • Pokud třída dědí z více tříd, musí mít tyto třídy společného předka. • Je-li v subtřídě předefinován nějaký atribut, musí být typ tohoto atributu subtypem atributu v supertřídě. • Je-li v subtřídě předefinován vstupní parametr operace, musí být typ předefinovaného parametru subtypem parametru definovaného v supertřídě. 69 • Je-li v subtřídě předefinován výstupní parametr operace, musí být typ předefinovaného parametru subtypem parametru definovaného v supertřídě. 6.3.5 Návrh vztahů Návrh vztahů, které byly vytvořeny mezi třídami Objektového modelu ve fázi analýzy, představuje obdobu klasické transformace známé např. z E-R diagramu na relační datové schéma. Zde mohou být vztahy mapovány buď formou přidaných atributů do relací nebo nových relací. V objektových modelech jsou vztahy reprezentovány objektovými atributy, kdy hodnota atributu jedné třídy objektu ukazuje na objekt jiné třídy. Např. vztah mezi třídou Student a třídou Skupina je modelován atributem třídy Student se jménem je_zařazen, přičemž tento atribut nabývá hodnot třídy Skupina. Vztahy, stejně jako třídy a atributy mohou být buď extenzionální nebo je možno tyto vztahy odvodit, což je situace pro efektivní využití deduktivního pravidla. Transformací vztahů navržených v Objektovém modelu dojde k odstranění vztahu z Objektového modelu a přidání atributu do příslušné třídy. Příklad: se_skládá_z Student Skupina je_zařazen Obr. 6-4 Vztah je_zařazen je transformován tak, že do třídy Student se zařadí atribut je_zařazen. Typ tohoto atributu je buď Skupina, jedná-li se o kardinalitu 1:1 nebo set-of(Skupina), jedná-li se o kardinalitu 1:N. V některých případech je třeba modelovat vztahy v obou směrech. Student je zařazen do Skupiny a Skupina se skládá ze Studentů. Nechť vztah Skupina se_skládá_z Student má kardinalitu 1:N a vztah Student je_zařazen Skupina je v kardinalitě 1:1. Pak typ atributu se_skládá_z je set-of(Student) a typ atributu je_zařazen je Skupina. 6.3.6 Návrh deduktivních pravidel Co se týká návrhu deduktivních pravidel, budeme se zabývat deduktivními pravidly pro odvozování dat a deduktivní pravidly pro definici integritních omezení. Pravidla pro odvozování dat pak budeme členit na pravidla, která 70 odvozují atributy, pohledy a třídy. Integritní omezení jsou chápána jako implicitní (fixní formát) nebo jako uživatelem definovaná (generic formát). Návrh deduktivních pravidel je iniciován a vychází z neformálních popisů získaných v průběhu analýzy. Během návrhu může být objeveno mnoho dalších požadavků. Návrhář může definovat všechna odvozená data, která obohatí znalosti podporované systémem a odhalí všechny zdroje kontrol konzistence, které mohou být formulovány jako integritní omezení. Na druhé straně přínosem je, pokud návrhář odhalí i možné závislosti mezi již navrženými konstrukty a vhodným nadefinováním deduktivních pravidel je redukuje resp. úplně odstraní. Zmenšení objemu dat pak přináší snazší kontrolu integrity databáze spojenou s aktualizačními operacemi. Velkou výhodou deduktivních pravidel je jejich deklarativnost. Umožňují popis znalostí, které nevyžadují žádné procedurální detaily a tudíž popis pravidel je naprosto nezávislý od jejich implementace. Na druhé straně z toho vyplývají i omezení v nemožnosti vyjádřit procedurální rysy, které jsou někdy zapotřebí. Jsou-li deduktivní pravidla pro odvozování dat transformována do aktivních pravidel, dochází k tzv. materializaci dat. V takovém případě jsou odvozená data extenzionálně uložena v databázi. Jazyky pro definování pravidel (Prolog nebo Datalog) jsou používány v kontextu relačních databází. V případě použití objektově orientovaných databází, objektová reprezentace vede k různým stylům pravidel. Proměnné odkazují na objekty spíše než na hodnoty a přístup k jednotlivých hodnotám atributů se realizuje prostřednictvím tečkové notace. Příklad 6-1: Definujme entity Osoba, Rodič a Partner v relačním a objektové pojetí: Relační pojetí Osoba(jméno, adresa, pohlaví) Rodič(rodič, dítě) Partner(manžel, manželka) Objektové pojetí Object Osoba s atributy jméno: string adresa: string sex: string dítě: set-of Osoba partner: Osoba Deduktivními pravidly lze odvozovat pohledy. Pohledy jsou podobné relacím, ale jejich n-tice nejsou uloženy v databázi. Mohou se vypočítat pomocí dotazovacího jazyka nebo deduktivních pravidel. V objektovém pohledu deduktivní pravidla mohou odvozovat pohledy nebo atributy. 71 Pohledy pro relační přístup Matka(matka, dítě) Sestra(jméno, jméno) Předek(jméno, jméno) Odvozené atributy pro objektový přístup Rodič: set-of(Osoba) Matka: Osoba Sestra: set-of(Osoba) Předek: set-of(Osoba) Všechny tyto předpoklady můžeme vyjádřit pomocí pravidel. V relačním pojetí: Matka(X,Y) ← Rodič(X,Y), Osoba(X,-,žena) matka je rodič, žena Sestra(X,Y) ← Rodič(Z,X), Rodič(Z,Y),Osoba(X,-,žena) sestra je žena, která má stejné rodiče jako osoba Y Předek(X,Y) ← Rodič(X,Y) předek je rodič Předek(X,Y) ← Rodič(X,Y), Předek(X,Y) předek je rodič předka V objektovém pojetí: X in Y.rodič ← Osoba(X), Osoba(Y), Y in X.dítě X je rodičem Y, jestliže X aY jsou osoby a zároveň Y je dítětem X X in Y.matka ← Osoba(x), Osoba(Y), X in Y.rodič, X.sex=“žena“ X je matkou Y, jestliže X a Y jsou osoby, X je rodičem Y a zároveň X je žena X in Y.sestra ← Osoba(X), Osoba(Y), Osoba(Z), Z in Y.rodič, Z in X.rodič, X.sex=“žena“ X je sestrou Z, jestliže existuje osoba Z, která je rodičem X i Y a zároveň X je žena X in Y.předek ← Osoba(X), Osoba(Y), X in Y.rodič 72 X in Y.předek ← Osoba(X), Osoba(Y), X in Y.rodič.předek Tímto způsobem je vyjádřena rekurze. X je předkem Y, je-li jeho rodičem. X je předkem Y, je-li rodičem předka. Příklad 6-1 ukazuje, jak může být deduktivních pravidel použito k vyjádření inverzních vztahů (rodič, dítě). Nejfrekventovanější použití rekurzívních pravidel je pro vyjádření tranzitivního uzávěru binárních vztahů. V uvedeném případě pohled Předek je definován jako tranzitivní uzávěr relace Rodič. Tranzitivní uzávěr vyžaduje dvě pravidla, startovací pravidlo (nerekurzivní), které zabezpečuje bázi rekurze a rekurzivní pravidlo, které zabezpečuje indukci. Objektový přístup se vyhne zavádění existenčně kvantifikované proměnné Z (v relačním pojetí) vyjádřením cesty, která kombinuje atributy rodič a předek (Y.rodič.předek). 6.3.7 Všeobecné principy dobře formovaných deduktivních pravidel Pravidla, aby mohla být vyhodnocena, musí splňovat několik syntaktických a sémantických požadavků (vyplývají z teoretických předpokladů, které byly popsány v kapitole 2). Tyto požadavky lze shrnout do následujících bodů: • Pravidla musí být v omezeném rozsahu, tzn. všechny jejich proměnné musí být omezeny vhodnými formulemi. • Pravidla musí být bezpečná, tzn. všechny proměnné v hlavě pravidla se musí objevit minimálně v jedné pozitivní formuli v těle pravidla. • Pravidla s negativními formulemi musí být stratifikována, tzn. nesmí být rekurzivně použita v těle jiných pravidel tak, aby vytvářela cyklus rekurzivních pravidel, která vyvolávají negativní formuli. • Pravidla s termy musí být stratifikována, tzn. že nesmí být rekurzivně použita v těle ostatních pravidel tak, aby tvořila cyklus rekurzivních pravidel, které volají množinu termů. 6.3.8 Pravidla pro odvozování dat Následující kapitoly jsou věnovány integraci deduktivních pravidel do návrhu informačního systému dle členění, uvedeného v kapitole 6.3.6. 6.3.8.1 Návrh odvozování atributů Jednou z důležitých aplikací deduktivních pravidel je výpočet odvozených atributů, tj. takových atributů, jejichž hodnota může být odvozena z hodnot jiných atributů. Návrhář by měl odpovědět na následující otázku: Existují nějaké atributy, jejichž hodnoty mohou být odvozeny? 73 Příklad: Příklad odvozeného atributu by mohl být následující: Mějme atribut datum narození u třídy Osoba. Z atributu datum narození odvoďte atribut věk. Define object class Osoba with Attribute datum_narození: date, věk: integer derived End Define external formula castToVěk(in D:date, out A:integer) End Define implementation for Osoba with Attribute Self.věk = I ← integer(I), castToVěk(Self.datum_narození, I) End Proměnná Self postupně nabývá všech instancí třídy Osoba. 6.3.8.2 Návrh odvozování rekurzivních atributů Speciální pozornost je třeba věnovat rekurzívním atributům. Nejjednodušší a nejpoužívanější forma rekurze je tranzitivní uzávěr binárního vztahu [17]. Vztah je modelován tak, že typ atributu objektu odkazuje zpět na tento objekt. Tento typ vztahu bývá nazýván kruhovým vztahem. Příklad: Mějme následující fragment schématu databáze : Define object class Osoba with Attribute děti: set-of(Osoba), rodiče: set-of(Osoba), derived, sourozenci: set-of(Osoba), derived, předci: set-of(Osoba), derived End Využitím deduktivních pravidel můžeme navrhnout odvozené atributy rodiče a sourozenci a odvozený rekurzivní atribut předci např. následujícím způsobem: Define implementation for Osoba with Attribute X in Self.rodiče ← Osoba(X), Self in X.děti; X in Self.sourozenci ← Osoba(X), X.rodiče in Self.rodiče, X != Self; 74 X in Self.předci ← Osoba(X), X in Self.rodiče; X in Self.předci ← Osoba(X), X in Self.rodiče.předci End kde: „!“ je operátor řezu, který zabraňuje vyhodnocování zbytku výpočtového stromu. Použije se tehdy, když víme, že zbytek výpočtového stromu již nic nepřinese do celkového výpočtu. Dá se tím výpočet urychlit. V uvedeném příkladu stačí pro definici sourozence, že tito mají aspoň jednoho společného rodiče (tedy za sourozence považujeme i sourozence nevlastní). 6.3.8.3 Návrh odvozování pohledů Pohledy jsou chápány v databázové terminologii jako virtuální objekty (relace), které vzniknou vyhodnocením dotazu a usnadňují tvorbu aplikace. K pohledům lze nastavit individuální přístup pro aplikace, což umožňuje vytvářet mechanizmus ochran. Data jsou vybírána z více tříd a k těmto datům je nastaven selektivní přístup. Příklad: Define view Manželství (Manžel:Osoba, Manželka:Osoba) Manželství([Manžel:X, Manželka:Y]) ← X.sex=”Muž” End X.partner=Y, 6.3.8.4 Návrh odvozování tříd Využitím deduktivních pravidel lze odvodit další třídy, jejichž populace závisí na hodnotě specifikovaného atributu definované supertřídy. Příklad: Mějme třídu Osoba, jejímž atributem bude profese. Na základě hodnoty atributu profese = učitel lze odvodit třídu Učitel. Define implementation for class Učitel Population Učitel(X) ← Osoba(X), X.profese = „učitel“ End Jestliže Osoba změní profesi, musí být automaticky vyňata z třídy Učitel. 6.3.9 Pravidla pro definování integritních omezení Zcela odlišný pohled na integritu databáze a především na údržbu konzistence přináší zavedení deduktivních pravidel do její definice. Deduktivní pravidla mohou sloužit k definování integritních omezení a to 75 jak ve fixním formátu, tak tzv. generických integritních omezení. Fixní formát se obvykle týká omezení typu notnull, primary key, unique attribut, inverse attribut a referenční integrita. Výše uvedená integritní omezení jsou podporována konvenčními databázovými systémy a tudíž uživatel se může plně spolehnout na zajištění integrity, jsou-li tato omezení nadefinována a tedy jsou součástí schématu databáze. Existují i další integritní omezení v tzn. generickém formátu, která závisí na specifikované aplikační doméně. Tato omezení mohou být podporována v jejich plné obecnosti pouze novými generacemi databázových systémů. u kterých se projeví výhody využití deduktivních pravidel, která jako součást databáze zajišťují integritu dat v souvislosti s požadavky aplikace . 6.3.9.1 Návrh integritních omezení ve fixním formátu • notnull atribut Toto omezení zabraňuje, aby hodnota daného atributu zůstala prázdná nebo byla null. S využitím deduktivního pravidla lze zajistit toto integritní omezení tak, že pokud hodnota daného atributu je null, pravidlo produkuje do hlavy pravidla hodnotu. Jak bylo uvedeno výše, produkce hodnoty do hlavy pravidla je prováděna tehdy, je-li formule v těle pravidla ohodnocena jako true a je-li hodnota deduktivního pravidla true, databáze není konzistentní. Příklad 6-2: Define object class Zaměstnanec Attributes jméno: string, notnull ……. Add constraint null_jméno for Zaměstnanec As null_jméno(Self) ← Self.jméno = null • Primární klíč a unikátní atribut Hodnoty primárního klíče jednoznačně identifikují jednotlivé objekty dané třídy, tzn. všechny hodnoty tohoto atributu musí být jedinečné. Primární klíč smí být složený z více atributů, pak se identifikační vlastnost týká složeného klíče jako celku a nikoliv jeho částí. Navíc primární klíč nesmí nabývat hodnoty null a jde-li o složený primární klíč, žádná jeho složka nesmí nabývat hodnoty null. Tato vlastnost je automaticky hlídána, pokud je daný atribut definován jako primární klíč. Každá třída smí mít pouze jeden primární klíč, ale smí mít více unikátních atributů (tzv. kandidáti primárního klíče). Tito kandidáti splňují identifikační vlastnost, ovšem nemusí splňovat požadavek notnull ani pro složený atribut, ani pro jeho složky. 76 Příklad 6-3: Define object class Zaměstnanec Attributes číslo_zaměstnance: string, jméno: string, notnull, datum_narození: string notnull, národnost: string constraint key(číslo_zaměstnance), unique(jméno, datum_narození, národnost) add constrait key for Zaměstnanec as key(Self) ← Zaměstnanec(X), X!=Self, X.číslo_zaměstnance=Self.číslo_zaměstnance End Add constraint unique for Zaměstnanec As unique(Self) ← Zaměstnanec(X), X!=Self, X.jméno=Self.jméno, X.datum_narození=Self.datum_narození, X.národnost=Self.národnost • Inverzní atributy Inverzními atributy se rozumí dva atributy různých tříd, které slouží k modelování vztahu mezi těmito třídami, přičemž oba atributy vyjadřují tutéž skutečnost. Z hlediska nákladů na údržbu konzistence databáze je výhodnější jeden z těchto atributů definovat jako odvozený a využít deduktivního pravidla, které skutečnost existence inverzích atributů efektivně modeluje. Příklad 6-4: Define object class Zaměstnanec Attributes pracuje_na: Oddělení …. Define object class Oddělení Attributes zahrnuje: set-of(Zaměstnanec) …. Atributy pracuje_na a zahrnuje jsou inverzními atributy a tato skutečnost může být modelována definováním jednoto z těchto atributů jako odvozeného. Např. definujme atribut zahrnuje jako odvozený: Define object class Oddělení Attribute zahrnuje: set-of(zaměstnanec), derived Define implementation for Oddělení 77 Attributes X in Self.zahrnuje ← Zaměstnanec(X), X.pracuje_na=Self End Druhým možným řešením je definovat oba atributy a pomocí integritních omezení kontrolovat konzistenci databáze, tzn. odhalovat nedostatky, které by mohly nastat při zadání hodnoty jak do atributu zahrnuje, tak do atributu pracuje_na. Tento způsob je náročnější na údržbu. • Referenční integrita Referenční integrita je hlídána mezi dvěma třídami, z nichž jedna je označována jako odkazující (nezávislá, nadřazená) a druhá jako odkazovaná (závislá, podřazená). Pro podřazený objekt platí, že nemůže existovat, aniž by vstoupil do vztahu s nadřazeným objektem. Tento způsob integrity je možno opět modelovat s využitím deduktivních pravidel. Vyjděme z předchozího příkladu a předpokládejme, že třída Zaměstnanec je závislá na třídě Oddělení, tzn., že neexistuje žádný Zaměstnanec, který by nepatřil do některého z existujících Oddělení. Tuto skutečnost lze s využitím deduktivních pravidel modelovat následujícím způsobem: Define object class Zaměstnanec Attributes pracuje_na: Oddělení, notnull End Add constraint umístění for Zaměstnanec Umístění(Self) ← Self.pracuje_na = null End 6.3.9.2 Návrh generických integritních omezení Během analýzy jsou získávána generická integritní omezení jako požadavky uživatelů na danou aplikaci a jsou obvykle zaznamenávána neformalizovaně. Ve fázi návrhu se tato neformalizovaná integritní omezení transformují do odpovídající formální podoby. Již ve fázi analýzy se rozhoduje o tom, zda se jedná o generická integritní omezení cílená na konkrétní třídy objektů nebo necílená. Dalším možným kritériem rozdělení generických integritních omezení je kriterium dynamiky. Podle tohoto kriteria je účelné rozdělit generická IO statická a dynamická. 6.3.9.3 Cílená IO Omezení definovaná v kontextu specifikovaných tříd jsou omezení cílená. Formální zápis takového integritního omezení pak představuje predikát, který dohlíží na stav individuálních cílových objektů a poskytuje pro každý cílový objekt pravdivostní hodnotu. Predikát může taky odkazovat na 78 ostatní objekty, které jsou spojeny vztahem s cílovým objektem. Cílená IO jsou funkce, které vracejí objekty z jedné (cílené) třídy. Příklad 6-5: Zaměstnanec jde do důchodu, pokud má věk větší než 60 let nebo má odpracováno více než 35 let. Následující příklad demonstruje definici pohledu Adept_na_důchod: Define view Adept_na_důchod(Důchodce:Zaměstnanec) Adept_na_důchod([X]) ← Zaměstnanec(X), X.věk > 60; Adept_na_důchod([X]) ← Zaměstnanec(X), X.odpracováno > 35 End Add constraint Chybný_adept for Důchodce As není_adept(Self) ← not Adept_na_důchod([Self]) End 6.3.9.4 Necílení IO Tato IO se nevztahují k jedné třídě, nýbrž k více třídám, které jsou ve vzájemných vztazích, obvykle ve vztahu odkazující a odkazované třídy. Necílená IO na rozdíl od cílených jsou funkce, které vrací více vzájemně provázaných objektů z různých tříd. Příklad: Předpokládejme třídy Kurz, Zkouška a Student a jejich následující definice: Define object class Zkouška Attributes udělaná: Student, předmět: Kurz …. End Define object class Student Attributes studijní_plán: set-of(Kurz) … End Následuje IO, které bude vyjadřovat tu skutečnost, že Student smí složit pouze Zkoušku z takového Kurzu, který je součástí jeho Studijního plánu. Add constraint špatná_zkouška((S:Student, K:Kurz, Z:Zkouška) As špatná_zkouška([S, K, Z]) ← Z.udělaná=S, Z.předmět=K, not K in S.studijní_plán 79 End 6.3.9.5 Dynamická IO Dynamická IO se zabývají dvěma různými stavy stejného objektu. Má-li být např. vyjádřena ta skutečnost, že hodnota jistého atributu definované třídy je u každého nového (mladšího) objektu větší než hodnota téhož atributu staršího objektu téže třídy, lze využít deduktivního pravidla pro definici dynamického IO. Příklad uvádí IO, které hlídá, aby nové číslo verze bylo vždy větší než staré. Příklad: Add constraint číslo for Cyklus As číslo(Self) ← Self.číslo_verze <= old(Self.číslo_verze) End 6.3.9.6 Pravidla pro funkční závislosti Všechny funkční závislosti, které jsou považovány jako předpoklady (nalezeny v analýze funkčních závislostí), je možno přepsat do deduktivních pravidel. Příklad 6-6: Mějme množinu atributů A,B,C,D ∈ U, kde r(U) je schéma relace/třídy, s následujícími instancemi: A B C D a b1 c1 d1 a b2 c2 d2 Jestliže navíc platí, že b1=b2, pak platí A → B, tzn. atribut B je funkčně závislý na atributu A (ke každé hodnotě atribut A existuje právě jedna hodnota atributu B). Tuto skutečnost je možno přepsat do deduktivních pravidel. r(a, b1, c2, d2) ← r(a, b1, c1, d1) & r(a, b2, c2, d2) nebo b1 = b2 ← r(a, b1, c1, d1) & r(a, b2, c2, d2) Do deduktivních pravidel lze přepsat rovněž Armstrongovy axiomy (zde bez důkazu). Výsledkem přepisu je množina deduktivních pravidel, jejichž vyhodnocením lze získat všechny důsledky (uzávěr množiny funkčních závislostí), které vyplývají z předpokládaných funkčních závislostí. 80 6.4 Prototyping deduktivních pravidel Během fáze návrhu deduktivních pravidel je navrženo jisté množství pravidel a integritních omezení více méně nezávisle, podle toho, jak to vyžaduje aplikace. Je zřejmé, že takto navržená pravidla a integritní omezení mohou sice jednotlivě splňovat syntaktické a sémantické požadavky (viz. kap. 6.3.7.), ale množina těchto pravidel jako celek není navržena správně. Ve fázi návrhu je totiž kladen důraz na správnost jednotlivých pravidel, resp. integritních omezení. Fáze prototypingu v souvislosti s navrženou integrací deduktivních pravidel do analýzy a návrhu informačního systému se zaměřuje na vzájemné závislosti a souvislosti mezi definovanými pravidly resp. mezi integritními omezeními. Předmětem zájmu prototypingu je stratifikace a uspokojivost. • Stratifikace (jak byla v obecných rysech popsána v kapitole 2.3) stanovuje pořadí vykonávání jednotlivých pravidel v rámci množiny navržených pravidel. Jak již bylo uvedeno, množina pravidel nemusí být vždy stratifikovatelná, vyskytují-li se v ní negativní literály, rekurze, resp. agregační funkce. • Množina pravidel, která se skládá z pravidel pro odvozování dat a integritních omezení, je uspokojivá, jestliže je možno vytvořit přinejmenším jeden stav databáze konzistentní se schématem, který je správný, tzn. vyhovuje všem integritním omezením. Prototyping se zaměřuje prostřednictvím statické a dynamické analýzy na zjištění, zda vzájemné vztahy mezi pravidly splňují podmínky stratifikace a uspokojivosti. Prototyping pomáhá odhalovat nedostatky v pravidlech zkonstruovaných ve fázi návrhu nikoliv co se týká jejich jednotlivých definic, ale vzájemných vztahů a návazností (event. jejich redundance). 6.4.1 Statická analýza Statická analýza je založena na určení logických závislostí mezi uloženými (extenzionálními) a odvozenými (intenzionálními) koncepty a jejich vizualizace ve formě grafů závislostí. Uzly grafu závislostí představují třídy, atributy, integritní omezení a pohledy. Hrana z uzlu X do uzlu Y modeluje tu skutečnost, že koncept X se vyskytuje v těle deduktivního pravidla, které odvozuje koncept Y, obsažený v hlavě pravidla. Příklad 6-7: Mějme následující množinu deduktivních pravidel X in Y.rodiče ← Osoba(X), Osoba(Y), Y in X.dítě X=Y.matka ← Matka(X), Osoba(Y), X in Y.rodič X in Y.sestry ← Osoba(X), Osoba(Y), X in Y.rodič.dítě, X.sex = „žena“, X! =Y Rodič(X) ← Osoba(X), X.dítě ! = {} 81 Matka(X) ← Rodič(X), X.sex = „žena“ Extenzionální koncepty jsou: Třída Osoba Atributy dítě a sex Intenzionální koncepty jsou: Třídy Rodič, Matka Atributy sestry, rodiče a matka 6.4.1.1 Graf závislostí V grafu závislostí lze zavést následující značení: Extenzionální třída Intenzionální třída Extenzionílní atribut Intenzionální atribut Následuje graf závislostí, který modeluje vztahy mezi jednotlivými pravidly z příkladu 6-7. 82 Osoba.matka Osoba.rodiče Osoba.sestry Matka Osoba.sex Rodič Osoba Osoba.dítě Obr. 6-5 Dalším krokem je zjištění, zda je či není sestavený graf závislostí acyklický (tzn. neobsahuje cyklus). Pokud je graf acyklický, je rovněž navržená množina pravidel stratifikovatelná a tudíž existuje hierarchický postup deduktivních pravidel, který zabezpečí odvození veškerých konceptů. Z výše uvedeného příkladu vyplývá např. následující postup vyhodnocování pravidel: 1) odvození atributu rodiče 2) odvození třídy Rodič 3) odvození třídy Matka 4) odvození atributu matka 5) odvození atributu sestry Dalším důležitým požadavkem je, aby cesty v grafu, které odvozují koncepty, byly dobře formované, tzn. aby každý odvozovaný koncept v grafu byl dosažitelný prostřednictvím přímé cesty z nejméně jednoho extenzionálního konceptu. 6.4.1.2 Rekurze Rekurze mohou být zdrojem potencionálních problémů při vyhodnocování deduktivních pravidel. Graf závislostí obsahující rekurze musí proto 83 splňovat následující podmínku. Každý rekurzivně odvoditelný koncept musí být dobře formován, tj. musí být odvoditelný z minimálně jednoho extenzionálního konceptu. Cyklus, který se objeví v grafu závislostí z důvodu rekurze nečiní při vyhodnocení potíže, pokud každý odvoditelný koncept je odvoditelný z konceptu extenzionálního a každý cyklus v grafu představuje rekurzi tohoto odvoditelného konceptu. Příklad: Příklad grafu pro rekurzivní pravidla: Osoba.předek Osoba.rodiče Osoba Osoba.dítě Obr. 6-6 6.4.1.3 Dědičnost Objektový datový model přináší do databázové technologie četné výhody. Jednou z těchto výhod je možnost využití dědičnosti. Deduktivní pravidla definovaná na úrovni supertříd jsou děděna všemi podřízenými subtřídami a tudíž nemusí být znovu definována v příslušných subtřídách. Tato skutečnost ovšem v některých případech může činit potíže. Jedná se o situaci, kdy některé deduktivní pravidlo není vhodné dědit. V takovém případě musí dojít k předefinování pravidla. Příklad 6-8: Mějme třídu Zaměstnanec a definujme pro tuto třídu deduktivní pravidlo, které odvodí atribut daň ze znalosti atributu hrubá_mzda. Předpokládejme, že daň činí 30 % hrubé mzdy. Define implementation for Zaměstnanec Attributes Self.daň = Y ← real(Y), Y=0.3 * Self.hrubá_mzda End Mějme třídu Inženýr, která je podtřídou třídy Zaměstnanec. Třída Inženýr automaticky dědí definované deduktivní pravidlo pro odvození daně. 84 Budeme-li chtít vyjádřit tu skutečnost, že daň inženýra není 30%, ale 40%, musíme deduktivní pravidlo předefinovat. Redefine implementation for Inženýr Attributes Self.daň = Y ← real(Y), Y= 0.4 * Self.hrubá_mzda End 6.4.1.4 Negace a stratifikace Vyskytuje-li se v množině deduktivních pravidel negace, může vyhodnocení pravidel vést k různým výsledkům, jestliže pořadí vyhodnocovaných pravidel je různé. Jednoduchá interpretace negace v databázi spočívá v tvrzení, že fakt není v databázi pravdivý, pokud není v databázi uložen. Tato jednoduchá implementace negace se v databázové literatuře označuje negace jako selhání, tedy došlo k selhání při hledání daného faktu v databázi. Výsledkem pak je, že fakt má hodnotu false. Příklad 6-9: Inženýr(X) ← Zaměstnanec(X), X.vzdělání = „Ing“ Technik(X) ← Zaměstnanec(X), not Inženýr(X) Druhé pravidlo obsahuje negaci. K tomu, abychom mohli v databázi říci, kdo je technikem, musíme nejdříve znát všechny inženýry. Tzn., chceme-li přistoupit k odvození konceptu Technik, musíme nejdříve odvodit všechny koncepty Inženýr. Negativní tvrzení se zaznačí v grafu závislostí tak, že se hrana spojující nadřízený a podřízený koncept označí negací. Inženýr Zaměstnanec. vzdělání ¬ Technik Zaměstnanec Obr. 6-7 85 Příkladem nestratifikovatelných deduktivních pravidel by mohla být tato dvojice pravidel: Inženýr(X) ← Zaměstnanec(X), not technik(X) Technik(X) ← Zaměstnanec(X), not Inženýr(X) Jak Inženýr, tak Technik na sobě závisí rekurzivně a navíc negativně. Toto není správně definovaná sémantika. 6.4.2 Dynamická analýza Dynamickou analýzou se rozumí proces testování pravidel a integritních omezení na vzorku dat. Vzorek dat je třeba vytvořit tak, aby korespondoval s reálnými daty a tento vzorek dat je podroben testování. Nejdůležitějším požadavkem je požadavek na systematický přístup a to jak při tvorbě vzorku dat, tak při samotném testování. Dynamická analýza je někdy označována jako „analýza příkladem“. Výsledkem dynamické analýzy je zjištění, zda navržená množina pravidel a integritních omezení je uspokojivá. To znamená, že v konečném čase je možno sestavit aspoň jeden stav databáze, který splňuje všechna navržená pravidla a integritní omezení. Pojmy k zapamatování: Objektový model, dynamický model, analýza, návrh, odvozování dat, návrh integritních omezení, prototyping deduktivních pravidel. Úkoly k zamyšlení: 1. Pokuste se navrhnout odvozené atributy pro třídu Student a Skupina z příkladu v kap. 6.3.5. napište příslušná deduktivní pravidla pro odvození navržených konceptů. 2. Rozšiřte příklad 6-1 o návrh dalšího rekurzivního atributu. Zapište deduktivní pravidlo v relačním i objektovém přístupu. Kontrolní otázky: 1. Charakterizujte základní typy vestavěných integritních omezení. 2. Co je to generické integritní omezení? 86 3. Popište jednotlivé kroky při návrhu schématu deduktivní databáze. 4. K čemu slouží prototyping deduktivních pravidel? 87 7 DEMONSTRAČNÍ ÚLOHA Cíl: Cílem této kapitoly je na jednom praktickém příkladu (komunikace mezi účastníky distančního vzdělávání) ukázat analýzu a částečně i návrh databázové aplikace v prostředí objektově deduktivního systému řízení báze dat. Po jejím prostudování by měl mít čtenář rámcovou představu o jednotlivých krocích a měl by být schopen sám analyzovat problémovou doménu a navrhnout schéma databáze v prostředí objektově deduktivního systému řízení báze dat. Průvodce studiem: Vážené čtenářky, vážení čtenáři, Dostáváte se k závěru výukové opory, která Vás měla seznámit se základními pojmy a charakteristikami deduktivních databází. Podstatnou součástí této opory je metodika analýzy a návrhu deduktivní databáze, která vychází z metodiky IDEA. Závěrečná kapitola, ke které jste se dopracovali, obsahuje demonstrační úlohu, na které byste si měly popsané postupy znovu připomenout a ověřit si, zda jste probranou látku správně pochopili. Po jejím prostudování byste měli být schopni vypracovat korespondenční úkol, uvedený v kapitole 8. 7.1 Analýza subsystému Komunikace účastníků vzdáleného vyučování Vývoj IS je velmi složitá a komplexní činnost. Tato případová studie se pokouší pouze demonstrovat možné přístupy a tudíž v praktických ukázkách bude velmi zjednodušovat realitu a abstrahovat od mnoha skutečností. 7.1.1 Hrubá analýza Aktivními objekty, tj. objekty, které vyvíjejí aktivitu v procesu vzdáleného vyučování a o nichž se předpokládá že existují, jsou Student, Tutor, Autor kurzu, Examinátor a Organizátor. Některé role mohou být sloučeny, ovšem toto slučování rolí není příliš vhodné a může velmi negativně ovlivnit funkčnost celého systému. V zjednodušeném modelu budou spojeny role Tutora, Autora kurzu a Examinátora. Pro jednoduchost činnost tutora, autora kurzu a examinátora je označována jako aktivita Tutora a toto označení by nemělo asociovat představu, že veškeré aktivity provádí Tutor. Velmi důležitá je role Organizátora vzdáleného vyučování, kterou v uváděném modelu částečně vykonává Pedagogický poradce. 88 Model aktivních objektů vzdáleného vyučování: Student Tutor Autor Examinátor Organizátor Obr. 7-1 Model s kumulací funkcí, který bude pro jednoduchost použit Student Tutor Pedagogický poradce Obr. 7-2 7.1.1.1 Identifikace zdrojů • • Student je aktivním objektem, jehož hlavní aktivitou je organizace samostudia, samostudium a další aktivity s tím spojené. Tutor je průvodcem studenta v samostudiu, poskytuje mu materiály, testy, konzultace, je tvůrce kurzu, zkouší studenta. 89 • • • • • • • Pedagogický poradce organizuje vzdálené vyučování, radí studentovi v technických a organizačních záležitostech v průběhu studia, organizuje a vede tutoriály. Skupina je tvořena jednotlivými studenty a její existence jako samostatného objektu je dána operacemi, které jsou s ní spojeny. Kurz je studován studentem a veden tutorem. Výukový materiál je obvykle určen ke konkrétnímu kurzu, ovšem může existovat materiál určený pro více kurzů a je v různé podobě distribuován studentovi. Výukový materiál poskytuje tutor studentovi ve vhodné době a podobě tak, aby student z tohoto materiálu získal maximum informací a zároveň byl schopen danou problematiku z materiálu pochopit, procvičit a ověřit si její zvládnutí. Komunikace jsou veškeré formy vzájemných vztahů mezi objekty vzdáleného vyučování za účelem výměny informací. Test je průběžné zjišťování úrovně znalostí. Zkouška je závěrečné zjištění znalostí, obvykle zkouškou je zakončen kurz. Ve většině distančních kurzů je zkouška prováděna prezenčním způsobem. 7.1.1.2 Identifikace aplikací Na tomto místě bude uvedeno jen několik aplikací, které je třeba v modelu vzdáleného vyučování navrhnout. Jedná se demonstrační příklad za účelem použití popsané metodiky, nikoli o výčet aplikací. • Tvorba a aktualizace kurzu je zásadní činnost v procesu vzdáleného vyučování a tudíž i aplikace s ní spojená musí být detailně propracována. Dá se předpokládat, že tato aplikace bude dekomponována na více aplikací. • Tvorba a aktualizace studentů a skupin jsou operace spojené se studijně organizační činností (prováděné organizátorem), které v kumulovaném modelu provádí pedagogický poradce. • Vedení kurzu představuje činnosti spojené s průběhem studia daného kurzu. Tyto činnosti garantuje tutor a jejich kvalita bezprostředně odráží celkovou kvalitu vzdáleného vyučování. • Vyhodnocení kurzu, skupin a studentů zahrnuje veškeré evaluační činnosti spojené s kurzem, resp. systémem vzdáleného vyučování. 90 7.1.2 Analýza schématu 7.1.2.1 Identifikace atributů V této fázi analýzy není věnována pozornost struktuře jednotlivých atributů, tzn. zda se jedná o atributy atomické nebo strukturované (např. atribut typu třída). Atributy typu třída budou zřejmé až v následující části, při identifikací vztahů. Ovšem opačný postup by byl rovněž možný. V tom případě by bylo třeba nejdříve hledat vlastnosti tříd nezávisle na tom, zda se jedná o atributy jednoduché nebo strukturované a až pak se věnovat definování vztahů. Student: • identifikační číslo • jméno a příjmení • studijní obor • ročník • kontakt • studijní výsledky Skupina: • číslo skupiny Učitel: • osobní číslo • jméno a příjmení • katedra • kontakt Tutor: Pedagogický poradce: Kurz: • číslo kurzu • název kurzu • ukončen Komunikace: • kod • datum • místo konání • typ • forma • téma • vyhodnocení Konzultace: Konference: 91 Tutoriál: Výukový materiál: • číslo materiálu • název materiálu • typ materiálu • forma • způsob distribuce Test: • • • • • • • • • • číslo testu otázka odpověď 1 odpověď 2 odpověď 3 odpověď 4 správná odpověď body odpověď získané body Výsledky: • semestr • zapsaný kurz • požadované kredity • získané kredity Atd. 7.1.2.2 Identifikace vztahů a hierarchií Jednosměrné vztahy, kdy atribut X objektu A nabývá hodnoty objektu B jsou zobrazeny: Oboustranné vztahy, kdy hodnota atributu X objektu A je objekt B a zároveň hodnota atributu Y objektu B je objekt A (např. Ucitel vede Kurz, Kurz je_veden Ucitelem) jsou zobrazeny: 92 IsA hierarchie ve smyslu supertříd a subtříd je zobrazena: Následující model je modelem vztahů a hierarchií, přičemž vztahy jsou modelovány strukturovanými atributy (atribut typu třída) a isA hierarchií. Obr. 7-3 93 7.1.2.3 Identifikace operací Ve fázi identifikace operací je třeba určit pro jednotlivé třídy (zdroje), za které operace budou tyto třídy odpovídat. Následující popis (s některými možnými operacemi) demonstruje proces identifikace operací. Operace všeobecného použití: Učitel posílá zprávy, hodnotí tutoriál, aktivuje komunikaci, …. Tutor tvoří kurz (ve zjednodušeném modelu), poskytuje materiály, vyhodnocuje testy, opravuje úkoly… Pedagog_poradce tvoří skupinu, vede tutoriály,… Student žádá o konzultaci, vypracovává test, stahuje výukový materiál, vykonává zkoušku,…. Dynamické operace: Dynamické operace odrážejí tu skutečnost, že je podstatné rozlišovat mezi různými stavy týchž objektů. Operace zápisu studenta do dalšího ročníku je možná po získání příslušného počtu kreditů z předchozích ročníků (tzv. kumulované kredity). Tato operace pracuje se různými stavy objektu Student. Posílá_zprávy() ↓ Hodnotí_tutoriál()↓ Aktivuje_kom() ↓ Tvoří_kurz()↑ Tvoří_skupinu()↑ Žádá_konzultaci()↑ Vypracovává_test()↑ Stahuje_materiály()↑ Obr. 7-4 94 7.1.3 Analýza znalostí Znalostní analýza je zaměřená na specifikaci integritních omezení ve fixním a generickém formátu. Not null atributy: Student: • identifikační číslo • jméno a příjmení • studijní obor • ročník • kontakt • studijní výsledky Skupina: • číslo skupiny Učitel: • osobní číslo • jméno a příjmení • katedra • kontakt Tutor: Pedagogický poradce: Kurz: • číslo kurzu • název kurzu • ukončen Komunikace: • kod • datum • místo konání • typ • forma • téma • vyhodnocení Konzultace: Konference: Tutoriál: Výukový materiál: • číslo materiálu • název materiálu notnull notnull notnull notnull notnull notnull notnull notnull 95 • • • typ materiálu forma způsob distribuce Test: • • • • • • • • • • číslo testu otázka odpověď 1 odpověď 2 odpověď 3 odpověď 4 správná odpověď body odpověď získané body Výsledky: • semestr • zapsaný kurz • požadované kredity • získané kredity notnull notnull notnull notnull notnull notnull Atd. Kardinalita: Pro všechny vztahy (kromě isA vztahu) se určují kardinality. Notace i význam kardinalit odpovídá notaci konceptuálních modelů (E-R diagram). Nastavení kardinalit je ukázáno na následujícím schématu: 96 1:N 1:N 1:N M:N 1:N M:N 1:N 1:N Obr. 7-5 97 Povinná/nepovinná účast ve vztahu Pro všechny vztahy (kromě isA vztahu) se určuje, zda má objekt povinné či nepovinné členství v tomto vztahu. Povinná účast ve vztahu je ve schématu označena „+“, nepovinná účast „*“. + 1:N * * + * 1:N 1:N * M:N * + * + * 1:N + M:N * * + 1:N 1:N * Obr. 7-6 98 Identifikaci generických integritních omezení Ve fázi analýzy jsou generická IO popsána pouze neformálně a zahrnuta do schématu. Již v této fázi je vhodné rozhodnout, zda se jedná o IO bezprostřední (kontrolované po ukončení operace) nebo o IO odložené (kontrolované po ukončení transakce). Následující schéma demonstruje identifikaci některých generických IO v prostředí vzdáleného vyučování. ODLOŽENÉ Tutoriál musí být veden jedním učitelem BEZPROSTŔEDNÍ Kurz je ukončen zápočtem nebo zkouškou BEZPROSTŘEDNÍ Ročník studia je v int. <1,5> resp. <1,7> dle oboru ODLOŽENÉ BEZPROSTŘEDNÍ Konference se účastní aspoň jedna skupina Forma distribuce je dána výčtem možností: D1, D2, D3, … ODLOŽENĚ Student má splněn kurz pokud vykoná předepsané testy a zkoušku Obr. 7-7 99 7.1.4 Analýza aplikací Ve fázi hrubé analýzy bylo nalezeno pět základních aplikací. Nyní je třeba vytvořit seznam všech jejich komponent. Seznam uvádí pouze některé komponenty, zdaleka není kompletní. Aplikace Tvorba kurzu je složena z následujících operací: struktura kurzu, tvorba výukových materiálů, tvorba harmonogramu kurzu, tvorba testů, …. Aplikace Tvorba skupin je složena z následujících operací: tvorba profilů studentů, spojení studentů do skupin, aktivity skupin, … Aplikace Komunikacezahrnuje operace konzultace, konference, tutoriál, … Aplikace Testy se skládá z operací vypracování testů, zaslání výsledků, vyhodnocení, statistika, … Aplikace Hodnocení představuje hodnocení tutoriálů, kurzů, studentů, skupin, …. Po nalezení jednotlivých komponent aplikací je třeba všechny tyto komponenty popsat. Popis aplikací je možno provést následujícím způsobem. 7.1.4.1 Popis aplikace Tvorba harmonogramu kurzu Aplikace: Popis: Vstupy: Změny: Zpráva: Předpoklady: Výsledek: Harmonogram Aplikace zapíše do kalendáře pro daný semestr, v němž bude kurz realizován, všechny úkoly, které bude Student plnit. Prázdný kalendář pro daný semestr, Kurz, Test Aktualizovaný kalendář ve formě např.: Datum: úkol (Datum1,Datum2): úkol Aktualizovaný kalendář je poslán všem Studentům, zapsaným na daný Kurz. Existuje Kurz, který bude zapisován do kalendáře, existují Testy, které budou zapisovány do kalendáře, existuje aspoň jeden Student, který má zapsán daný Kurz. Aktualizovaný kalendář pro daný kurz dle aktuálního kalendáře semestru a příslušných testů. 7.1.5 Analýza funkčních závislostí Identifikace všech atributů v rámci jednotlivých tříd byla provedena tak, že kromě všech závislostí neklíčových atributů na primárním klíči se vyskytují i závislosti neklíčových atributů navzájem. Ve třídě Učitel se vyskytují následující závislosti: 100 osobní_cislo → jmeno osobní_cislo → katedra osobní_cislo → kontakt Výše uvedené závislosti jsou závislosti neklíčových atributů na primárním klíči osobní_cislo. Závislost osobní_cislo → komunikace lze chápat jako multizávislost, protože atribut komunikace je typu třída. Ve třídě Učitel se však vyskytuje i takový neklíčový atribut, který je závislý na jiném neklíčovém atributu. Touto závislostí je: katedra → jmeno Nalezené závislosti budou transformovány do deduktivních pravidel ve fázi návrhu deduktivních pravidel. 7.2 Návrh subsystému Komunikace vzdáleného vyučování 7.2.1 Návrh schématu Návrh schématu databáze představuje návrh tříd, vztahů a operací, které vycházejí z analýzy schématu a zajišťují kompletaci jejich definic. Důraz je kladen na kontrolu hierarchických vazeb, dále na to, které atributy tříd musí být uloženy v extenzionální databázi a které je možno odvodit pomocí deduktivních pravidel. Ve fázi návrhu se rovněž zavádí množina atributů, které budou podporovat dynamiku systému. Součástí návrhu je rovněž definice datových typů. Následuje několik konkrétních návrhů v modelu vzdáleného vyučování, které představují možnosti odvozování atributů včetně rekurzivních, využití dědičnosti, možnosti definování vztahů mezi třídami, vyjádření inverzního atributu. 1) Student Definice třídy Student bude mimo jiné vyžadovat definici atributu kredity_za_semestr, podle kterého budeme moci zjistit počet získaných kreditů daného studenta za jednotlivé semestry. Tento atribut nemá charakter extenzionálního atributu, protože jeho hodnota je odvoditelná z atributu studijní_výsledky. Atribut studijní_výsledky je strukturovaný (objekt), jehož definici v rámci návrhu je možno provést např.: Studijní_výsledky: • semestr • zapsaný kurz • požadované kredity • získané kredity 101 • známka Z uvedeného vyplývá, že ve fázi návrhu je možno nacházet další objekty, jejichž existence a hlavně struktura ve fázi analýzy ještě nebyla předpokládána. 2) Učitel Učitel je třída, která je zdrojem IsA hierarchie pro třídy Tutor a Pedagogický_poradce. 3) Kurz Součástí definice třídy Kurz je atribut požadavek, který nabývá hodnot z domény Kurz. Požadavky Kurzu jsou tedy Kurzy, které musí být bezprostředně splněny, aby si Student mohl daný Kurz zapsat. Protože atribut požadavek odkazuje na třídu Kurz (tedy na sebe samu), je s použitím deduktivních pravidel možno vytvořit tzv. binární uzávěr množiny vztahů, což představuje množinu všech podmiňujících Kurzů k zapsání daného Kurzu. Např. Kurz Relační databáze s číslem 100 požaduje splnění Kurzu Úvod do databází s číslem 95 a tento požaduje splnění Kurzu Úvod do OS s číslem 86. Jednotlivé instance třídy Kurz pak lze zapsat: Kurz: RELDA Kurz: UVDAT číslo_kurzu: 100 číslo_kurzu: 95 . . . . . . požadavek: UVDAT požadavek:Úvod do OS Ke zjištění všech (tj. nejen bezprostředních) požadavků k danému Kurzu lze vytvořit atribut předpoklady (tento bude součástí intenzionální databáze), jehož hodnoty budou generovány na základě rekurzivního deduktivního pravidla. Kromě definic tříd, hierarchií a atributů (ať již extenzionálních či intenzionálních) je třeba definovat vazby, respektive převést vazby odhalené ve fázi analýzy a zakreslené v příslušném modelu do formalizované podoby. Jedná se o definice atributů s objektovou hodnotou, která tento vztah zabezpečuje. Zde je na místě analogie s transformací konceptuálních schémat do relačních datových schémat, kdy zprostředkovatelem vazby je tzv. cizí klíč. Definici takového atributu doplňuje zároveň definice integritních omezení s využitím deduktivních pravidel. Součástí schématu databáze založeném na objektové orientaci je rovněž návrh operací, které jsou implementovány jako metody příslušných tříd. V rámci deduktivně objektové technologie jsou operace navrženy jako deduktivní nebo aktivní pravidla. 102 Jedná se o operace Tvoř_předky() třídy Kurz nebo operace Vypočti_kredity() a Zjisti_počet_studentů() třídy Student jsou součástí definic tříd Kurz resp. Student. Definice konkrétních deduktivních pravidel bude uvedena v kapitole 7.2.2. Návrh schématu mapovaný do prostředí ConceptBase: Individual Student in Class with attribute id_cislo : String; jmeno : String; obor : String; rocnik : Integer; kontakt : String; studijni_vysledky : Vysledky End pozn. atribut studijni_vysledky je objekt Individual Skupina in Class with attribute cislo_skupiny : Integer; studenti : Student; studuje : Kurz; komunikace : Komunikace End pozn. atributy studenti, studuje a komunikace jsou objekty Individual Ucitel in Class with attribute osobni_cislo : Integer; jmeno : String; katedra : String; kontakt : String; komunikace : Komunikace End pozn. atribut komunikace je objekt Individual Tutor isA Ucitel with attribute vede:Kurz End pozn. atribut vede je objekt Individual Pedagog_poradce isA Ucitel with attribute 103 ridi: Skupina End pozn. atribut ridi je objekt Individual Kurz in Class with attribute cislo_kurzu : Integer; nazev : String; vyuk_material : Vyukovy_material; test : Test; ukoncen : String; je_veden : Tutor; studuje : Skupina; pozadavek : Kurz End pozn. atributy vyuk_material, test, je_veden, studuje, pozadavek jsou objekty. Atribut pozadavek odkazuje rekurzivně na třídu Kurz. Individual Komunikace in Class with attribute kod : Integer; datum : String; misto : String; typ : String; forma : String; tema : String; vyhodnoceni : String; ucitel : Ucitel End pozn. atribut ucitel je objekt Individual Konzultace isA Komunikace with attribute student : Student End Individual Konference isA Komunikace with attribute skupina : Skupina; kurz : Kurz End Individual Tutorial isA Komunikace with attribute 104 skupina : Skupina; tema : String End Individual Vyukovy_material in Class with attribute cislo : Integer; nazev : String; forma : String; zpusob_distribuce : String End Individual Test in Class with attribute otazka : Otazka; odpoved1 : String; odpoved2 : String; odpoved3 : String; odpoved4 : String; spravna_odpoved : String; body : String; cislo_testu : Integer; odpoved : String; ziskane_body : String End Individual Vysledky in Class with attribute semestr : Integer; zapsany_kurz : String; pozadovane_kredity : Integer; ziskane_kredity : Integer End 7.2.2 Návrh deduktivních pravidel Již z návrhu schématu databáze vyplývají požadavky na definování konkrétních deduktivních pravidel jak pro odvozování dat, tak pro integritní omezení. Vycházeje ze vzorové demonstrační aplikace je třeba navrhnout deduktivní pravidla a to již ve formální podobě. 7.2.2.1 Pravidla pro odvození atributů • kredity_za_semestr 105 • Odvozený atribut kredity_za_semestr je atribut třídy Student a lze jej vyjádřit na základě znalosti atributů semestr a získané kredity, což jsou atributy třídy Výsledky. Propojení těchto dvou tříd je zajištěno atributem studijní výsledky. Deduktivní pravidlo je uvedeno níže (v části, označené příklad 7-1). počet_studentů_ve_skupině • Pro vyjádření odvozeného atributu počet_studentu_ve_skupine lze nadefinovat deduktivní pravidlo, které využije agregační funkci count. Pravidlo je uvedeno níže (v části, označené příklad 7-1). předpoklady Pro odvození atributu předpoklady se využije rekurzivní deduktivní pravidlo na tranzitivní uzávěr vztahu. Atributem předpoklady se rozumí množina všech požadavků (tj. kurzů, které musí mít student splněny, aby si mohl daný kurz zapsat). Pravidlo je uvedeno níže (v části, označené příklad 7-1). 7.2.2.2 Pravidla pro odvození tříd Na základě konkrétních hodnot daných atributů je možno definovat třídy. Definice takových tříd je součástí intenzionální databáze. Odvozenou třídou, která může být pro tvorbu aplikací prospěšná, je třída Učitel_katedry_informatiky, která představuje všechny Učitelé, u nichž hodnota atributu katedra = Informatika nebo třída Tutor_kurzu_databáze, jejíž populace vzniknou na základě hodnoty atributu vede = Databáze ve třídě Tutor. Konkrétní definice deduktivních pravidel, která generují populace uvedených odvozených tříd, jsou uvedeny níže (v části, označené příklad 7-1). Definice intenzionálního atributu kredity_za_semestr: Individual Student with attribute kredity_za_semestr : Integer derived End Pro výpočet počtu kreditů za jednotlivé semestry požijeme extérní formuli CastToPocet_kreditu, jejímž vstupním parametrem bude semestr a výstupním parametrem bude počet získaných kreditů. Define external formula CastToPocet_kreditu (in semestr: integer, out I integer) End Této formule využijeme při definování deduktivního pravidla pro odvození atributu kredity_za_semestr: Define implementation for Student with 106 attribute Self.kredity_za_semestr = I ← intereg(I), CastToPocet_kreditu (Self.studijni_vysledky.semestr, I) End Definice intenzionálního atributu pocet_studentu_ve_skupine: Individual Skupina in Class with attribute cislo_skupiny : Integer; studenti : Student; studuje : Kurz; pocet_studentu_ve_skupine : Integer derived End Define implementation for Skupina attribute Self.pocet_studentu_ve_skupine = X ← Integer(X). X = count(Self.studenti) End Definice intenzionálního atributu predpoklady: (Definice využívá rekurzivního pravidla, které se skládá z báze a rekurze) Individual Kurz in Class with attribute cislo_kurzu : Integer; nazev : String; vyuk_material : Vyukovy_material; test : Test; ukoncen : String; je_veden : Tutor; studuje : Skupina; pozadavek : Kurz; predpoklady : set-of(Kurz), derived End Define implementation for Kurz attribute X in Self.predpoklady ← Kurz(X), X in Self.pozadavek; X in Self.predpoklady ← Kurz(X), X in Self.pozadavek.predpoklady End 107 Definice intenzionální třídy Ucitel_katedry_informatiky: Define implementation for class Ucitel population Ucitel_katedry_informatiky(X) ← Ucitel(X), X.katedry Informatika End = Definice intenzionální třídy Tutor_kurzu_databaze: Define implementation for class Tutor population Tutor_kurzu_databaze(X) ← Tutor(X), X.vede = Databaze End 7.2.2.3 Pravidla pro definování integritních omezení ve fixním formátu Je-li tělo pravidla vyhodnoceno jako true (tj. je produkována hodnota do těla pravidla), zadaná data neodpovídají integritnímu omezení. Na základě tohoto předpokladu lze sestavit příslušné deduktivní pravidlo. Následují některá IO ve fixním formátu, jak vyplývají z aplikační domény: 1) notnull Atribut id-cislo třídy Student nesmí nabývat hodnoty null 2) primární klíč K definici primárního klíče se využije vlastnost PK, že žádné dvě hodnoty tohoto atributu se v rámci jedné třídy nesmí rovnat. Např. atribut id_cislo třídy Student bude primárním klíčem. 3) inverzní atribut Inverzními atributy mohou být např. atribut komunikace třídy Ucitel a atribut ucitel třídy Komunikace. Tyto atributy musí splňovat požadavek inverzních atributů. 4) referenční integrita Odkazuje-li např. atribut studenti třídy Skupina na třídu Student a jeli tento atribut definován jako notnull, pak je třeba příslušným deduktivním pravidlem zajistit referenční integritní omezení. 7.2.2.4 Generická integritní omezení Na základě obecné definice pro generické integritní omezení je možno definovat IO s ohledem na danou aplikační doménu. Dále jsou uvedena jak IO s bezprostředním, tak i odloženým vyhodnocením. 108 • • • • • • ročník Studenta je celé číslo v rozsahu 1-5 katedra Učitele je jedna z hodnot { Matematika, Informatika, Chemie, Fyzika, Biologie, Geologie} cislo_skupiny je kladné cislo_kurzu je kladné cislo_testu je v rozsahu 1-500 pozadovane_kredity >= ziskane_kredity Veškerá pravidla pro definování IO ve fixním formátu i generických IO: Pravidla pro definování IO ve fixním formátu: id_cislo not null Add immediate constraint null_id_cislo for Student as null_id_cislo(Self) ← Self.id_cislo = null End id_cislo primary key Add immediate constraint primary_key for Student as primary_key(Self) ← Student(X), X! X.id_cislo = Self.id_cislo End Inverzní atribut Individual Ucitel in Class with attribute . . komunikace : Komunikace . . End Individual Komunikace in Class with attribute . . ucitel : Ucitel . . End Define implementation for Komunikace 109 attribute X in Self.ucitel ← Ucitel(X), X.komunikuje = Self End Referenční integrita Individual Skupina in Class with attribute . . studenti : Student, notnull . . End Add defered constraint je_slozen for Skupina as je_slozen(Self) ← Self.studenti = null End Pravidla pro generická IO: ročník Studenta je celé číslo v rozsahu 1-5 Add immediate constraint vadny_rocnik for Student as vadny_rocnik(Self) ← Self.rocnik < 1; vadny_rocnik(Self) ← Self.rocnik >5 End katedra Učitele je jedna z hodnot { Matematika, Informatika, Chemie, Fyzika, Biologie, Geologie} Add immediate constraint vadna_katedra for Ucitel as vadna_katedra(Self) ← not Self.katedra Informatika, Chemie, Fyzika, Biologie, Geologie} End in { Matematika, cislo_skupiny je kladné Add immediate constraint vadne_cislo_skupiny for Skupina as vadne_cislo_skupiny(Self) ← Self.cislo_skupiny <= 0 End cislo_kurzu je kladné Add immediate constraint vadne_cislo_kurzu for Kurz as vadne_cislo_kurzu(Self) ← Self.cislo_kurzu <= 0 110 End cislo_testu je v rozsahu 1-500 Add immediate constraint vadne_cislo_testu for Test as vadne_cislo_testu(Self) ← Self.cislo_testu < 1; vadne_cislo_testu(Self) ← Self.cislo_testu > 500 End pozadovane_kredity >= ziskane_kredity Add defered constraint vadne_kredity for Vysledky as vadne_kredity(Self) ← Self.ziskane_kredity Self.pozadovane_kredity End >= Pravidlo pro inverzní vztah: Define implementation for Kurz attributes X in Self.studuje ← Skupina(X), X.studuje = Self End 7.2.2.5 Deduktivní pravidla pro inverzní atributy Z Obr. 7-3 je patrné, že mezi třídami Kurz a Skupina existuje inverzní vztah. Atribut studuje třídy Skupina a atribut studuje třídy Kurz jsou tedy inverzními atributy. Z hlediska údržby integrity databáze je vhodnější jeden z těchto atributů definovat jako odvozený s využitím deduktivního pravidla. 7.2.2.6 Deduktivní pravidla pro funkční závislosti Nalezené závislosti v analýze je třeba převést do příslušných deduktivních pravidel. osobní_cislo → jmeno osobní_cislo → katedra osobní_cislo → kontakt Závislost neklíčových atributů na klíči je možno přepsat do pravidla, které vyjadřuje tu skutečnost, že jestliže se ve třídě Učitel naleznou dva objekty, které mají totéž osobní_cislo, jedná se o identické objekty. X=Self ← Ucitel(X), X.osobní_cislo=Self.osobní_cislo katedra → jmeno 111 Deduktivní pravidlo, které definuje výše uvedenou funkční závislost, vyjadřuje tu skutečnost, že jestliže se najdou ve třídě Učitel dva objekty se stejným jménem, pak mají též stejnou katedru. X.katedra = Self.katedra ← Ucitel(X), X.jmeno=Self.jmeno 7.3 Prototyping deduktivních pravidel Pro zjištění logických závislostí mezi extenzionálními a intenzionálními koncepty je vhodné sestavit graf závislostí. Extenzionální koncepty jsou všechny individuály jako třídy, které nevznikly použitím deduktivních pravidel a veškeré atributy, které nejsou definovány jako „derived“. K sestavení grafu závislostí se postačí zabývat v rámci schématu pouze těmi koncepty, které se vyskytují v těle aspoň jednoho deduktivního pravidla. V popisované aplikaci se jedná o tyto extenzionální koncepty. Individuály jako třídy: Student, Skupina, Kurz, Ucitel, Tutor, Studijni_vysledky Atributy: semestr, studenti, pozadavek, vede, katedry Na základě deduktivních pravidel byly odvozeny tyto intenzionální koncepty. Třídy: Ucitel_katedry_informatiky, Tutor_kurzu_databaze Atributy: kredity_za_semestr, počet_studentu_ve_skupine, predpoklady 112 Graf závislostí pro popsané koncepty: Student.Studijni_ vysledky.semestr Skupina Tutor Ucitel Kurz.pozadavek Student.kredity_za _semestr Skupina.pocet_stu dentu_ve_skupine Tutor_kurzu_ databaze Ucitel_katedry_ informatiky Kurz.predpoklady Student Skupina.studenti Tutor.vede Ucitel.katedry Kurz Studijni_vysledky Z grafu závislostí je zřejmé, že se jedná o acyklický graf a tudíž navržená množina pravidel je stratifikovatelná. Dále z grafu vyplývá, že každý rekurzivně odvoditelný koncept (Kurz.predpoklady) je dobře formován, tj. 113 je odvoditelný z minimálně jednoho extenzionálního konceptu (Kurz, Kurz.pozadavek). Aplikace zároveň nevyžaduje redefinici atributů podtříd v souvislostí s dědičností. Problém negace se v aplikaci nevyskytl (žádné deduktivní pravidlo neobsahovalo negativní literál). Z hlediska statické analýzy je navržená množina deduktivních pravidel korektní. 114 8 KORESPONDENČNÍ ÚKOL Definujte jednoduchou aplikační doménu pro návrh schématu deduktivní databáze. Dle kroků, popsaných v předchozích kapitolách a použitých v demonstrační aplikaci analyzujte vybraný výsek reality (analýzu doplňte příslušnými diagramy) a navrhněte schéma objektově deduktivní databáze. Zaměřte se na návrh deduktivních pravidel pro odvození tříd, atributů (včetně rekurzivních) a integritních omezení. Zabývejte se rovněž prototypingem deduktivních pravidel. 115 9 ZÁVĚR Analýza, návrh a implementace informačních systémů je složitý proces, realizovaný formou týmové práce. Informační systém je vysoce kreativní produkt, při jehož tvorbě, jako u všech tvůrčích procesů, hraje velkou roli lidská invence. Je v podstatě nemožné vytvořit informační systém, který by splňoval veškeré požadavky a neměl žádná úskalí a chyby. Uvedená skutečnost je důvodem toho, že již řadu let existuje snaha o vytvoření systematických metod a technik, které by činnosti spojené s tvorbou IS usnadnily a byly návodem pro jejich tvůrce (týmy tvůrců). V devadesátých letech vznikly metodologie (jak bylo uvedeno v kap.1), které vycházejí z objektové orientace, a které charakterizuje společný přístup zaměřený na tzv. objektový a dynamický model. V posledních letech jsme svědky propojování objektových přístupů s přístupy deduktivními, které již prošly svým vývojem v souvislosti s možnými rozšířeními relačních databázových technologií. Základní ideou deduktivních databází je rozšíření expresivity databázových jazyků se současným zachováním jejich deklarativnosti. Zajímavý problém v této souvislosti je, jaké vzory chování lze dedukovat z celkem jednoduchých informací uložených v databázi. Zavedení deduktivních pravidel přináší dvě základní výhody. Jsou jimi nové prostředky pro zachování integrity dat a možnost odvozování nových dat (hlavně využitím rekurzivních pravidel). Spojení objektových a deduktivních přístupů v procesu tvorby informačního systému se jeví v mnoha ohledech přínosné, což je dokumentováno v jednotlivých kapitolách této výukové opory. Výuková opora si kladla za cíl seznámit čtenáře s možnostmi objektových a deduktivních přístupů k analýze a návrhu informačních systémů. Cílem nebylo uvést vyčerpávající seznam systémů řízení báze dat, proto bylo zmíněno pouze několik systémů, hlavně takových, které je možno získat volně na Internetu. Hlavní prostor byl věnován systému řízení báze dat ConceptBase. Systém byl vybrán jak z důvodu poměrně velké univerzality především v reprezentaci znalostí, tak z důvodů jeho snadného získání (včetně dokumentace) a rovněž z důvodu poměrně široké škály aplikací, které byly v prostředí ConceptBase vyvinuty. Při popisu systému ConceptBase byl kladen důraz hlavně na jeho univerzálnost, jeho možnosti interpretace znalostí, modelovací a metamodelovací nástroje, prostředky pro odvozování dat a zachování integrity dat. Důkladné seznámení se aspoň s jedním deduktivně objektovým systémem řízení báze dat je nezbytné k získání představy o možnostech, rozšířeních a nových pohledech na vývoj informačních systémů. Výuková opora je doplněna řadou příkladů v jazyku Chimera, který byl vyvinut v rámci v rámci IDEA Esprit projektu. Snahou bylo ukázat možnosti využití a přitom se neomezovat na konkrétní databázové prostředí. 116 10 POUŽITÁ LITERATURA 1. Asirelli, P., Gnesi, S., Rossi, M.C.: Deductive Database Support to the Specification of Concurrent Systems. Sborník celostátního semináře SOFSEM96, Springer, 1996 2. Ceri, S., Gottlog, G., Tanca, L.: What you Always Wanted to Know About Datalog. IEEE Trans. On Knowledge and Data Eng. 1989 3. Ceri, S., Gottlog, G., Tanca, L.: Logis Programming and Databases. Springer-Verlag, 1990 4. Ceri, S., Fraternali, P.: Designing Database Applications with Objects and Rules, Addison-Wesley, 1997 5. Korth, H.F., Silberschatz, A.: Database systém concepts, McGraw-Hill international editions, 1991 6. Lukasová, A.:Logické základy umělé inteligence – výroková a predikátová logika, Ostravská univerzita, 1995 7. Pokorný, J.: Dotazovací jazyky, Science, 1994 8. Ullman, D.J.: Principles of database and knowledge-base systems, Volume I, Computer Sc. Press, 1988 9. Ullman, D.J.: Pronciples of database and knowledge-base systems, Volume II, Computer Sc. Press, 1989 10. Wagner, G.: Fundations of Knowledge Systems with Applications to Databases and Agents, Kluwer Academic Publishers, London, 1998 11. M.A. Jeusfeld: Update control in deductive object bases, Infix-Verlag, St. Augustin, Germany 12. M.A. Jeusfeld, E. Krüger: Deductive integrity maintenance in an objectoriented setting. Technical report MIP-9013, Universität Passau. 13. M.A. Jeusfeld, M. Jarke: From relational to object-oriented integrity simplification. Proc. 2nd Intl. Conf. Deductive and Object-Oriented Databases (DOOD'91), LNCS 566, Springer-Verlag; technical report Aachener Informatik-Berichte 91-19 14. M.A. Jeusfeld, M. Staudt: Query optimization in deductive object bases. In Freytag, Vossen, Maier (eds.): Query Processing for Advanced Database Systems, Morgan-Kaufmann Publ., 1994; technical report Aachener Informatik-Berichte 91-26 15. M. Jarke (ed.): ConceptBase V3.1 user manual. Technical report Aachener Informatik-Berichte 92-17 16. M. Jarke, M. Staudt: An application perspective to deductive object bases. Proc. ACM-SIGMOD Workshop on Combining Declarative and Object-Oriented Databases, Washington D.C., May 1993, 17-30 117 17. M. Jarke, M.A. Jeusfeld, C. Quix (eds.): ConceptBase V5.0 User Manual. RWTH Aachen, Germany, 1998, ONLINE: http://wwwi5.informatik.rwth-aachen.de/CBdoc/userManual-V50/. 18. Stefano Ceri, Rainer Manthey: Consolidated Specification of Chimera (CM and CL), IDEA deliverable IDEA.DE.2P.006.01, November 1993, 86 pages. 19. Stefano Ceri, Rainer Manthey: Chimera: A Model and Language for Active DOOD Systems, Workshops in Computing Series, pp. 3-16, Springer 1995. 118
Podobné dokumenty
relační databáze - Ostravská univerzita
rovněž zopakuje základní manipulační prostředky, které lze v relačním datovém modelu nad
daty využít. Po prostudování textu by měl mít čtenář přesnou představu o strukturách, do
kterých se ukládají...
informace o studiu - Přírodovědecká fakulta OU
univerzity v Ostravě. Naleznete v ní základní údaje o struktuře i organizaci fakulty
a především potřebné informace o studiu a studijních programech, které můžete na
fakultě studovat v akademickém ...
Nástroje meta-CASE
Obrázek 4 - Představení 4-vrstvé architektury (převzato z http://www.jot.fm/issues/issue_2006_11/article4/)
1. datové sklady - metody uskladnění 1) MOLAP
akademická půda, Manifest OODS98, ODL, OQL, objekty s UID; O‐R = objektově‐relační:
Oracle od verze 8, Informix – využívané v praxi, SQL3 (SQL99), naproti „R“ navíc
abstraktní datové tytpy;
do divadla
Plánujeme poslat našeho Karla na příští rok do Anglie.
Na příští rok plánujeme poslat našeho Karla do Anglie.
Plánujeme poslat na příští rok do Anglie našeho Karla.
Elitní spolky
na globální úrovni (BALABÁN, POTŮČEK, 2010). Zastánci tohoto konceptu tvrdí, ţe
je nutné vytvořit globální instituce, které by nahradily ty stávající (např. OSN). Tyto
instituce by měly mít větší p...
UNICORN COLLEGE BAKALÁŘSKÁ PRÁCE
Zjednodušeně lze říci, ţe datový model je mapa databáze, která zobrazuje pouţité datové struktury
(atributy, pohledy apod.) a jejich vzájemné vazby. (Procházka 2009)
Typicky při návrhu databáze vz...
Zde - 2MSOFT
společnostem. Software pochopitelně umí pracovat i na síti LAN s omezením přes uživatelské účty.
Dokonce lze definovat to, že uživatel PAM je zároveň i Externista a tím mu omezit přístup k datům, k...