Petr Krajča. Katedra informatiky Univerzita Palackého v Olomouci. Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, / 37

Podobne dokumenty
LBF/ZUB22 Programové vybavení ordinace zubního lékaře. Mgr. Markéta Trnečková, Ph.D. Palacký University, Olomouc

Úvodní informace. 18. února 2019

Aproximace funkcí 1,00 0,841 1,10 0,864 1,20 0,885. Body proložíme lomenou čarou.

Komplexní analýza. Martin Bohata. Katedra matematiky FEL ČVUT v Praze Martin Bohata Komplexní analýza Mocninné řady 1 / 18

Edita Pelantová, katedra matematiky / 16

Kristýna Kuncová. Matematika B2 18/19

PA152,Implementace databázových systémů 2 / 25

1 Soustava lineárních rovnic

Obsah Atributová tabulka Atributové dotazy. GIS1-2. cvičení. ČVUT v Praze, Fakulta stavební, katedra mapování a kartografie

Kristýna Kuncová. Matematika B3

Reprezentace dat. BI-PA1 Programování a Algoritmizace I. Ladislav Vagner

Martin Pergel. 26. února Martin Pergel

MATEMATIKA 3. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

Automatové modely. Stefan Ratschan. Fakulta informačních technologíı. Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Numerické metody minimalizace

Matematika (KMI/PMATE)

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Język SQL, zajęcia nr 1

Funkce zadané implicitně. 4. března 2019

(1) Derivace. Kristýna Kuncová. Matematika B2 17/18. Kristýna Kuncová (1) Derivace 1 / 35

Internet a zdroje. (Zdroje na Internetu) Mgr. Petr Jakubec. Katedra fyzikální chemie Univerzita Palackého v Olomouci Tř. 17.

Inverzní Z-transformace

Kristýna Kuncová. Matematika B2

Elementární funkce. Edita Pelantová. únor FJFI, ČVUT v Praze. katedra matematiky, FJFI, ČVUT v Praze

ggplot2 Efektní vizualizace dat v prostředí jazyka R Martin Golasowski 8. prosince 2016

Linea rnı (ne)za vislost

5. a 12. prosince 2018

Katedra aplikované matematiky FEI VŠB Technická univerzita Ostrava

Necht je funkce f spojitá v intervalu a, b a má derivaci v (a, b). Pak existuje bod ξ (a, b) tak, že f(b) f(a) b a. Geometricky

Simple Features. Úvod do problematiky, geodatabáze, OGC Simple Features. Martin Landa

Numerické metody 8. května FJFI ČVUT v Praze

Euklidovský prostor. Funkce dvou proměnných: základní pojmy, limita a spojitost.

Vybrané kapitoly z matematiky

(13) Fourierovy řady

TGH01 - Algoritmizace

podle přednášky doc. Eduarda Fuchse 16. prosince 2010

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Diferenciální rovnice základní pojmy. Rovnice se

TGH01 - Algoritmizace

Matematika III Stechiometrie stručný

Komplexní analýza. Martin Bohata. Katedra matematiky FEL ČVUT v Praze Martin Bohata Komplexní analýza Úvod 1 / 32

Kapitola 4: Soustavy diferenciálních rovnic 1. řádu

Algebra I Cvičení. Podstatná část příkladů je převzata od kolegů, jmenovitě Prof. Kučery, Doc. Poláka a Doc. Kunce, se

Wykład 05 Bazy danych

Pojem množiny nedefinujeme, pouze připomínáme, že množina je. Nejprve shrneme pojmy a fakta, které znáte ze střední školy.

Stochastické modelování v ekonomii a financích Konzistence odhadu LWS. konzistence OLS odhadu. Předpoklady pro konzistenci LWS

Jerzy Nawrocki, Wprowadzenie do informatyki

Bazy danych 7. SQL podstawy

Cauchyova úloha pro obyčejnou diferenciální rovnici

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

1 Definice. A B A B vlastní podmnožina. 4. Relace R mezi množinami A a B libovolná R A B. Je-li A = B relace na A

