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

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

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

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

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

OQL. Jakub Kýpeť, Ondřej Heřmánek

OQL. (Object Query Language) Michal Bartoš Filip Bureš

Object Query Language. Daniel Fromek Miroslav Novotný

ADT/ADS = abstraktní datové typy / struktury

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

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

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

2. Modelovací jazyk UML 2.1 Struktura UML Diagram tříd Asociace OCL. 3. Smalltalk 3.1 Jazyk Pojmenování

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

Objektově orientované databáze. Miroslav Beneš

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

Základy jazyka C# Obsah přednášky. Architektura.NET Historie Vlastnosti jazyka C# Datové typy Příkazy Prostory jmen Třídy, rozhraní

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

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

Tvorba informačních systémů

Databázové systémy trocha teorie

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

typová konverze typová inference

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

ODMG OQL. Jan Forch. Dotazovací jazyky, MFF UK

Obsah přednášky 7. Základy programování (IZAPR) Přednáška 7. Parametry metod. Parametry, argumenty. Parametry metod.

Algoritmizace prostorových úloh

Tvorba informačních systémů

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

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

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

PREPROCESOR POKRAČOVÁNÍ

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

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

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

1. Dědičnost a polymorfismus

Common Object Request Broker Architecture

Střední průmyslová škola Zlín

Úvod do programovacích jazyků (Java)

Úvod do programovacích jazyků (Java)

Ing. Igor Kopetschke TUL, NTI

Obsah přednášky. 12. Dokumentace zdrojového kódu Tvorba elektronické dokumentace UML. Co je diagram tříd. Ing. Ondřej Guth

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

RELAČNÍ DATABÁZE. Cíl:

Infrastruktura UML. Modelování struktury v UML. Superstruktura UML. Notace objektů. Diagramy objektů

7.5 Diagram tříd pokročilé techniky

Algoritmizace prostorových úloh

Šablony, kontejnery a iterátory

Datové typy v Javě. Tomáš Pitner, upravil Marek Šabo

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

Reprezentace dat v informačních systémech. Jaroslav Šmarda

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

A5M33IZS Informační a znalostní systémy. O čem předmět bude? Úvod do problematiky databázových systémů

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

7.5 Diagram tříd pokročilé techniky

Databázové systémy úvod

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

Databázové systémy úvod

Databázové systémy I. 1. přednáška

Šablony, kontejnery a iterátory

Tabulka symbolů. Vazba (binding) Vazba - příklad. Deklarace a definice. Miroslav Beneš Dušan Kolář

Konceptuální modelování a SQL

Zápis programu v jazyce C#

Datové typy a struktury

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

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

7.3 Diagramy tříd - základy

OBJEKTOVÝ PŘÍSTUP V DATABÁZOVÉ TECHNOLOGII

Programování v C++ 2, 4. cvičení

Strukturované typy a ukazatele. Úvod do programování 1 Tomáš Kühr

předměty: ukončení: Zápočet + Zkouška / 5kb např. jméno, název, destinace, město např. student Jan Novák, narozen

Michal Krátký. Úvod do programovacích jazyků (Java), 2006/2007

Databáze ArcView) Databázový systém

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

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

Abstraktní datové typy: zásobník

Jiří Mašek BIVŠ V Pra r ha

Úvod do CORBY. Svetlozara Arabadzhieva

7.3 Diagramy tříd - základy

Obsah přednášky 9. Skrývání informací. Skrývání informací. Zapouzdření. Skrývání informací. Základy programování (IZAPR, IZKPR) Přednáška 9

EXTRAKT z mezinárodní normy

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

2 Strukturované datové typy Pole Záznam Množina... 4

Objektové programování

Algoritmizace a programování

Primární klíč, cizí klíč, referenční integrita, pravidla normalizace, relace

7. Datové typy v Javě

O datových typech a jejich kontrole

Sada 1 - Základy programování

Modelování procesů s využitím MS Visio.

TÉMATICKÝ OKRUH Softwarové inženýrství

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

Programování v C++ 3, 3. cvičení

Databázové modelování. Analýza Návrh konceptuálního schématu

Diagramy tříd - základy

PA152. Implementace databázových systémů

TRANSFORMACE RELAČNÍHO DATOVÉHO MODELU NA OBJEKTOVÝ TRANSFORMATION OF RELATIONAL TO OBJECT DATA MODEL

