Objektově relační model



Podobné dokumenty
Databáze I. Přednáška 7

Objektově relační databáze a ORACLE 8

12. Postrelační databázové systémy

12. Postrelační databázové systémy

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Objektově orientované databáze. Miroslav Beneš

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

6 Objektově-orientovaný vývoj programového vybavení

Databáze 2013/2014. Konceptuální model DB. RNDr. David Hoksza, Ph.D.

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

Databázové systémy trocha teorie

RELAČNÍ DATABÁZOVÉ SYSTÉMY

8.2 Používání a tvorba databází

DBS Konceptuální modelování

7.3 Diagramy tříd - základy

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

7.3 Diagramy tříd - základy

SQL - trigger, Databázové modelování

Geografické informační systémy p. 1

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

3. Je defenzivní programování technikou skrývání implementace? Vyberte jednu z nabízených možností: Pravda Nepravda

KMA/PDB. Karel Janečka. Tvorba materiálů byla podpořena z prostředků projektu FRVŠ č. F0584/2011/F1d

Diagramy tříd - základy

Nerelační databázové modely. Helena Palovská

Úvod do databázových systémů

Databázové systémy Cvičení 5.2

Oracle XML DB. Tomáš Nykodým

Objektové a objektově relační databázové stroje. J. Pokorný M. Valenta

Databázové systémy úvod

Databáze I. Přednáška 4

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

DATABÁZOVÉ SYSTÉMY. Metodický list č. 1

Základy objektové orientace I. Únor 2010

Maturitní otázky z předmětu PROGRAMOVÁNÍ

Databáze II. 1. přednáška. Helena Palovská

7.5 Diagram tříd pokročilé techniky

Ukládání a vyhledávání XML dat

Stručný obsah. část III Aktualizace dat Kapitola 10: Aktualizace databáze 257 Kapitola 11: Integrita dat 275 Kapitola 12: Zpracování transakcí 307

Operátory ROLLUP a CUBE

OBJECT DEFINITION LANGUAGE. Jonáš Klimeš NDBI001 Dotazovací Jazyky I 2013

Tvorba informačních systémů

Transformace konceptuálního modelu na relační

Objektově relační databáze

InterSystems Caché Post-Relational Database

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Kapitola 1: Úvod. Systém pro správu databáze (Database Management Systém DBMS) Účel databázových systémů

Tvorba informačních systémů

Analýza a modelování dat. Přednáška 5

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

PRŮBĚHOVÝ TEST Z PŘEDNÁŠEK

Obsah. Úvod 11 Základy programování 11 Objektový přístup 11 Procvičování 11 Zvláštní odstavce 12 Zpětná vazba od čtenářů 12 Errata 13

GEOGRAFICKÉ INFORMAČNÍ SYSTÉMY 4

7.5 Diagram tříd pokročilé techniky

Úvod do databázových systémů. Ing. Jan Šudřich

Databázové systémy. Cvičení 6: SQL

Databáze. Logický model DB. David Hoksza

Objekty, třídy, vazby 2006 UOMO 30

Analýza a modelování dat 3. přednáška. Helena Palovská

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

PB161 Programování v jazyce C++ Přednáška 7

Databáze I. 5. přednáška. Helena Palovská

Maturitní témata Školní rok: 2015/2016

1. Dědičnost a polymorfismus

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

PB161 Programování v jazyce C++ Přednáška 7

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

O Apache Derby detailněji. Hynek Mlnařík

Úvod do databázových systémů. Lekce 1

Stored Procedures & Database Triggers, Tiskové sestavy v Oracle Reports

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Kapitola 6: Omezení integrity. Omezení domény

Michal Krátký. Tvorba informačních systémů, 2008/2009. Katedra informatiky VŠB Technická univerzita Ostrava. Tvorba informačních systémů

Programování II. Třídy a objekty (objektová orientovanost) 2018/19

Relační databáze. V dnešní době existuje řada komerčních DBMS, nejznámější jsou:

Vysoká škola ekonomická v Praze

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

Analýza a modelování dat 2. přednáška. Helena Palovská

DUM 12 téma: Příkazy pro tvorbu databáze

