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

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

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

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

Objektově relační databáze

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

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

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

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

OO a OR databáze. Jaroslav Pokorný MFF UK, Praha

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

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

OO a OR databáze slajdy k přednášce NDBI001

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

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

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

Objektově relační model

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

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

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Tvorba informačních systémů

5. POČÍTAČOVÉ CVIČENÍ

Vysoká škola ekonomická v Praze

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

Konceptuální modelování a SQL

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

10. Architektura klient/server a třívrstvá architektura

10. Architektura klient/server a třívrstvá architektura

Databázové systémy I

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

Tabulka fotbalové ligy

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Tvorba informačních systémů

Oracle XML DB. Tomáš Nykodým

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

Generické programování

Jazyk PL/SQL Úvod, blok

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

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Abstraktní datové typy Objektový přístup v Oracle

Použití databází na Webu

Michal Krátký, Miroslav Beneš

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

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

Datablades včera, dnes a zítra

Úvod do programovacích jazyků (Java)

6. SQL složitější dotazy, QBE

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

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

FIREBIRD relační databázový systém. Tomáš Svoboda

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

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

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

A5M33IZS Informační a znalostní systémy. Relační databázová technologie

Uložené procedury Úvod ulehčit správu zabezpečení rychleji

Relace x vztah (relationship)

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

Semestrální práce z DAS2 a WWW

InnoDB transakce, cizí klíče, neumí fulltext (a nebo už ano?) CSV v textovém souboru ve formátu hodnot oddělených čárkou

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

Relační databázová technologie

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

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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

MySQL. mysql> CREATE DATABASE nova CHARACTER SET latin2 COLLATE latin2_czech_cs; Query OK, 1 row affected (0.02 sec)

DBS Transformace konceptuálního schématu na

Jazyk SQL 3 - DML, DDL, TCL, DCL

8. Zpracování dotazu. J. Zendulka: Databázové systémy 8 Zpracování dotazu 1

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Databázové systémy trocha teorie

Základní pojmy. Úvod do programování. Základní pojmy. Zápis algoritmu. Výraz. Základní pojmy

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

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

POSTUP PRO VYTVOŘENÍ STRUKTUR PRO UKLÁDÁNÍ RDF DAT V ORACLE

DBS Konceptuální modelování

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

Algoritmizace prostorových úloh

Verzování a publikace dat na webu za pomoci PostgreSQL

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

Jazyk SQL databáze SQLite. připravil ing. petr polách

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

PG 9.5 novinky ve vývoji aplikací

Virtual private database. Antonín Steinhauser

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

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

PostgreSQL. Podpora dědičnosti Rozšiřitelnost vlastní datové typy. Univerzální nasazení ve vědecké sféře

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

J. Zendulka: Databázové systémy 8 Zpracování dotazu Podstata optimalizace zpracování dotazu

4. lekce Přístup k databázi z vyššího programovacího jazyka

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

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

Operátory ROLLUP a CUBE

Virtuální privátní databáze

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Databázové systémy úvod

Dynamicky vázané metody. Pozdní vazba, virtuální metody

InterSystems Caché Post-Relational Database

RNDr. Michal Kopecký, Ph.D. Department of Software Engineering, Faculty of Mathematics and Physics, Charles University in Prague

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

Transkript:

Databáze I Přednáška 7

Objektové rozšíření SQL Objektově relační databáze SQL:1999 objektové rozšíření SQL vztahuje se k objektově relačním databázovým systémům ukládají objekty do relační databáze umožňují integraci klasických tabulkových dat a složitých objektů (multimédia, časové řady, prostorová data, )

Nové datové typy v SQL:1999 uživatelské datové typy (abstraktní datové typy), typ řádku konstruktory pro typy řádků a typy odkazů typ kolekce ARRAY uživatelem definované funkce a procedury velké objekty (large object) textové a binární zadává se velikost v KB, MB, GB

Nové datové typy v SQL:1999 typ BOOLEAN ve tří-hodnotové logice TRUE, FALSE, UNKNOWN Poznámka: velké objekty nelze porovnávat a atributy těchto typů nemohou být cizími klíči

