Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Databázové jazyky Jaroslav Pokorný FI BVŠP Bratislava

Podobné prezentace


Prezentace na téma: "Databázové jazyky Jaroslav Pokorný FI BVŠP Bratislava"— Transkript prezentace:

1 Databázové jazyky Jaroslav Pokorný FI BVŠP Bratislava
Databázové systémy Databázové jazyky Jaroslav Pokorný FI BVŠP Bratislava

2 Databázové jazyky jazyky pro manipulaci dat (JMD)
aktualizační příkazy INSERT, DELETE, UPDATE dotazovací jazyky (relační algebra, SELECT v SQL) jazyky pro definici dat (JDD) příkaz CREATE TABLE a další v SQL J. Pokorný

3 Databázový dotaz Praktická definice databázového dotazu
(Databázový) dotaz typu (S T) je vyčíslitelná funkce q, která pro každou databázi S* poskytne odpověď q(S*) typu T. omezení: hodnoty v q(S*) jsou z S*, odpověď nezávisí na reprezentaci dat v DB prvky DB se chápou jako neinterpretované objekty Dotazovací jazyk nad S je množina výrazů na konečnou abecedou + významová funkce přiřazující každému výrazu dotaz. J. Pokorný

4 Vyjadřovací síla Vyjadřovací síla dotazovacího jazyka J nad S je množina všech dotazů M(J), které lze pomocí J vyjádřit. J1 < J2 právě když M(J1)  M(J2) J1  J2 právě když M(J1) = M(J2) Dotazovací jazyk, kterým lze vyjádřit všechny databázové dotazy se nazývá úplný. J. Pokorný

5 Dotaz v relační algebře
Př.: postup po krocích – uložení mezivýsledků KINO(Název_k, Adresa), FILM(Jméno_f, Herec, Rok) MÁ_NA_PROGRAMU(Název_k, Jméno_f, Datum) 1. krok (selekce) R1:= MÁ_NA_PROGRAMU(Název_k = ‘Mír’) J. Pokorný

6 Dotaz v relační algebře
2. krok (projekce) R2 := R1[jméno_f, Datum] 3. krok (spojení) R3 := FILM * R2 J. Pokorný

7 Dotaz v relační algebře
4: krok (projekce) R4:= R3[Herec] bez mezivýsledků: (MÁ_NA_PROGRAMU(název_k=‘Mír’)[jméno_f, Datum] * FILM) [Herec] česky: "Nalezni herce, kteří hrají ve filmech v kinu Mír". J. Pokorný

8 Za relačním modelem prázdná hodnota NULL, pravdivostní hodnota UNKNOWN
(levé, pravé, plné) vnější spojení Motivace pro NULL: seznam filmů v jednotlivých kinech, avšak i v těch, kde se zrovna nic nekoná (dotaz KINO * MÁ_NA_PROGRAMU problém neřeší) J. Pokorný

9 Za relačním modelem J. Pokorný

10 Za relačním modelem levé vnější spojení
R *L S = (R * S)  (R’  (NULL,...,NULL)), kde R’  R – (R * S)[A] Důsledky: (R *LS)[A]  R, pravé vnější spojení R *R S = (R * S)  ((NULL,...,NULL)  S’) úplné vnější spojení R *F S = (R *L S)  (R *R S) J. Pokorný

11 Úvod do jazyka SQL Jazyk SQL vznikl z jazyka SEQUEL (Structured English Query Language) vyvíjeného ve firmě IBM (publ. v r. 1974) V r standardizován SQL Další standardy: SQL92, SQL:1999, SQL:2003, Pz.: každý následující je nadmnožinou předchozího J. Pokorný

12 Přehled SQL92 jazyk pro definici dat,
interaktivní jazyk pro manipulaci dat, jazyk pro manipulaci dat v hostitelské verzi, možnost definice pohledů, možnost definice IO, systémový katalog možnost definice přístupových práv, jazyk modulů, řízení transakcí. J. Pokorný 2

13 Schéma příkladu VÝPŮJČKY(Č_KOPIE, Č_ZAK, ROD_Č, CENA, DATUM_V)
{údaje o výpůjčkách kopií - číslo zakázky, zákazník, cena, datum navrácení} KINA(NÁZEV_K, ADRESA, JMÉNO_V) {údaje o kinech a jejich vedoucích} FILMY(JMÉNO_F, REŽISÉR) {údaje o filmech a jejich režisérech} PŘEDSTAVENÍ(NÁZEV_K, JMÉNO_F, DATUM) {údaje o kinech hrajících filmy} ZÁKAZNÍCI(ROD_Č, Č_ZAK, JMÉNO, ADRESA) {údaje o zákazníkovi} ZAMĚSTNANCI(OSOBNÍ_Č, ADRESA, JMÉNO, PLAT) {údaje o zaměstnancích půjčovny} KOPIE(Č_KOPIE JMÉNO_F) {kopie filmů} REZERVACE(JMÉNO_F, ROD_Č ) {rezervace filmů zákazníky} J. Pokorný 3