Konceptuální datové modely používané při analýze

Jazyk PL/SQL Úvod, blok

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

Metody tvorby ontologií a sémantický web. Martin Malčík, Rostislav Miarka

Úvod do GIS. Atributy a jejich vztah k prostoru. Pouze podkladová prezentace k přednáškám, nejedná se o studijní materiál pro samostatné studium.

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

2 Konceptuální modelování a návrh databáze

Michal Krátký, Miroslav Beneš

UML. Unified Modeling Language. Součásti UML

2 Konceptuální modelování a návrh databáze

Inovace tohoto kurzu byla spolufinancována z Evropského sociálního fondu a státního rozpočtu České republiky.

Úvod do databázových systémů

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

8 Třídy, objekty, metody, předávání argumentů metod

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

Databázové systémy. * relační kalkuly. Tomáš Skopal. - relační model

Objektově orientovaný přístup

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Transkript:

RMD zhodnocení modelu Objektové paradigma OR model dat Klasifikace DBMS - zdroj: Stonebraker M., 1996 Schopnost vyhledaní, podpora víceuživatel. služeb R DBMS Objektově relační model OR DBMS Souborové systémy OO DBMS Složitost dat, rozšiřitelnost Souborové systémy - jednoduchá data, nemají požadavky na dotazy nad daty (Word) OO DBMS - zpracovávají složitá data, nemají významné požadavky na vyhledávání (CAD ) RDBMS - jednoduchá data, komplexní požadavky na dotazy ORDBMS komplexní data, komplexní požadavky na dotazy 1

Silné stránky RDBM silný teoretický základ teorie podporovaná vývojem SQL - je standardní jazyk pro definici a manipulaci dat v relační databázi jednoduchost a vhodnost pro OLTP podpora nezávislosti dat Slabé stránky RDBM (1) slabá reprezentace reálných entit normalizace vede k tomu, že relace nekorespondují s entitami reálného světa fragmentace reálných entit do mnoha relací při dotazování dochází k mnoha spojením (2) semantic overloading (semantické zahlcení) relace je jediný konstrukt - pro reprezentaci dat i vztahů nemá mechanismus pro odlišení entit a vztahů pro reprezentaci vztahu (binárního) s kardinalitou M:N vytváří 3 relace, 1 je vztahová 2

Slabé stránky RDBM (3) slabá podpora integrity a omezení (enterprise contraints) týká se validity a konzistence uložených dat (typy omezení - doménová, entitní a referenční integrita) mnoho komerčních systémů nepodporuje plně, pak je nutné vystavět je v aplikacích -může vést k duplikaci i nekonzistenci Slabé stránky RDBM (4) homogenní datová struktura RMD předpokládá horizontální i vertikální homogenitu horizontální homogenita - každýřádek musí být komponován ze stejných atributů vertikální homogenita - hodnoty atributů (sloupců) relace musí být ze stejných domén průnikřádku a sloupce musí být atomická hodnota ( atribut je atomický) pevná struktura je příliš omezující pro reálné objekty př. Letadlo - není vnořováníčástí, subčástí - požadavek komplexního objektu - kontejner v mnoha RDBM nyní umožněno vkládání BLOB (Binary Large Object) 3

Slabé stránky RDBM BLOB obsahuje binární datovou reprezentaci -obraz, video nebo audio sekvence, rozsáhlé nestrukturované objekty BLOB nemůže obsahovat jiný BLOB» není složený objekt (composite object)» DBMS nezná jeho obsah nebo jeho interní strukturu» to zabraňuje provádění dotazů dovnitř, na jeho obsah Př.: obrázek je uložen jako BLOB v RDBM - ale může být jen uložen a zobrazen, nelze manipulovat s jeho vnitřní strukturou (5) omezení operací Slabé stránky RDBM má pouze pevnou množinu operací - množinové operace, operace s řádky - nelze rozšířit to je omezující model chování pro objekty reálného světa (6) obtížná manipulace s rekurzivními otázkami př. relace : R{c-zam, c- ved} kde c- zam je uvedenočíslo zaměstnance a c-ved -číslo jeho bezprostředního nadřízeného (vyplněno pro všechny zaměstnance) chci znát všechny vedoucí zaměstnance - přímé a nepřímé 4