Nové datové typy v SQL:1999 BLOB Binary Large Object datový typ pro uložení binárních dat (např. multimédia) CLOB Character Large Object datový typ pro uložení textových dat (rozsáhlé texty, např. články) některé SŘBD měly možnost i dříve definovat sloupec tabulky jako TEXT nebo MEMO, ale bez další podpory

ORSŘBD (objektově relační SŘBD) obsahují zásuvné (plug-in) softwarové moduly pro práci s daty ve sloupcích typu velké objekty, tzv. extendery IBM DB 2 Universal Database: rok 2007 14 extenderů: obrázky, videa, texty, časové řady, mapy, Informix: rok 1997 29 extenderů: fuzzy logika, datamaining (čistění dat) Oracle: tzv. cartridge: vyhledávání v obrázcích, časové řady, prostorové objekty

Příklad textový extender umožňuje klást dotazy nad texty rozšiřuje SQL o nové funkce pro práci s texty příklad tabulky: recenze(casopis, autor_rec, nazev_rec, text_rec, datum) text_rec je typu CLOB(15M)

najdi časopis a název recenze, kde se v textu recenze vyskytují slova komedie a Burian nebo Plachta, ale ne Marvan SELECT casopis, nazev_rec FROM recenze WHERE CONTAINS(text_rec, 'komedie' AND ('Burian' OR 'Plachta') AND NOT 'Marvan')=1;

najdi časopis a název recenze, kde se v textu recenze vyskytují slovo Marvan více než čtyřikrát SELECT casopis, nazev_rec FROM recenze WHERE NO_OF_MATCHES(text_rec, 'Marvan') > 4;

Příklad definice tabulky filmy, ve které je uložen i scénář filmu a vlastní video CREATE TABLE filmy ( jmeno_f VARCHAR(20) NOT NULL, rok INT, scenar CLOB(15M), video BLOB(2G), PRIMARY KEY(jmeno_f) );

Atribut typu ARRAY (pole) jde o kolekci dat pole je proměnné délky, definuje se jeho maximální délka umožňuje uložit do jednoho políčka kolekci hodnot příklad: definujme tabulku žáků s informací, kolik hodin každý den cvičí na hudební nástroj

Atribut typu ARRAY CREATE TABLE zaci ( id INT NOT NULL, jmeno VARCHAR(20), prijmeni VARCHAR(30) NOT NULL, cvici DECIMAL(2,0) ARRAY[7] ); ALTER TABLE zaci ADD CONSTRAINT zaci_pk PRIMARY KEY (id);

Nepojmenovaný typ řádku klíčové slovo ROW umožňuje strukturovat řádky tabulek definovat sloupec tabulky jako strukturu bez pojmenování typu, tj. obsahem sloupce je zahnízděný řádek relace obsahující atributy typu kolekce nebo nepojmenované řádky nejsou v 1.NF

Nepojmenovaný typ řádku CREATE TABLE osoby ( rc CHAR(10) NOT NULL, jmeno ROW ( krestni VARCHAR(20), prijmeni VARCHAR(30) NOT NULL), adresa ROW ( ulice VARCHAR(20), číslo INT, psc CHAR(5), město VARCHAR(30) ), PRIMARY KEY (rc) );

Vložení dat do tabulky INSERT INTO osoby VALUES ( '705024568', ('Jan','Novák'), ('Dejvická',1,'16000','Praha 6') );

přístup k datům přes tečkovou notaci SELECT O.jmeno.prijmeni FROM OSOBY O; Poznámka: srovnejte výběr tabulky FROM OSOBY O s jazykem OQL

Abstraktní datové typy abstraktní datový typ - ADT používá v informatice a programování ještě před začleněním do objektových a objektově relačních databází ADT množina dat a operací nad daty definovaná formálně výhodně se implementuje objektově příklady fronta s operacemi vloz_na_konec, vyber_z_cela zásobník s operacemi push, pop strom

Abstraktní datové typy v databázích a v SQL ADT v databázích je n-tice atributů a seznam operací (metod) nad nimi ADT se definuj příkazem CREATE TYPE těla metod (kódy) jsou definovány samostatně, mimo příkaz CREATE TYPE, pomocí CREATE PROCEDURE/FUNCTION event. METHOD