Logický datový model VF XML DTM DMVS

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

PŘETĚŽOVÁNÍ OPERÁTORŮ

IB111 Programování a algoritmizace. Objektově orientované programování (OOP)

Transkript:

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

Objektově orientované databáze

Relační databáze data uložena v logicky provázaných tabulkách přes cizí klíče výhoda jednoduchost, intuitivnost, naplnění myšlenky oddělení programu a dat nevýhoda data rozdělena do mnoha tabulek zvláště pokud dodržujeme normální formy relací obtížněji se realizují složitější vztahy mezi daty

Relační a objektové databáze neexistují datové typy s vnitřní strukturou komplikovanější vyhledávání v relačních databázích operace přirozené spojení několika tabulek objektový model a objektové databáze představují renesanci síťového modelu

Objektové databáze počátky objektových databází rok 1989 manifest skupiny ALTAIR (později skupina O 2 ): The OO database system manifesto, 1 st Int. Conf. on OO and Deductive DB, Tokyo rok 1990 memorandum Third generation database system manifesto, Memorandum No. UCB/ERL M90/28, University of California, Berkeley

Objektové databáze počátky standardizace: skupina ODMG (Object Data Management Group), www.odbmg.org od r. 2001 se zabývala standardizací OODBS The Object Data Management Standard: ODMG 3.0, r. 2001 definuje ODL, OQL, vnoření (binding) do programovacích jazyků současnost: činnost ODMG převzala v r. 2006 OMG, pracovní skupina Object Database Technology Working Group (ODBT WG)

Objektové databáze objektové SŘBD v r. 1991 13 komerčních OOSŘBD dnes existují pouze v několika desítkách výrobků malý nárůst svět se vydal cestou objektově relačních SŘBD levnější, relační DB jsou zaběhlé, obava ze složitých systémů

IRIS, GemStone Příklady OOSŘBD izolované systémy s vlastními jazyky Ontos, Object Design, Objectivity, Versant Object Technology architektura klient/server, společné platformy - C++, XWindow, UNIX Workstations ITASCA (Orion), O2 podpora verzování, definiční a manipulační jazyk, výpočetní úplnost, evoluce schématu

Gemstone Příklad OOSŘBD vznik: pol. 80. let jako databázové rozšíření SmallTalku produkt firmy GemTalk Systems posl. verze 8.2 z roku 2016 dodržuje standardy CORBA a ODMG CORBA (Common Object Request Broker Architecture) standard pro komunikaci (volání funkcí) v distribuovaném prostředí

EyeDB Příklad OOSŘBD open source OOSŘBD založen na standardu ODMG 3.0

Vlastnosti OODBS 1. Podporuje více kolekcí relační databáze obsahují pouze tabulky objektové databáze podporují: Set MultiSet Bag Dictionary Array List Ordered Collection

Vlastnosti OODBS 2. Rozlišuje třídy objektů a kolekce objektů třída objektů: realizace objektů kolekce objektů: úložiště objektů kolekce může obsahovat i objekty z různých tříd, pokud mají nějaké společné vlastnosti

Vlastnosti OODBS 3. Objekty mají datové složky a metody datová složka může být objekt metody mohou provádět i složitější operace (výpočet dat), nikoliv pouze get_, set_ do metod můžeme rozpustit chování programu v pojetí OODBS se jako atributy označují datové složky i metody

Vlastnosti OODBS 4. Každý objekt má svoji identitu OID (Object Identifier) jednoznačný identifikátor objektu přidělený SŘBD před uživatelem mohou být skryté plní funkci ukazatele na objekt do virtuální paměti v OODBS není potřeba vytvářet klíče

ODL Jazyky v OODBS Object Definition Language popis objektového schématu OQL Object Query Language dotazovací jazyk definice jazyků se objevuje v ODMG 3.0, implementace se mohou lišit dle SŘBD