Slabé stránky RDBM (7) Impedance mismatch (neshoda ) = vnoření SQL do procedurálního jazyka - dvou odlišných paradigmat (deklarativního, neprocedurálního a procedurálního jazyka ) potíže SQL poskytuje typy navíc DATE a INTERVAL - třeba konverze ( asi 30 % programátor. kapacity ) při užití dvou různých typů systémů není možná automatická kontrola aplikace jako celku důvod: SQL -92 postrádá výpočení úplnost neobsahuje příkazy typu IF-THEN -ELSE, DO WHILE, FOR CASE ty musí být implementovány prg. embedded SQL - umožňuje uplatnit SQL příkazy v procedurálním jazyce Slabé stránky RDBM Nevhodnost pro dlouhotrvající transakce transakce v obchodních procesech jsou zpravidla krátké, paralelnířízení dlouhých není vhodné obtížnost změny schémat 5

Objektovost ORMD Třída/objekt x typ entity/entita Zapouzdření Dědičnost Polymorfismus Identifikace objektu OID Způsob komunikace mezi objekty, vztah mezi objekty 6

Objektové paradigma - zapozdřenost zapouzdřenost ( encapsulation) je uzavřenost objektu vůči okolí zapouzdření vede k logickému chování objektů a konzistenci stavů v objektu obsažené atributy a metody jsou vůči sobě viditelné metody vykonávajíčinnost nad atributy objektu část atributů a metod je soukromá, z vnějšku neviditelná a nepřístupná metody objektu jsou jedinou možností jak pracovat s vnitřními atributy objektu zasíláním zpráv, které vyvolají metody objektu. Objektové paradigma - dědičnost a polymorfismus dědičnost je uplatnění generalizace třídy mohou vytvářet hierarchie (jednu i více) třída nižší úrovně (potomek) dědí všechny vlastnosti třídy vyšší úrovně (rodiče) zděděné vlastnosti (data i metody) lze doplnit speciálními ( u metod i dat) či je nahradit (metody) 7

Objektové paradigma - dědění - rozšíření podtřída je rozšířením nadtřídy, pokud obsahuje další metody, které nemají stejné rozhraní jako metody nadtřídy při dědění metod může nastat, že objekty mohou reagovat na tutéž zprávu různě: zpráva vyvolává metodu se stejným názvem a parametry ale může být v dané třídě (podtřídě) implementována různě - tato vlastnost se nazývá polymorfismus, je nejčastěji realizována zastíněním vztahy mezi třídami a objekty link je instancí asociace, asociace je abstrakcí linku asociace je vztah mezi třídami (binární, n-ární vztah) je skupina linků se společnou strukturou a společnou semantikou link je spojení mezi objekty, po kterém může být předána zpráva vysílající objekt prostřednictvím zprávy požaduje zaslání dat, či provedení operace linky téže asociace spojují objekty těchže tříd 8

Objektový přístup - vztahy mezi třídami asociace může být obecná jednostranná pouze jedna třída zná rozhraní druhé třídy oboustranná obě třídy znají rozhraní druhé třídy agregace je speciálním případem asociace objekt agregující třídy obsahuje jiné objekty ( skládá se z), t.j.objekt může být kontejnerem, který obsahuje objekty jiné třídy Objektový přístup - agregace agregované objekty většinou přístupné prostřednictvím agregujícího objektu - kontejneru komunikace mezi kontejnerem a jeho objekty (přenos požadavku) se uskutečňuje: propagací kontejnerřeší úkol jeho předáním svým objektům výběrem kontejner předá úkol vybranému objektu oběžníkem úkolřeší ten objekt, který se přihlásil na dotaz kontejneru pokud objekty budou obsaženy ve více kontejnerech, pak je jeden kontejner vlastní ( a tím rozhoduje o jeho existenci), ostatní užívají 9