Příklad CREATE TYPE adresa_t AS ( ulice VARCHAR(20), cislo INT, psc CHAR(5), město VARCHAR(30) );

Příklad CREATE TYPE zamestnanec_t AS ( id INT NOT NULL UNIQUE, rc CHAR(10) UNIQUE, jmeno VARCHAR(20), prijmeni VARCHAR(30), adresa adresa_t, vedouci zamestnanec_t, datum_nastupu DATE, plat DECIMAL(7,2)), INSTANTIABLE NOT FINAL, REF(id), METHOD odpracovana_leta(p zamestnanec_t) RETURNS INT; METHOD mzda(p zamestnanec_t) RETURNS DECIMAL;

REF jakýkoliv odkaz na instance tohoto typu bude odvozen od hodnoty atributu id INSTANTIABLE lze vytvářet instance tohoto typy opak: UNINSTANTIABLE vhodné, chceme-li vytvářet instance až od potomků definovaného typu NOT FINAL je dovoleno definovat podtypy (potomky) opak: FINAL

Definice podtypů pomocí klíčového slova UNDER je dovoleno pouze jednonásobné dědění podtyp nemůže dědit od více nadtypů tam, kde může být instance nadtypu (parametry), lze použít instanci podtypu CREATE TYPE urednik_t UNDER zamestnanec_t AS ( definice dalších atributů ) definice dalších metod;

Vytvoření instancí od ADT konstruktorem příkazem INSERT do tabulky pouze instance uložená v tabulce je perzistentní (trvalá) operátorem NEW např. chceme-li porovnávat instanci za klíčovým slovem WHERE s konstantou, i tato musí být vytvořena jako objekt pomocí NEW (není trvalý) př: vedouci je typu zamestnanec_t v dotazu: WHERE vedouci = NEW 1234,"7012051234",

Volání metod tečkovou notací X.odpracovana_leta() instance jako první parametr odpracovana_leta(x)

Definice podtabulek odvozenou tabulku lze definovat i bez explicitní definice typů, přímým odvozením od jiné tabulky CREATE TABLE osoby ( rc CHAR(10) NOT NULL, prijmeni VARCHAR(20) ); CREATE TABLE zamestnanci UNDER osoby ( mzda DECIMAL(7,2));

Definice procedur, funkcí (metod) procedury a funkce mohou být napsány v SQL PSM i v jiných jazycích (Java, C/C++) SQL PSM Persistent Store Modules rozšíření SQL na výpočetní úplnost definice CREATE FUNCTION/PROCEDURE v některých SŘBD CREATE METHOD

Definice procedury tabulka ucty(cislo,zustatek) procedura vrátí zůstatek na účtu do parametru zu CREATE PROCEDURE vrat_zustatek (IN c_uctu INTEGER, OUT zust DOUBLE PRECISION) BEGIN SELECT zustatek INTO zust FROM ucty WHERE cislo = c_uctu; IF zustatek < 2500 THEN SIGNAL nizky_zustatek END IF END

Definice funkce CREATE FUNCTION vrat_zustatek (IN c_uctu INTEGER) RETURNS DOUBLE PRECISION BEGIN DECLARE zust DOUBLE PRECISION; SELECT zustatek INTO zust FROM ucty WHERE cislo = c_uctu; IF zustatek < 2500 THEN SIGNAL nizky_zustatek END IF; RETURN zust END

Poznámky: procedury a funkce se volají příkazem CALL příkaz SIGNAL vyvolá speciální handler

Pojmenovaný typ řádku uživatelem definovaný pojmenovaný typ, který není na rozdíl od ADT zapouzdřený tj. nelze definovat metody

Pojmenovaný typ řádku CREATE ROW TYPE zamestnanec_t ( id INT NOT NULL UNIQUE, rc CHAR(10) UNIQUE, jmeno VARCHAR(20), prijmeni VARCHAR(30), adresa adresa_t, vedouci zamestnanec_t, datum_nastupu DATE, plat DECIMAL(7,2) );