Geometrická nelinearita: úvod

Obsah: CLP Constraint Logic Programming. Úvod do umělé inteligence 6/12 1 / 17

Co nám prozradí derivace? 21. listopadu 2018

Matematika 2, vzorová písemka 1

Expresivní deskripční logiky

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Katedra kybernetiky skupina Inteligentní Datové Analýzy (IDA) Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti

Co to jest Baza Danych

Operace s funkcemi [MA1-18:P2.1] funkční hodnota... y = f(x) (x argument)

Projektowanie systemów baz danych

Podstawowe informacje o bazach danych. Technologie Informacyjne

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Obsah. Petr Hasil. (konjunkce) (disjunkce) A B (implikace) A je dostačující podmínka pro B; B je nutná podmínka pro A A B: (A B) (B A) A (negace)

Matematika prˇedna sˇka Lenka Prˇibylova 7. u nora 2007 c Lenka Prˇibylova, 200 7

Ref. 7 - Język SQL - polecenia DDL i DML

Platforma pro analýzu, agregaci a vizualizaci otevřených dat souv

DFT. verze:

Bazy danych 5. Samozłaczenie SQL podstawy

Matematika 1 Jiˇr ı Fiˇser 24. z aˇr ı 2013 Jiˇr ı Fiˇser (KMA, PˇrF UP Olomouc) KMA MAT1 24. z aˇr ı / 52

Průvodce studiem V této kapitole se budeme zabývat diferenciálním počtem pro funkce více

Logika V. RNDr. Kateřina Trlifajová PhD. Katedra teoretické informatiky Fakulta informačních technologíı BI-MLO, ZS 2011/12

XML data na disku jako databáze

Univerzita Karlova v Praze Matematicko-fyzikální fakulta

Anna Kratochvílová Anna Kratochvílová (FJFI ČVUT) PDR ve zpracování obrazu / 17

Powyższe reguły to tylko jedna z wersji gry. Istnieje wiele innych wariantów, można też ustalać własne zasady. Miłej zabawy!

Aspekty aktywne baz danych

Hurtownia Świętego Mikołaja projekt bazy danych