OID - object identifier každému objektu je přiřazeno OID, když je objekt vytvořen je generován systémem uživatel nemůže měnit, max můžečíst, ideálně není vůbec viditelný je jedinečný, neměnný po dobu existence objektu unikátnost platí v rámci celého systému nebude znovu použito pro jiné objekty ani po skončení existence objektu nezávisí na hodnotách jeho atributů OID OID zajistí unikátní identifikaci objektu tím automaticky poskytuje entitní integritu je silnější omezení než entitní integrita v RMD, kde unikátnost je zajištěna v rámci relace v RMD PK zajišťuje entitní integritu - je tedy založeno na hodnotách atributů objekt se může odkazovat na jiné objekty nebo je obsahovat (musí platit, že objekt existuje) 10

OID výhody užití OID efektivnost - OID požaduje min. paměť rychlost při nalezení objektů nemohou být modifikovány uživatelem uživatel se vyhne údržbě integrity nezávislost na obsahu Atributy v objektech jednoduché atributy primitivní typy - real, integer, string komplexní atributy obsahují kolekce např. atribut prodavači obsahuje kolekci objektů reprezentují vztahy mezi objekty, obsahují kolekce hodnot, které jsou samy objekty odkazy - referenční atributy obsahově podobný jako FK v RMD 11

Objektový model OODM (objektově orientovaný datový model) je datový model vycházející z objektového paradigmatu OO = OO DB + OODBMS OODB je perzistentní a sdílená množina objektů definovaných OODM problematika v nejednotnosti přístupu, někteří autoři dokonce nepovažují za základ dědičnost např. Khoshafian a Abnous v r. 1990 definují OO DBMS jako: objektová orientace = ADT + dědičnost + objekty OODBMS = objektová orientace + databáze OR DBMS 12

Objektově relační databáze ( OR DBMS) synonyma rozšířená relační (Extended ERDBMS) a "objektově-relační (OR DBMS) či Universal Server (Universal DBMS - UDBMS) obsahují některé OO rysy zapouzdření, dědičnost, polymorfismus, dynamickou vazbu metod, complex object, OID vložení triggerů (metod, procedur) do databáze je považováno za objektovost mohou mít uplatněny jen některé z těchto rysů vždy vycházejí z RDBMS - základních relací a SQL ORDBMS je specifikována v rozšíření SQL standardu SQL3 Do této kategorie patří např. Informix, IBM, Oracle a Unisys. Rozšiřitelnost, uživatelsky definované typy a funkce Požadavek: manipulace BLOB (v RSŘBD atomický) Rozšiřitelnost: možnost přidávání nových datových typů + programů (funkce) zabalených do speciálního modulu UDT (uživatelsky definované typy) UDF (uživatelsky definované funkce) Problém: zapojení do relačního SŘBD DB/2: relační extendery Informix: DataBlades ORACLE: cartridges univerzální servery Sybase: Component Integration Layer. 13

Rozšiřitelnost, uživatelsky definované typy a funkce Př.: DB/2 obrazový, video, audio, textový, mapy, časovéřady VideoCharger (audio a video objekty v reálném čase), XML Př.: Informix v r. 1999 více než 25 DataBlades: analýza dat pomocí fuzzy logiky, čištění (pro datové sklady), zpracování dokumentů v ruském jazyce Př.: Oracle intermedia - cartridge pro prostorové objekty, časové řady, vyhledávání ve vizuálních informacích (obrázcích) Výhody Objektově relační model znovupoužívání a sdílení vyplývá ze schopnosti rozšířit DBMS server k vykonání funkcionality centrálně ( př. prostorové datové typy(spatial data) - body, přímky, polygony a s tím spojené funkce - výpočet vzdáleností, určení zda ječástí, překrývání, částí polygonů) umístění na serveru a možnost sdílení funkcionality ve všech aplikacích využití RDBM není tak drahé a nepřístupné, je ověřené evoluční vývoj bez ztráty užitku původního Nevýhody vyčítáno puristy z obou stran - málo objektovosti, odklon od RDBM 14