14 Definice dat v SQL CREATE TABLE Dále: odvozené tabulky ( É pohledy).
CREATE TABLE VÝPŮJČKY (č_kopie CHAR(3) NOT NULL, č_zak CHARACTER(6) NOT NULL, cena DECIMAL(5,2), rod_č CHARACTER(10) NOT NULL, datum_v DATE); J. Pokorný

15 Definice dat v SQL IO sloupce
NOT NULL sloupec nesmí obsahovat hodnotu NULL, DEFAULT určení implicitní hodnoty sloupce , UNIQUE všechny hodnoty ve sloupci musí být unikátní, NULL hodnota nevadí, PRIMARY KEY sloupec je primárním klíčem tabulky, FOREIGN KEY sloupec je cizím klíče definující referenční integritu s jinou tabulkou CHECK logický výraz definuje přídavné IO IO tabulky (např. složený primární klíč), pojmenování IO J. Pokorný

16 Definice dat v SQL ALTER TABLE DROP TABLE CREATE SCHEMA
CREATE TABLE jméno-tabulky (seznam_prvků_tabulky) seznam_prvků_tabulky ::= prvek_tabulky[,prvek_tabulky]... prvek_tabulky ::= definice_sloupce | definice_IO_tabulky ALTER TABLE ADD sloupec, DROP sloupec, ALTER sloupec, ADD CONSTRAINT a DROP CONTRAINT Př.: ALTER TABLE KINA ADD počet_míst INT DROP TABLE CREATE SCHEMA obsahuje definice základních tabulek, pohledů, domén, integritních omezení, uživatelská práva J. Pokorný

17 Definice dat v SQL DROP SCHEMA
Lze: RESTRICT, CASCADE Df.: Databáze v SQL je kolekce tabulek a pohledů. Může být definována jedním nebo více schématy. schéma 2 schéma 1 J. Pokorný

18 Typy dat v SQL numerické (přesné a aproximativní), znakové řetězce,
bitové řetězce, temporální data, časové intervaly. Dále: NULL (je prvkem každého datového typu) TRUE, FALSE, UNKNOWN Konverze: automatické, explicitní (funkce CAST) J. Pokorný

19 Typy dat v SQL přesné numerické typy INTEGER (celé),
SMALLINT („menší“ implementace než INTEGER), NUMERIC, DECIMAL. DECIMAL(p,q), p cifer, desetinná čárka q cifer zprava. NUMERIC (podobné DECIMAL) s přesností implementačně definovanou, p musí být menší nebo rovno této přesnosti. J. Pokorný

20 Typy dat v SQL aproximativní numerické typy
FLOAT (reálné, parametrizované event. p) REAL (reálné, s pevnou přesností danou implementací) DOUBLE PRECISION (reálné, s pevnou přesností danou implementací, ale větší než REAL) znakové řetězce CHARACTER(n) (délka n, zprava mezery) CHARACTER VARYING(n) (max.délka n) J. Pokorný

21 Příklad . . . CREATE TABLE KINA . . . CREATE TABLE PŘEDSTAVENÍ
(Nazev_k Char_Varying(20) NOT NULL, Jmeno_f Char_Varying(20) NOT NULL, Datum Date NOT NULL, PRIMARY KEY (Nazev_k, Jmeno_f), FOREIGN KEY (Nazev_k) REFERENCES KINA, FOREIGN KEY (Jmeno_f) REFERENCES FILMY); Pz.: Tabulka v SQL nemusí mít primární klíč! J. Pokorný

22 Indexy v SQL nadrelační rys,
podpora přístupových cest k datům v dotazu index obyčejný a typu cluster Pozor: rozdíl od 2 indexů na Jméno a Adresa CREATE INDEX Idx_zak_jm_adr ON ZÁKAZNÍCI (Jméno, Adresa) J. Pokorný

23 Klastrovaný vs. neklastrovaný index
(Indexový soubor) klastrovaný neklastrovaný seznamy ukazatelů seznamy ukazatelů řádky relace (relace) řádky relace J. Pokorný


Stáhnout ppt "Databázové jazyky Jaroslav Pokorný FI BVŠP Bratislava"

Podobné prezentace


Reklamy Google