vytvoření tabulky pomocí tohoto typu CREATE TABLE zamestnanci OF zamestnanec_t (PRIMARY KEY id); protože typ zamestnanec_t je definován jako ROW, tabulka se skládá z "obyčejných" řádků (jako v původním SQL)

pokud by byl typ zamestnanec_t definován jako ADT na snímku 20, tabulku bychom vytvořili stejně, CREATE TABLE zamestnanci OF zamestnanec_t (PRIMARY KEY id); ale řádky tabulky by měly jednoznačnou identitu pomocí OID jako v OOSŘBD na objekty se lze odkazovat jen pomocí reference REF

Typ odkazu odkaz se deklaruje klíčovým slovem REF typ odkazu na instanci může být uživatelsky definovaný REF USING integer; pomocí jednoznačného atributu REF(id) odpovídá cizímu klíči tato varianta je použita na snímcích 20,21 generován systémem REF IS SYSTEM GENERATED např. automaticky pomocí OID obecně může odkaz ukazovat do jakékoliv tabulky, která obsahuje instance ADT

Odkaz jako atribut CREATE ROW TYPE ucet_t ( c_uctu INT, rc CHAR(10) UNIQUE, klient REF(zakaznik_t), typ_uctu CHAR(1), zalozen DATE, zůstatek DOUBLE PRECISION ); realizace odkazu na instanci zákazníka záleží, jaký typ odkazu dle předchozího snímku je v definici typu zákazník CREATE TABLE ucty of ucet_t

Odkaz jako atribut CREATE TABLE ucty OF ucet_t ( PRIMARY KEY c_uctu, SCOPE FOR klient IS zakaznici } omezení SCOPE znamená, že ve sloupci klient musí být odkazy na instance, které jsou v tabulce zakaznici

Ukázka dotazu "dereference" se provádí pomocí operátoru -> jako v C/C++ lze se pohybovat "mezi" tabulkami jako v OQL najdi jména klientů, kteří jsou z Prahy a mají na účtu více jak 100 tis. SELECT U.klient->jmeno FROM ucty U WHERE U.klient->adresa.mesto = 'Praha' AND U.zustatek>100000;

Nové kolekce v SQL:2003 SQL:1999 - pouze ARRAY SQL:2003 SET množina LIST seznam MULTISET multimnožina lze definovat kolekci referencí příklad: seznam udělených prémií zaměstnanci můžeme definovat jako premie LIST(DECIMAL(7,2))

Speciální kolekce v SŘBD ORACLE hnízděná tabulka (nested table) realizuje neohraničenou, neuspořádanou kolekci CREATE ROW TYPE ucet_t ( cislo INT, otevren DATE, zustatek DOUBLE PRECISION ); CREATE TYPE ucty_t AS TABLE OF ucet_t;

Speciální kolekce v SŘBD ORACLE vytvoříme tabulku zaměstnanci, která bude mít atribut ucty typu hnízděná tabulka ucty_t CREATE TABLE zamestnanci ( id INT, ucty ucty_t, );

Modelování vztahů pomocí ORDBS klasické SQL:92 tabulky provázané cizími klíči SQL:1999 a SQL:2003 lze využít zahnízděných řádků nebo objektů přímo do tabulky vztahy lze realizovat jako kolekce odkazů REF jako v OO přístupu vztahy M:N také obdobně jako v relačním modelu, kde vytvoříme samostatnou tabulku např.s referencemi na objekty entitních typů

Modelování vztahů pomocí ORDBS ZAKAZNIK (0,n) (1,1) MÁ UCET

Modelování vztahů pomocí ORDBS klasický relační model RC v tabulce UCTY je cizí klíč odkazující do tabulky ZAKAZNICI RC ZAKAZNICI UCTY CISLO RC

Modelování vztahů pomocí ORDBS hnízděná tabulka ucty s účty zákazníka ZAKAZNICI RC ucty

Modelování vztahů pomocí ORDBS hnízděná kolekce s odkazy (REF) do tabulky s objekty ucty ZAKAZNICI RC ucty CISLO UCTY