Objektově relační model manifest 3.generace databázových systémů publikován CADF - (Committee for Advanced DBMS Function) cíle: bohatost typů, dědičnost,funkce zahrnující metody a zapouzdření přiřazení unikátních identifikátorů - pokud není uživatelem def. PK přístupy k databázi - pomocí neprocedurálního jazyka vysoké úrovně. současné implementace ORSŘBD zatím v počátcích paralela: výtky OOSŘBD - málo databázové výtky ORSŘBD - málo objektové chybí vývojové prostředky, nové metodologie největší problém a současně výhoda: univerzálnost ORDBMS ORDBMS "přidávají objektovost do tabulek jsou nadmnožinou RDBMS Rozšíření relačního modelu o objekty a konstrukty pro manipulaci nových datových typů základ tabulka, ale data mohou mít bohatší datovou strukturu - abstraktní datové typy (ADT) rozšíření relačního modelu o objekty a konstrukty pro manipulaci nových datových typů atributy n-tic jsou složité typy, včetně hnízd zděných relací kompatibilita s existujícími relačními jazyky (tvoří podmnožinu) pokud nevyužijeme žádné objektové rozšíření jsou ekvivalentní SQL2 proto omezená podpora dědičnosti, polymorfismu, referencí a integrace s programovacím jazykem. zachovány jsou relační základy včetně deklarativního přístupu k datům 15

SQL-92 Rozšíření základních datových typů uživatelsky definované typy omezená škála datových typů a operací číselné, znakový řetězec, datum, čas, interval atomicita pro každý typ definuje přesnou množinu operátorů a funkcí Charakteristiky rozšíření Charakteristické rysy kvalitního OR systému Rozšíření základních datových typů Složité objekty Dědičnost Pravidla Uživatelsky definované funkce a operátory k uživatelsky definovaným datovým typům 16

Rozšíření základních datových typů CREATE TYPE obdoba CREATE DOMAIN Procedury a funkce programy vyvolatelné v SQL: procedury a funkce procedury mají parametry typu IN, OUT, INOUT funkce mají parametry jen typu IN, vracejí hodnotu konstrukce programů: hlava i tělo v SQL (buď 1 SQL příkaz nebo BEGIN END) hlava v SQL, tělo externě definované volání programů: procedura: CALL jméno_procedury(p1,p2,,pn) funkce: funkcionálně f(x,y) v ADT přibudou metody 17

Uživatelsky definované funkce - k typům definovaným uživatelem funkce lze psát v SQL Funkce psané v SQL se při vykonávání dotazu rozvinou Zjednodušuje dotazy, nesníží výkonnost Server provede za běhu substituci v dotazu jazyku třetí generace ( C, VB, Java..) funkce jsou neprůhledné, při vykonání se zavolají (nejdou rozvinout) CREATE FUNCTION jméno_ funkce (t1,t2.) RETURNING jméno_typu AS [jmeno souboru db výraz] LANGUAGE [jazyk rutiny] 18

Uživatelsky definované operátory operátor z hlediska syntaxe je funkcí se dvěma argumenty v SQL je speciálním druhem funkce se dvěma argumenty a odlišnou notací vytvoření: vytvoření funkce svázání se symbolem operátoru CREATE OPERATOR BINDING jmeno_operatoru TO jmeno_funkce 19

SLOŽITÉ OBJEKTY objekty složené z několika základních nebo uživatelsky definovaných datových typů základní: řádek množiny (kolekce) odkazy Konstruktor typu řádek CREATE ROW TYPE jméno_typu ( jmeno_složky dat_typ,.) Pozn.: složky mohou být základními typy i typ řádek, množina, odkaz) Použití: 1. tabulka jako kontejner použití k vytvořenířady tabulek, které obsahují instance stejného typu 2. použít do sloupce tabulky (složky datového typu) 20

Př. CREATE ROW TYPE t_zamestnanec ( jmeno VARCHAR(30), Nastup DATE). Tabulka jako kontejner: CREATE TABLE zamestnanec OF TYPE t_zamestnanec. jako sloupec tabulky: CREATE TABLE funkce ( c_funkce Integer,.. zamestnanec t_zamestnanec) spojení funkce se zaměstnancem, který tuto funkci vykonává konstruktory kolekce (collection) je dán libovolný typ T, potom collection (T) musí být také datový typ. vyžadována podpora kolekcí: jednoduchých datových typů řádků kolekcí odkazů Pozn: SQL3 návrh konstruktorů množiny, multimnožiny a seznamu; každý klade na členství v množině jiné nároky 21