Plan bazy: Kod zakładający bazę danych: DROP TABLE noclegi CASCADE; CREATE TABLE noclegi( id_noclegu SERIAL NOT NULL,

Obsah. Zobrazení na osmistěn. 1 Zobrazení sféry po částech - obecné vlastnosti 2 Zobrazení na pravidelný konvexní mnohostěn

BAZA DANYCH SIECI HOTELI

Paweł Rajba

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Statistika (KMI/PSTAT)

B0B99PRPA Procedurální programování

(2) Funkce. Kristýna Kuncová. Matematika B2. Kristýna Kuncová (2) Funkce 1 / 25

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Tworzenie baz danych i tabel

Laplaceova transformace

MATEMATIKA 3 NUMERICKÉ METODY. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

Kristýna Kuncová. Matematika B2 18/19. Kristýna Kuncová (1) Vzorové otázky 1 / 36

Kombinatorika a grafy I

Informatyka (5) SQL. dr inż. Katarzyna Palikowska Katedra Transportu Szynowego p. 4 Hydro

SQL w praktyce. Miłej i owocnej nauki!!!

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

Transkrypt:

Databázové systémy Relační Model Petr Krajča Katedra informatiky Univerzita Palackého v Olomouci Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 1 / 37

Organizační informace email: petr.krajca@upol.cz konzultační hodiny úterý 12:00 13:30, pátek 13:15 14:45 (termíny dle rozvrhu) www: http://phoenix.inf.upol.cz/~krajca/ slidy budou k dispozici online Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 2 / 37

Literatura Hronek J. Databázové systémy. 2007 Date C.J. Relational theory for computer professionals. O Reilly, 2013. Date C.J. An introduction to database systems. Pearson Addison Wesley, 2004. Date C.J. SQL and Relational Theory: How to Write Accurate SQL Code. O Reilly, 2011. Garcia-Molina, H. Ullman J.D., Widom J. Database Systems: The Complete Book, Prentice Hall, 2008. Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 3 / 37

Plán přednášek 1 Základní pojmy, modely dat. Relační databázové systémy: relační model dat, základní pojmy (atributy, domény, ntice, relační schémata, relace). SQL: domény, tabulky. 2 Operace relační algebry: množinové operace, projekce, selekce, dělení, spojení a jeho typy. Vzájemné vztahy relačních operací.sql: SELECT, pohledy. 3 Fyzická organizace dat, zpracování dotazu. Systém řízení báze dat: služby, architektura, transakční zpracování dat, uzamykací protokoly. SQL: indexy, explain. 4 Konceptuální modelování, návrh relační databáze, normalizace. Referenční integrita v relačním modelu dat. Funkční závislosti: definice, pravdivost v datech, modely, sémantické vyplývání. 5 Spolupráce SQL s jinými jazyky (Java, C#, PHP). Procedury a triggery. Prostředky pro administraci relačního databázového systému. Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 4 / 37

Co je databázový systém? databáze kolekce perzistentních dat používaných aplikacemi nějakého subjektu perzistentní data přetrvají proces, který je vytvořil např. subjekt = výrobní podnik, aplikace = skladové hospodářství databázový systém systém pro organizaci, definici, manipulaci a dotazování nad perzistentními daty, který lze popsat jako množinu algoritmů pracujících s daty v určeném tvaru často chápán dvojím způsobem: 1 jako teorie, tj. formální model (přesně definovaný, a který lze zkoumat) 2 jako konkrétní softwarová implementace vycházející z teorie, viz bod 1 Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 5 / 37

Co je model dat? (formální) model dat Množina abstraktních a soběstačných formálních definic datových struktur a operací s daty (případně dalších operací, omezení, apod.), které dohromady tvoří formální výpočetní model, se kterým mohou uživatelé interagovat. existuje několik různých formálních modelů je potřeba rozlišovat formální model a jeho implementaci model dat (určitého subjektu) přesněji: model databáze návrh nebo implementace organizace dat určitého subjektu např. návrh organizace dat skladové hospodářství subjektu firma Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 6 / 37

Kategorie jazyků související s formálními modely dotazovací jazyk (query language, QL) jazyk pro vyjadřování dotazů pro získávání dat z databáze jazyk pro definici dat (data definition language, DDL) jazyk pro popis typu a struktury dat, která budou v databázi uložena jazyk pro modifikaci dat (data modification language, DML) jazyk pro vkládání, aktualizaci a mazání dat v databázi Poznámky: jazyky používají (typicky) uživatelé různých roĺı: administrátor databáze jazyk pro definici dat uživatel dotazovací jazyk, jazyk pro modifikaci dat k jednomu formálnímu modelu může existovat více jazyků dané kategorie (např. pro relační model existuje SQL, QUEL, Tutorial D,... ) Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 7 / 37

Systém řízení báze dat (SŘBD) Systém řízení báze dat (Database Management system, DBMS) = programový celek implementující databázový systém vycházející z určitého formálního modelu dat a poskytující následující služby. souběžný víceuživatelský přístup k databázi (neblokované zpracování dotazů) transakční zpracování dat (atomicita, konzistence, izolace, trvalost) perzistentní uložení dat a zotavení z chyb integritní omezení (prevence nekonzistentních dat) bezpečnost přístupu k datům (autorizace)... Poznámky: složitost implementace SŘBD na úrovni OS menší SŘBD neposkytují všechny uvedené fce. SŘBD typicky funguje bud jako (sít ová) služba nebo jako knihovna (embedded) Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 8 / 37

Přehled paradigmat souborový model (1955) nejstarší, data uložena jako množina záznamů stejného typu v souboru sít ový model (1969) grafový pohled na schéma databáze (dnes Neo4j) hierarchický model (1960) zjednodušení sít ového modelu, grafy jsou nahrazeny stromy (dnes renesance v podobě,,xml databází ) relační model (1969) dnes mainstream, založen na pojmu n-ární relace, s úzkou vazbou na logiku objektové modely (1989) mnoho modelů, perzistentní uložení objektů, obvykle omezené možnosti dotazovaní relačně/objektové modely (1990) více návrhů, pokusy o rozšíření rel. modelu o objekty další key-value databáze, dokumentové databáze (semistrukturovaná data), XML databáze,... NoSQL databáze = buzzword pro nerelační databáze Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 9 / 37

Relační model dat E.F.Codd. A Relational Model of Data for Large Shared Data Banks. 1969. Charakteristika jeden typ databázových objektů relace formální protějšek pojmu,,datová tabulka formalizuje základní data, výsledky dotazů, vztahy mezi daty dobrý teoretický model, který lze efektivně implementovat manipulativní formalismy dotazovací formalismy odpočátku formalizuje související fenomény (závislosti v datech, normalizace) integritní omezení logická nezávislost Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 10 / 37

Implementace relačního modelu RM implementuje velká řada SŘBD žádný (produkčně použitelný) SŘBD neimplementuje čistý RM Komerční řešení Oracle (Oracle), SQL Server (Microsoft), DB2 (IBM), Informix (IBM),... robustní software, ověřený, s podporou, nevýhodou je cena a uzavřenost systémů Otevřená řešení PostgreSQL: vyzrálý databázový systém, velké množství funkcí, široké možnosti programování MariaDB: fork MySQL (vícerůzných způsobů uložení dat) SQLite: embedded databáze (nepotřebuje server) Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 11 / 37

Relační model dat (C.J.Date & H.Darwen) Pět komponent 1 kolekce skalárních typů zahrnující typ pravdivostní hodnota (boolean) 2 systém pro generování relačních typů 3 prostředky pro definici relačních proměnných daných relačních typů 4 operátor pro relační přiřazení, tj. přiřazení hodnot relačním proměnným 5 kolekce generických relačních operací pro vyjadřování relací z jiných relací Poznámky kolekce skalárních typů a relačních operací jsou,,otevřené (ne pevně dané) relace = hodnoty; relační proměnné = jména (na něž jsou navázány relační hodnoty) definicie dat (1, 2, 3), modifikace (4, 5), dotazování (3, 5) Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 12 / 37

Relační model neformálně Neformálně lze chápat (instanci) relační databáze jako kolekci pojmenovaných datových tabulek (s množinou integritních omezení). Datová tabulka: 1 záhlaví (metadata) jména sloupců typy hodnot ve sloupcích 2 tělo (data) skládá se z řádků (n-tic hodnot) průsečíky řádků a sloupců obsahují hodnoty name id age Alice 123 20 Bob 456 30 Chuck 789 15 Poznámky: ne každá tabulka splňující předchozí popis je,,uspokojivou strukturou v RM cílem je používat tabulky, které jsou formalizované jako n-ární relace Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 13 / 37

Požadavky na tabulky A table is in first normal form (1NF) equivalently, such a table is normalized if and only if it s a direct and faithful representation of some relation. C.J.Date První normální forma (1NF) Tabulka je v první normální formě, pokud splňuje všechny následující podmínky: 1 neuvažuje se žádné uspořádání řádků (shora-dolů) 2 neuvažuje se žádné uspořádání sloupců (zleva-doprava) 3 v tabulce se nevyskytují duplicitní řádky 4 v každém vnitřní poli tabulky je právě jedna hodnota daného typu 5 všechny atributy jsou regulární (neobsahují žádnou skrytou informaci, která je dostupná pouze prostřednictvím speciálních funkcí) Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 14 / 37

Alternativní (chybné) chápání 1.NF V literatuře bývá uváděna (pseudo)definice: Tabulka je 1NF, pokud jsou všechny její hodnoty atomické. Problémy Co je to,,atomická hodnota? problém s řetězci, multimédii,... nepokrývá patologické případy (duplicitní řádky, absence hodnot) postranní úmysly definice (např. zamezení vnořených tabulek ) Námi používaná definice: Darwen, Hugh. Relation-Valued Attributes; or, Will the Real First Normal Form Please Stand Up?, in C. J. Date and Hugh Darwen, Relational Database Writings 1989-1991 (Addison-Wesley, 1992). Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 15 / 37

Základní pojmy RM: Atribut Atribut = symbolické jméno. Množinu všech atributů, o které předpokládáme, že je konečená a spočetná, označujeme Y. Poznámky: (intuitivně) atribut je jméno, které může být použito pro označení sloupce datové tabulky syntaktický pojem (nemá hodnotu) značení: y, y 1, y 2,... (obecné označení v rámci RM), foo, id, name,... (konkrétní atributy) Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 16 / 37

Základní pojmy RM: Typ (doména) Typ = pojmenovaná (nejvýše spočetná) množina elementů (hodnot). Poznámky: RM je silně typový, každý atribut (relace, atd.) má přiřazen svůj typ. ekvivalentní název pro typ je doména někdy uvažován rozdíl doména množina konkrétních hodnot (sémantický pojem) typ symbolické jméno pro doménu (syntaktický pojem) rozlišitelnost hodnot hodnoty stejného typu lze porovnat =. Hodnoty různých typů nelze porovnat! Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 17 / 37

Základní pojmy RM: Relační schéma Relační schéma je konečná množina R = { y 1, τ 1,..., y n, τ n }, kde y 1,..., y n jsou vzájemně různé atributy z Y a τ 1,..., τ n jsou typy. Poznámky: formalizace pojmu záhlaví datové tabulky relační schéma představuje typ relace (relační typ) značení: R, R 1, R 2,..., S 1, S 2,... relační schéma může být prázdné Dohoda o značení: Pokud typ vyplývá jednoznačně z kontextu, pak relační schémá ztotožňujeme s konečnými podmnožinami R Y doménu (typ) atributu y Y značíme D y Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 18 / 37

Opakování pojmů množina chápeme intuitivně (budeme uvažovat nejvýše spočetné) uspořádaná dvojice a, b (naivní) kartézský součin A B je množina všech uspořádaných dvojic takových, že A B = { a, b a A, b B} relace mezi množinami A a B je libovolná podmnožina A B zobrazení je množina f A B taková, že pro každý prvek a A existuje právě jedno b B tak, že a, b f, což značíme f(a) = b Poznámka: fakt, že f A B je zobrazení píšeme f : A B Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 19 / 37

Obecný kartézský součin Mějme systém množin A i, které jsou indexovány prvky z množiny I (tzv. indexy). Kartézský součin množin A i (i I) je množina i I A i všech zobrazení f : I i I A i takových, že f(i) A i platí pro každý index i I. Každé zobrazení f i I A i se nazývá n-tice (angl. tuple). Poznámky: pro f i I A i se f(i) A i nazývá hodnota i v n-tici f pokud je I = {1,..., n}, pak lze psát n i=1 A i indexy z I nemají žádné pořadí Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 20 / 37

Kartézský součin (příklad) I = {1, 2, 3}, A 1 = {a, b, c}, A 2 = {5, 6, 7, 8}, A 3 = {α, β} i IA i = {{ 1, a, 2, 5, 3, α }, { 1, b, 2, 5, 3, α }, { 1, c, 2, 5, 3, α }, { 1, a, 2, 5, 3, β }, { 1, b, 2, 5, 3, β }, { 1, c, 2, 5, 3, β }, { 1, a, 2, 6, 3, α }, { 1, b, 2, 6, 3, α }, { 1, c, 2, 6, 3, α }, { 1, a, 2, 6, 3, β }, { 1, b, 2, 6, 3, β }, { 1, c, 2, 6, 3, β }, { 1, a, 2, 7, 3, α }, { 1, b, 2, 7, 3, α }, { 1, c, 2, 7, 3, α }, { 1, a, 2, 7, 3, β }, { 1, b, 2, 7, 3, β }, { 1, c, 2, 7, 3, β }, { 1, a, 2, 8, 3, α }, { 1, b, 2, 8, 3, α }, { 1, c, 2, 8, 3, α }, { 1, a, 2, 8, 3, β }, { 1, b, 2, 8, 3, β }, { 1, c, 2, 8, 3, β }} Každá množina { 1,..., 2,..., 3,... } reprezentuje jedno zobrazení f : {1, 2, 3} {a, b, c, 5, 6, 7, 8, α, β} takové, že f(1) {a, b, c}, f(2) {5, 6, 7, 8}, f(3) {α, β}. Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 21 / 37

Základní pojmy RM: Relace nad relačním schématem Mějme relační schéma R Y a necht D y (y Y ) označuje domény atributů y R. Relace D nad relačním schématem R je libovolná konečná podmnožina y R D y. Číslo D se nazývá velikost relace D. Číslo R se nazývá stupeň relace D. Poznámky: značení: D, D 1,... y R D y kartézský součin domén (indexy jsou atributy) r y R D y je n-tice, r(y) je prvek z D y n-tice reprezentuje řádek v tabulce odpovídající D tabulka je v 1NF p.k. reprezentuje relaci na relačním schématu nulární relace (stupeň 0), unární relace (stupeň 1), binární relace (stupeň 2),... Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 22 / 37

Základní pojmy RM: Relace nad relačním schématem (příklad) A = {1, 2,...} (množina přirozených čísel) B = {single, married, divorced, widowed} (doména nominálních hodnot) C množina všech řetězců nad abecedou znaků Příklad ternární relace A B C { 3, single, Alice, 2, married, Bob, 3, married, Chuck, 4, divorced, David } A B C Příklad relace na relačním schématu Pokud chápeme A, B, C jako domény atributů CHILDREN, STATUS a NAME, pak lze předchozí formalizovat jako relaci {t 1, t 2, t 3, t 4 } na schématu R = { CHILDREN, STATUS, NAME }, kde t 1 (CHILDREN) = 3 t 1 (STATUS) = single t 1 (NAME) = Alice t 2 (CHILDREN) = 2 t 2 (STATUS) = married t 2 (NAME) = Bob t 3 (CHILDREN) = 3 t 3 (STATUS) = married t 3 (NAME) = Chuck t 4 (CHILDREN) = 4 t 4 (STATUS) = divorced t 4 (NAME) = David Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 23 / 37

Vizualizace relace Relace z předchozího příkladu jako tabulka: CHILDREN NAME STATUS 3 Alice single 2 Bob married 3 Chuck married 4 David divorced NAME CHILDREN STATUS Chuck 3 married Alice 3 single David 4 divorced Bob 2 married Množinová reprezentace D = {{ CHILDREN, 3, STATUS, single, NAME, Alice }, { CHILDREN, 2, STATUS, married, NAME, Bob }, { CHILDREN, 3, STATUS, married, NAME, Chuck }, { CHILDREN, 4, STATUS, divorced, NAME, David }} Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 24 / 37

Relační proměnná Relační proměnná daného typu je (perzistentní) proměnná, která může nabývat hodnot, jimiž jsou relace daného typu. (Formalizace jména tabulky v RM.) Rozlišujeme 1 základní relační proměnné mají definovaný (relační) typ množinu kĺıčů 2 pohledy hodnoty vznikají vyhodnocením výrazů v daném čase jejich typ je určen typem relačního výrazu Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 25 / 37

Kĺıč základní relační proměnné a relační přiřazení Uvažujme relační proměnnou X typu R = {y 1,... y n }. Množina kĺıčů proměnné X je libovolná neprázdná množina {K 1,..., K n }, jejíž prvky jsou podmnožiny R a splňují podmínku, že K i K j pro každé i j. Relační přiřazení Mějme relační proměnnou X typu R a necht {K 1,..., K n } je množina kĺıčů proměnné X. Pak relaci D typu R lze přiřadit jakoho hodnotu proměnné X, pokud je splněna podmínka, že pro každé i = 1,... n a libovolné r 1, r 2 D platí: Pokud r 1 (y) = r 2 (y) pro každý y K i, pak r 1 = r 2. V opačném případě říkame, že D porušuje integritní omezení dané některým kĺıčem X. Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 26 / 37

Jazyk SQL Structured Query Language (SQL), 1974. deklarativní jazyk s procedurálními prvky, syntaxe,,bĺızká běžné angličtině Významné rysy SQL široká škála skalárních typů (numerické, řetězcové, pole, kompozitní,... ) protějšky relačních proměnných a relací (tabulky a jejich obsah) kĺıče: primarní kĺıč (jeden zvolený), nemusí být přítomen relace nejsou elementy prvního řádu odchyluje se od RM (nepodporuje jej, jde za jeho hranice) Implementace SQL podpora ve vetšině SŘBD standardizován (ANSI/ISO) jednotlivé implementace se přesto navzájem liší Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 27 / 37

SQL: Datové typy (1/2) SMALLINT 2 bytové celé číslo se znaménkem (-32768 až +32767) INTEGER nebo int 4 bytové celé číslo se znaménkem (-2147483648 až +2147483647) BIGINT 8 bytové celé číslo se znaménkem NUMERIC(pocet-cifer,pocet-desetin-mist) slouží k práci s čísly s přesně definovanou přesností. pocet-cifer celkový počet cifer v daném čísle (před i za desetinnou čárkou) pocet-desetin-mist udává počet cifer za desetinnou čárkou např. NUMERIC(6,2) umožňuje přesně pracovat s čísly ve tvaru 1234.56 REAL, DOUBLE PRECISION typy odpovídající číslům s plovoucí řádovou čárkou podle normy IEEE 754, tj. typům float a double z jazyka C. Pozor U datových typů dle IEEE 754 není zaručena přesnost a nejsou proto vhodné pro ukládání dat, kde na přesnosti záleží, typicky u finančních operací!!! Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 28 / 37

SQL: Datové typy (2/2) VARCHAR(n) řetezec proměnlivé velikosti mající maximálně n znaků CHAR(n) řetezec pevné velikosti mající právě n znaků (chybějící znaky jsou doplněny mezerami) BOOLEAN pravdivostní hodnoty (t, f) DATE, TIME, TIMESTAMP datové typy pro reprezentaci data, času a data + času... Definice vlastního typu/domény CREATE DOMAIN Salary /* nazev typu */ AS NUMERIC(10, 2) /* puvodni typ */ DEFAULT 0 /* implicitni hodnota */ NOT NULL /* nepovoli hodnoty NULL */ CHECK (VALUE > 0); /* podminka pro hodnoty */ Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 29 / 37

SQL: Vytvoření tabulky (1/2) CREATE TABLE tabulka (sloupec1 typ-dat /* vlastnosti-sloupce */, sloupec2 typ-dat /* vlastnosti-sloupce */,..., sloupecn typ-dat /* vlastnosti-sloupce */, /* omezeni-pro-vice-sloupcu */); typ-dat viz předchozí slidy vlastnosti-sloupce: NOT NULL daný sloupec nesmí obsahovat hodnotu NULL (doporučuje se NULL vyhnout) UNIQUE hodnoty v daném sloupci musí být unikátní (tj. nesmí se opakovat) PRIMARY KEY určuje, že daný sloupec je primární kĺıč, tj. umožňuje jednoznačně identifikovat daný řádek (odpovídá UNIQUE NOT NULL) DEFAULT hodnota definuje implicitní hodnotu pro daný sloupec, pokud není uvedeno, bere se jako implicitní hodnota NULL CHECK podminka určuje podmínku, kterou musí hodnota v daném sloupci splňovat Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 30 / 37

SQL: Vytvoření tabulky (2/2) omezeni-pro-vice-sloupcu UNIQUE (sloupec1,..., sloupecn) udává, že hodnoty v daných sloupcích musí být unikátní (tj. nesmí se opakovat) PRIMARY KEY (sloupec2,..., sloupecn) dané sloupce tvoří primární kĺıč, tj. umožňují jednoznačně identifikovat daný řádek CHECK podminka umožňuje deklarovat podmínku, platící pro více sloupců Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 31 / 37

SQL: Vytvoření tabulky (příklady) CREATE TABLE zamestnanci (jmeno VARCHAR(30) PRIMARY KEY, vek INT NOT NULL CHECK (vek > 0), plat Salary, uvazek NUMERIC(3, 2) NOT NULL DEFAULT 1 CHECK ((uvazek > 0) AND (uvazek < 2)), funkce VARCHAR(20)); CREATE TABLE domy (ulice VARCHAR(40), cislo_popisne INT CHECK (cislo_popisne > 0), mesto VARCHAR(20), pocet_obyvatel INT, PRIMARY KEY (ulice, cislo_popisne, mesto)); Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 32 / 37

SQL: Práce s daty vkládání INSERT INTO tabulka (sloupec1, sloupec2,..., sloupecn) VALUES (hodnota1, hodnota2,..., hodnotan); seznam sloupců lze vynechat, v takovém případě se předpokládá, že budou zadány hodnoty pro všechny sloupce v pořadí, jak byly sloupce zadány příkazem CREATE TABLE v seznamu sloupců je možné některé sloupce vynechat, v takovém případě se pro daný sloupec použije,,defaultní hodnota, byla-li zadána, nebo hodnota NULL je možné vložit několik řádků pomocí jednoho příkazu INSERT, časti VALUES jsou jednotlivé řádky odděleny čárkami Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 33 / 37

SQL: Práce s daty vkládání (příklady) /* uplny priklad */ INSERT INTO zamestnanci (jmeno, vek, plat, uvazek, funkce) VALUES ( Tomas Pech, 67, 50000, 1.2, Manager ); /* vice radku na jednou */ INSERT INTO zamestnanci (jmeno, vek, plat, uvazek, funkce) VALUES ( Jan Novak, 40, 16789.20, 0.8, Manager ), ( Petr Klic, 37, 23100, 0.5, Udrzbar ); /* pro sloupec uvazek se pouzije implicitni hodnota */ INSERT INTO zamestnanci (jmeno, vek, funkce, plat) VALUES ( Tomas Marny, 20, Kreativec, 15000); /* chybi vycet sloupcu */ INSERT INTO zamestnanci VALUES ( Ronald McDonald, 30, 100000, 1.0, CEO ); Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 34 / 37

SQL: Práce s daty aktualizace UPDATE tabulka SET sloupec1 = vyraz1 [, sloupec2 = vyraz2,... ]; aktualizuje všechny řádky tabulky tak, že sloupec1 bude mít hodnotu vyrazu1, sloupec2 bude roven vyrazu2,... UPDATE tabulka SET sloupec1 = vyraz1 [, sloupec2 = vyraz2,... ] WHERE podminka; chová se stejně jako předchozí tvar, jen aktualizuje řádky splňující danou podmínku Příklady /* nastavi generalnimu rediteli plat 200 tis. */ UPDATE zamestnanci SET plat = 200000 WHERE funkce = CEO ; /* zvysi vsem zamestnancum plat o 10% */ UPDATE zamestnanci SET plat = plat * 1.10; /*vsem zamestnancum nad 50 let a jsou ve funkci Manager, zdvojnasobi plat a UPDATE zamestnanci SET plat = plat * 2, funkce = Senior Manager WHERE (vek > 50) AND (funkce = Manager ); Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 35 / 37

SQL: Práce s daty odstranění řádků DELETE FROM tabulka; odstraní z tabulky všechny řádky DELETE FROM tabulka WHERE podminka; odstraní řádky splňující danou podmínku Příklad DELETE FROM zamestnanci WHERE vek > 50; Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 36 / 37

SQL: Práce s daty získání úplného obsahu tabulky SELECT * FROM tabulka; Příklad SELECT * FROM zamestnanci; jmeno vek plat uvazek funkce -----------------+-----+-----------+--------+----------- Tomas Pech 67 50000.00 1.20 Manager Jan Novak 40 16789.20 0.80 Manager Petr Klic 37 23100.00 0.50 Udrzbar Tomas Marny 20 15000.00 1.00 Kreativec Ronald McDonald 30 100000.00 1.00 CEO (5 rows) pokračování příšte... Petr Krajča (UP) KMI/YDATA: Přednáška I. 5. říjen, 2018 37 / 37