Úvod do ODL Definice tříd v ODL podobá se definici třídy v C++/Java class <název třídy> { [readonly] attribute <datový typ> <jm atributu>; <definice metod> // komentář };

Definice tříd v ODL class CTENAR { attribute string RC; attribute string jmeno; attribute string prijmeni; attribute Date dat_zapisu; attribute string adresa; };

objekt Datové typy v ODL instance třídy má jednoznačný identifikátor OID obsah se může měnit literál typy: atomický literál kolekce složený literál pole pevné délky

Atomický literál string (řetězec) char (znak) boolean (true nebo false) float (reálné číslo) short (krátké celé číslo) long (dlouhé celé číslo) enum (výčet)

class Kurz { Atomický literál attribute string nazev; attribute enum sekce {1, 2, 3, 4, 5, 6, 7, 8}; }; výčtový datový typ může být specifikován i symbolicky attribute enum sekce {JEDNA, DVA, TRI };

Složené literály skládají se z pevného počtu literálů nebo objektů odpovídají strukturám v jazyce C struct <jméno>{ <datový typ> <jméno elementu>;... };

struct Adresa { string ulice; short cislo; string mesto; char psc[5]; }; Složené literály

Složené literály class CTENAR { attribute string RC; attribute string jmeno; attribute string prijmeni; attribute Date dat_naroz; attribute Adresa adr; };

Kolekce kolekce literálů nebo objektů set množina (neuspořádaná kolekce), bez duplicit bag (batoh) neuspořádaná kolekce s duplicitami list: uspořádaný seznam elementů array: uspořádaná kolekce elementů s danou pozicí (indexem) - velikost pole se dynamicky přizpůsobuje

dictionary Kolekce neuspořádaná kolekce dvojic klíč-hodnota bez duplicit analogie mapy v knihovně STL Definice atributu typu kolekce připomíná instance generických tříd v C++/Javě list <long> set <Date>

Operace (metody) třída může mít definované operace bez parametrů i s parametrem <návratový typ> <název> (); <návratový typ> <název> (<typ parametru> <název parametru>,...); operace mohou vyhazovat výjimky <návratový typ> <název> (<typ parametru> <název parametru>,...) raises (<seznam výjimek>);

Poznámka: Operace (metody) ve striktní verzi ODL se ještě parametry označují jako vstupní, výstupní nebo vstupně-výstupní klíčová slova in, out, inout před datovým typem parametru

Operace class Student { attribute string jmeno; attribute Date datum_nar; // uživatelem definovaný složený atribut attribute Addresa adresa; // operace short vek( ); boolean zapisuje_si(in string kurz, in short semestr); };

Definice asociací asociace - vztahy mezi objekty asociace je termín z UML 1:1, 1:N, M:N v definici třídy je nutné definovat asociaci jako obousměrnou vždy definovat také inverzní asociaci asociace se vztahem (1:N), (M:N) se definují pomocí kolekcí set, list, bag, array

Definice asociací OSŘBD zajišťuje referenční integritu: maže neplatné odkazy vytváří inverzní vztahy vlastní definice asociací klíčová slova relationship, inverse relationship <cíl> <identifikátor> inverse <inverzní_cesta>

Příklad Student jméno dat_nar adresa vek zapisuje_si 0..* má_zapsany si_zapsal 0..* Kurz nazev sekce zapis

Příklad Student jméno dat_nar adresa vek zapisuje_si ma_zapsany { Set } { Set } si_zapsal Kurz nazev sekce zapis kurzy studenti

Příklad class Student (extent studenti) { attribute string jmeno; attribute Date datum_nar; attribute Addresa adresa; }; short vek( ); boolean zapisuje_si(in string kurz, in short semestr); relationship set<kurz> si_zapsal inverse Student::ma_zapsany;

Příklad class Kurz (extent kurzy) { attribute string nazev; attribute enum sekce {1, 2, 3, 4, 5, 6, 7, 8}; }; short zapis( ); relationship set<student> ma_zapsany inverse Kurz::si_zapsal;

Klíče vzhledem k existenci OID není nutné definovat primární klíč klíč lze definovat pomocí klíčového slova key klíčem může být atribut nebo množina atributů hodnota musí být unikátní

Klíče class Student (extent studenti key cislo) { attribute long cislo; attribute string jmeno; attribute Date datum_nar; attribute Addresa adresa; short vek( ); boolean zapisuje_si(in string kurz, in short semestr); relationship set<kurz> si_zapsal inverse Student::ma_zapsany; };

Dědění třída může dědit od jiné třídy (od předka) dědění se specifikuje klíčovým slovem extends nezaměňovat s extent class Student extends Osoba (extent studenti key cislo) { attribute long cislo;

Vytvoření instance Novak Student ( číslo: 1045, jmeno: "Pavel Novák", datum_nar: 02.12.1975, address: {ulice "Dejvická", cislo 523, mesto "Praha 6", psc "16000"} );