Konstruktor typu odkaz (references, pointers) Je dán libovolný typ T, potom ref (T) musí být také datový typ, který se dá použít jako typ libovolného sloupce tabulky odkaz na : řádek kolekci Jednoduchý datový typ Příklad CREATE ROW TYPE t_oddeleni ( nazev CHAR(30) vedouci CHAR(20) telef t_telef vozy set(t_vuz) vedouci_odd ref(t_zamestnanec) REFERENCES (zamestnanec) pracovnici set(ref(t_zamestnanec) REFERENCES (zamestnanec))). Typ řádek Kolekce řádků Kolekce odkazů CREATE TABLE oddeleni of type t_oddeleni 22

Manipulace s typem řádek - rozšíření standardního SQL 1. UDF mohou přijímat argumenty nebo vracet návratové hodnoty typu řádek CREATE FUNCTION premie (t_zamestnanec arg1) RETURNING int AS SELECT arg1.plat * 0,1 SELECT premie(z) FROM zamestnanec WHERE z.jmeno = MIKE Typ řádek SELECT z.jmeno FROM zamestnanec z WHERE premie(z) > 1000 Tečková notace (Path expression) Jmeno_ tabulky.jmeno_sloupce Odkazuje na sloupce tabulky, lze užit i k odkazům na sloupce typu řádek SELECT telef.cislo FROM oddeleni WHERE nazev = obuv Pozn.: cislo je jen dílčí pole ze sloupce telef (typ řádek) SELECT nazev FROM oddeleni WHERE telef.oblast = 510 Jmeno_atributu(jmeno_funkce) řádek, v němž jméno funkce představuje jméno atributu ( každý jeho atribut má jednu funkci) SELECT nazev FROM oddeleni WHERE oblast(telef) = 510 23

Manipulace s kolekcemi řádků Tečková notace SELECT název FROM oddeleni WHERE FORD in vozy.jmeno Pozn.: vozy.jmeno definují množinu Příklad CREATE ROW TYPE t_oddeleni ( nazev CHAR(30) vedouci CHAR(20) telef t_telef vozy set(t_vuz) vedouci_odd ref(t_zamestnanec) REFERENCES (zamestnanec) pracovnici set(ref(t_zamestnanec) REFERENCES (zamestnanec))). Typ řádek Kolekce řádků Kolekce odkazů CREATE TABLE oddeleni of type t_oddeleni 24

= náhrada PK, FK odkazy Viz tab. Oddeleni: vedouci je FK obsahujícím číslo zaměstnance vedoucího daného oddelení ( viz DSY PK=FK při spojení) vedouci_odd - identifikace téhož Konceptuálně = ukazatel na typ řádku v tabulce (skutečná hodnota uložená v poli vedoucí oddělení je OID ) Podpora odkazů vyžaduje rozšíření SQL funkci DEREF vrací skutečný řádek - při zadání odkazu Podporu funkcí, které přijímají argumenty, či vracejí výsledky typu odkaz SELECT vedoucí_odd FROM oddeleni vrátí odkaz na zaměstnance- vedoucího ( OID) SELECT DEREF(vedouci_odd) FROM oddeleni..funkce přijme odkaz na vedoucího, vracířádek na který odkazuje Odkazy deref/ref CREATE FUNCTION dej_vedouci (varchar(30) arg1) RETURNING t-zamestnanec AS SELECT deref(vedoucí_odd) FROM oddeleni WHERE oddeleni = arg1) Funkce REF - slouží k získání hodnoty OID SELECT REF(DEREF(dej_vedouci)) FROM oddeleni WHERE nazev= obuv) zavedeni nového vedouciho UPDATE oddeleni SET vedouci = MAREK WHERE Nazev = obuv UPDATE oddeleni SET vedouci_odd = (SELECT REF(zamestnanec) FROM zamestnanec WHERE jmeno = MAREK ) 25

SELECT DEREF(vedouci_odd).nastup, DEREF(vedouci_odd).plat FROM oddeleni Užití vazba PK-FK x ref (=OID) odkazy bezpečnější, garantují unikátnost a neměnnost OID, ale méně čitelné Kolekce odkazů SELECT pracovnici FROM oddeleni WHERE nazev = obuv.. Vrací kolekci OID SELECT deref(*) FROM TABLE (SELECT pracovnici FROM oddeleni WHERE nazev = obuv ) SELECT deref(*).nastup FROM TABLE (SELECT pracovnici FROM oddeleni WHERE nazev = obuv ) 26

Dědičnost - umožňuje sdružovat složené typy do hierarchie dědičnosti - nadtyp, podtyp - pomocí under - podpora vícenásobné dědičnosti od více supertypů - Pokud nejednoznačnost (z obou dědí stejné jméno, jiná specifikace různé přístupy- potlačení, či jiná ošetření) - podpora modularity a konzistence při opakujícím se využití prvků schématu - platí pouze pro datové typy doporučení vytvořit typy, pak je přiřadit tabulkám - typ nemá paměť ěť,, pro uložen ení instancí typu třeba t vytvořit tabulky Dědičnost - podpora dědičnosti dat a funkcí - podpora přetížení (polymorfismus) - schopnost odlišit funkce pro podtypy a nadtypy - typy a tabulky musí představovat samostatný koncept - typová hierarchie, odděleně definované tabulky (tabulka jako kontejner) - podpora vícenásobné dědičnosti - dědění subtypu od dvou odlišných supertypů 27

Dědičnost -příklad CREATE TYPE t_osoba ( jmeno varchar(30)) CREATE TYPE t_zamestnanec ( plat int, nastup date adresa varchar(30) město varchar (30) stat varchar(30) PSC int) Under t_osoba. CREATE TYPE t_student ( Prospech decimal) UNDER t_osoba Vícenásobná dědičnost - příklad CREATE TYPE zamestnany_student( procento decimal) UNDER t_zamestnanec, t_student 28

Dědičnost příklad CREATE TABLE osoba of type t_osoba. CREATE TABLE zamestnanec OF TYPE t_zamestnanec UNDER osoba. CREATE TABLE student OF TYPE t_student UNDER osoba. CREATE TABLE zamestnaný_student OF TYPE t_zamestnany_student UNDER student, zamestnanec. SELECT jmeno FROM zamestnanec WHERE plat = 10 000. Dědičnost manipulace obor hodnot = tab. zaměstnanec a všechny pod ním SELECT jmeno FROM ONLY(zamestnanec) WHERE plat = 10 000 obor hodnot - pouze tabulka zamestnanec ( ne zamestnani studenti) 29

Dědičnost funkcí Dědičnost chování - UDF dána argumenty funkce Př.: CREATE FUNCTION vyssi_plat (t_zamestnanec arg1) Returns BOOLEAN AS SELECT arg1.plat > (SELECT plat FROM zamestnanec WHERE jmeno = B ) Manipulace SELECT z.jmeno FROM ONLY ( zamestnanec ) z WHERE vyssi_plat (z) SELECT z.jmeno FROM zamestnanec z WHERE vyssi_plat (z)..pokud není žádná funkce definována pro zamestnany_student, pak dědi tuto funkci 30

Pravidla Událost podmínka akce = při výskytu události a splnění podmínky je akce vykonána Pravidla: Aktualizace - aktualizace Dotaz - aktualizace Aktualizace - dotaz Dotaz - dotaz CREATE RULE Výhody Objektově relační model znovupoužívání a sdílení vyplývá ze schopnosti rozšířit DBMS server k vykonání funkcionality centrálně ( př. prostorové datové typy(spatial data) - body, přímky, polygony a s tím spojené funkce - výpočet vzdáleností, určení zda ječástí, překrývání, částí polygonů) umístění na serveru a možnost sdílení funkcionality ve všech aplikacích využití RDBM není tak drahé a nepřístupné, je ověřené evoluční vývoj bez ztráty užitku původního Nevýhody - vyčítáno puristy z obou stran - málo objektovosti, odklon od RDBM 31