Aplikační a programové vybavení

Slides:



Advertisements
Podobné prezentace
Aplikační a programové vybavení
Advertisements

Tabulky v MS ACCESS Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Jiří Novák.
Základy jazyka SQL Jan Tichava
Přednáška č. 1 Úvod, Historie zpracování dat, Základní pojmy
SQL: DDL v ORACLE CREATE TABLE jméno_tabulky (atribut datový_typ [DEFAULT][attribut_constraint] [, atribut datový_typ [DEFAULT] [attribut_constraint]],...
Aplikační a programové vybavení
Jazyk SQL Ing. Zdena DOBEŠOVÁ. SQL Structured Query Language 1974 SEQUEL (Structured English Query Language) neprocedurální relační dotazovací jazyk norma.
Databáze.
Fakulta elektrotechniky a informatiky
Další dotazy SQL Structured Query Language. Některé SQL příkazy mohou mít v sobě obsaženy další kompletní příkazy SELECT. Využijeme je tam, kde potřebujeme.
Informatika pro ekonomy II přednáška 11
Databázové systémy 1 Cvičení č. 2 Fakulta elektrotechniky a informatiky Univerzita Pardubice.
1 BUMI Úvod do medicínské informatiky Počítačové cvičení č. 3 Ing. Vratislav Čmiel.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
SQL Lukáš Masopust Historie  Předchůdcem databází byly papírové kartotéky  děrný štítek  1959 konference  1960 – vytvořen jazyk COBOL.
Martin Kirschbaum 4.A,  určitá uspořádaná množina informací (dat) uložená na paměťovém médiu  Databázový program - umožňuje tvořit, editovat,
1IT Relační datový model
Databáze Jiří Kalousek.
MySQL - Vytvoření nové tabulky  create table jméno_tabulky (jméno_položky typ_položky,... ) Přehled nejběžnějších datových typů Přehled nejběžnějších.
Databázové systémy Štěpán Šípal.
Databáze Úvod.
Analýza informačního systému
Databázové systémy II Přednáška č. 8 – Pohledy (Views)
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
Databázové systémy teorie a návrh relačních databázových systémů část II.
Relační databáze.
1IT D OTAZOVACÍ JAZYKY V RELAČNÍCH DATABÁZÍCH Ing. Jiří Šilhán.
Konceptuální návrh databáze
Vypracoval: Ondřej Dvorský Třída: VIII.A
KIV/ZIS cvičení 6 Tomáš Potužák. Pokračování SQL Klauzule GROUP BY a dotazy nad více tabulkami Stáhnout soubor studenti_dotazy_sql.mdb.
Informatika pro ekonomy II přednáška 10
Databázové systémy I Cvičení č. 6 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2013.
Databázové systémy Přednáška č. 6.
SQL – základní pojmy Ing. Roman Danel, Ph.D.
SQL PVA Jan Hora. SQL „graficky“ Grafický vs. pravý SQL SELECT ORDED BY WHERE.
Rauer Luboš Kopic Petr Blažek Tomáš. Structured Query Language - dotazovací jazyk -> pracuje s dotazy - neprocedurální jazyk - mocný, ale přitom jednoduchý.
Cvičení.
XML Schema Irena Mlýnková. Obsah XML – úvod, příklad, základní pojmy DTD – přehled XML Schema – podrobně.
Architektury a techniky DS Cvičení č. 9 RNDr. David Žák, Ph.D. Fakulta elektrotechniky a informatiky
Aplikační a programové vybavení
Konceptuální návrh databáze
Databázové modelování
Databázové systémy Relační model.
Informatika II PAA DOTAZOVACÍ JAZYKY
Databáze teorie.
Aplikační a programové vybavení
Databázové systémy Informatika pro ekonomy, př. 18.
Obchodní akademie, Ostrava-Poruba, příspěvková organizace Vzdělávací materiál/DUM VY_32_INOVACE_01B13 Autor Ing. Jiří Kalousek Období vytvoření březen.
Základní obeznámení s jazykem SQL Databázové systémy.
Databázové Aplikace Slidy ke cvičení DBI026, část 3 KSI MFF UK Verze
Analýza informačního systému. Podrobně zdokumentovaný cílový stav Paramentry spojené s provozem systému – Cena – Přínosy – Náklady a úspory – …
Teorie zpracování dat RELAČNÍ DATOVÝ MODEL.
Databázové systémy Datové modely.
Lišta nástrojů Standard otevření, uložení a další manipulace se soubory (tj. projekty) načítání dat (mapových vrstev) „žluté plus“ změna měřítka odkaz.
Databázové systémy Úvod, Základní pojmy. Úvod S rozvojem lidského poznání roste prudce množství informací. Jsou kladeny vysoké požadavky na ukládání,
Perzistence XML dat Kamil Toman
DATABÁZE.
Úvod do databází zkrácená verze.
● Databaze je soubor dat,slouží pro popis reálného světa(např.evidence čkolní knihovny..) ● Relační databaze je databáze založená na relačním modelu.
Základy RA RA = matematický základ pro relační modul DBS jazyk SQL Relační DBS = Relační algebra + Relační model Doména = množina hodnot stejného typu/významu.
Datové typy MS Access (3). Projekt: CZ.1.07/1.5.00/ OAJL - inovace výuky Příjemce: Obchodní akademie, odborná škola a praktická škola pro tělesně.
Unix a Internet 9. SQL server
SQL – příkaz SELECT Ing. Roman Danel, Ph.D.
Dotazovací jazyk SQL I.
Informatika pro ekonomy přednáška 8
Databázové systémy a SQL
Počítačová cvičení z předmětu Datové sklady #1 Relační model dat
Relační model databáze
Databázové jazyky Jaroslav Pokorný FI BVŠP Bratislava
Databázové systémy a SQL
Transkript prezentace:

Aplikační a programové vybavení Databáze – jazyk SQL (úvod)

Relace – definice Množina n-tic ve tvaru (a1, a2, a3, ..., an) ai – hodnota atributu v dané n-tici, ai in Di Di – doména atributu (množina hodnot, kterých může atribut nabývat) Ai – jméno i-tého atributu (textový řetězec) Příklad: OSOBA(RČ: STRING, VĚK: INTEGER, JMÉNO: STRING) klíč atribut je podtržen domény není povinné uvádět n-tice – to je třeba dvojice, trojice,... Neplést s entitou. Z toho, že je relace množina vyplývá, že muže obsahovat každý prvek pouze jednou (všimněte si, že tento požadavek se bude dále mnohokrát opakovat při definici tabulky). Relační algebra je teoretickým základem relačních databázových systémů, takže ji nesmíme opomenout, nicméně podrobnostmi se zabývají předměty Databázové systémy a Databázové systémy II.

Relace Na chvíli budeme předpokládat, že platí: relace – tabulka schéma / relační schéma – jméno a záhlaví tabulek (definice tabulek) pojmy relace, schéma a tabulka jsou v praxi často zaměňovány, ale neznamenají totéž prvek relace – řádek tabulky atribut – sloupec tabulky doména atributu – datový typ sloupce tabulky příklad: OSOBA(RČ: STRING, VĚK: INTEGER, JMÉNO: STRING) OSOBA(RČ, VĚK, JMÉNO) Pro začátek si je možné představit, že relace je nějaká tabulka, je to zjednodušení, jak bude později patrné z vlastností relace.

Relační algebra popis datových struktur pomocí matematické logiky úsporný, jednoduchý a ověřený koncept umožňuje pracovat s daty (tabulkami) před vytvořením programu postavený na množinových operacích součin, sjednocení, průnik, rozdíl, … základ pro dotazovací jazyk SQL Relační algebra, je podstatnou součástí jazyka SQL, tj. v průběhu dalších přednášek a cvičení budete její způsob uvažování velmi často potřebovat. Kromě toho jazyk SQL má řadu dalších funkcí, které v relační algebře nejsou, ale také se bez nich dá celkem dlouho žít.

Relační algebra – operace standardní množinové operace: kompatibilní sloupce: sjednocení (union) rozdíl (difference) průnik (intersection) kartézský součin (Cartesian product) speciální operace projekce (projection) selekce (selection) / restrikce (restriction) Θ-spojení (Θ-join) přirozené spojení (natural join) Kartézský součin dvou množin je množina kombinací všech prvků z obou množin. Tj. pokud máme množiny A = {Blivajz, Humus, Kentus} a B = {Babica, Hruška}, tak kartézský součin C = A × B je: C = {(Blivajz, Babica), (Blivajz, Hruška), (Humus, Babica), (Humus, Hruška), (Kentus, Babica), (Kentus, Hruška)} Θ-join se čte „theta spojení“

Relační algebra – množinové operace Barva Vzhled bílá tučně zelená kurzívou červená podtržené růžová KAPITÁLKY Barva Vzhled bílá tučně zelená kurzívou červená podtržené Barva Vzhled růžová KAPITÁLKY zelená kurzívou Barva Vzhled bílá tučně červená podtržené Toto jsou základní množinové operace, jen se pokuste neplést průnik (∩) a sjednocení (∪). Barva Vzhled zelená kurzívou

Relační algebra – operace Barva Vzhled bílá tučně zelená kurzívou červená podtržené Barva bílá zelená červená Barva Vzhled bílá tučně zelená kurzívou červená podtržené Barva Vzhled růžová KAPITÁLKY zelená kurzívou Barva Vzhled bílá tučně červená podtržené 𝑅1[𝐵𝑎𝑟𝑣𝑎, 𝑉𝑧ℎ𝑙𝑒𝑑] je projekce. 𝑅1[ 𝐵𝑎𝑟𝑣𝑎=𝑏í𝑙á ⋁ (𝐵𝑎𝑟𝑣𝑎=č𝑒𝑟𝑣𝑒𝑛á) je selekce, znak ⋁ znamená v matematické logice „nebo“. Projekce je omezení počtu sloupců, selekce je omezení počtu řádků a dá se to spolu kombinovat, jak je vidět v posledním příkladu. Vzhled kurzívou

Relační algebra – operace Barva1 Vzhled zelená tučně kurzívou červená podtržené Barva2 Velikost Písmo růžová 17 Arial červená 20 Times 10 zelená Courier Barva1 Vzhled Barva2 Velikost Písmo zelená tučně 20 Courier kurzívou červená podtržené 24 Times Arial Kartézský součin dvou množin – všechny kombinace všech prvků z obou množin. theta join – podmnožina kartézského součinu zadaná podmínkou natural join – stejné jako theta join, ale podmínka je rovnost stejně pojmenovaných sloupců. Tabulka uprostřed stránky zobrazuje výsledek theta spojení relací R1 a R2 s podmínkou Barva1 = Barva2. Z kartézského součinu těchto množin se vyberou pouze ty řádky, které splňují uvedenou podmínku. Pokud byste chtěli něco takového implementovat v procedurálním jazyce, budu to dva vnořené cykly – v jednom by se procházely řádky R1 a pro každý řádek by se procházela množina R2. Pokud je splněna podmínka, tak se vytvoří nový řádek výstupu, tak, že se vezmou sloupce z R1 a vedle nich se na stejný řádek připojí sloupce z R2 (toto je naivní implementace, ve skutečnosti se to implementuje jinak a chytřeji). Písmo Times

http://kantorek.webzdarma.cz/

Klíč Definice relace vyžaduje jednoznačnou identifikaci. Klíč je minimální množina vlastností, které jednoznačně identifikují každou entitu. Příklad – identifikace osoby: jméno + příjmení + datum narození (složený klíč) rodné číslo (jednoduchý klíč) číslo osoby (jednoduchý klíč) Obecně je nejbezpečnější využívat umělé (nevlastní, dumb) atributy, i když to představuje více práce. Klíč je nejzákladnější integritní omezení – tj. každá relace musí mít klíč. Slabý entititní typ má pouze nevlastní klíč. „Klíč je minimální množina...“ je potřeba chápat tak, že klíč obsahuje co nejmenší počet sloupců, které ještě stačí k jednoznačné identifikaci každé entity (tedy každého řádku tabulky), neboli klíč nesmí obsahovat zbytečné sloupce. Umělé atributy se používají zpravidla ke zjednodušení práce s relací, zejména pokud je přirozený klíč složený z více sloupců (např. jméno + příjmení + rodné číslo). Je potřeba myslet na to, že jakákoliv aplikace je jen modelem reality, nikoliv realitou. Tedy je vždy neúplná a nepřesná. Z toho vyplývá, že klíč je má být jednoznačný identifikátor v rámci potřeb aplikace, nejedená se o nějaký univerzální identifikátor. Často tedy jako klíč může stačit kombinace jméno a příjmení nebo e-mail nebo telefonní číslo apod. Pokusy o univerzální klíč jsou předem odsouzeny k neúspěchu – jednoznačně identifikovat kohokoliv na celém světě je nemožné. Přesněji, je to nemožné pomocí jednoduchých atributů, skládáním atributů dohromady to lze (Franta Vomáčka, ročník 1967, z Evropy, z ČR, ze Lhotky u Dolních Kotěhůlek, který bydlí za prvním stromem v za kapličkou vpravo a jeho bratr je fíra a má bradku). Poučení: některé věci jdou přímo proti sobě – například univerzalita a jednoduchost, univerzalita a rychlost nebo bezpečnost a komfort ovládání nebo univerzalita a spolehlivost atd...). Výraz „Slabý entitní typ“ označuje takové relace u nichž je klíč tvořen pouze nevlastními atributy (tj. atributy získanými z jiných relací), příkladem jsou záznamy v propojovacích tabulkách M:N relací. Například údaj o bydlišti osoby – sám o sobě nemá žádný identifikátor, ale je tvořen kombinací identifikátoru osoby a identifikátoru adresy a kromě toho může mít další atributy (např. od kdy do kdy na dané adrese daná osoba bydlí). V projektu APV je slabý entitní typ relace osoby_schuzky.

Klíč Klíčů může být v tabulce více: OSOBY(ID, RČ, JMÉNO, PŘÍJMENÍ, ČOP) Jeden z klíčů označíme jako primární. Volba primárního klíče není důležitá z hlediska analýzy, ale z hlediska implementace. primární klíč by měl být co nejmenší (z hlediska ukládání) hodnoty primárního klíče by měly být snadno porovnatelné nejvhodnější volbou je jeden atribut typu integer nejvýhodnější pro stroje, lidé s databázemi nepracují Prakticky se jako primární klíč tedy nejčastěji používá nějaké číselné ID, což je jednoznačný identifikátor, který každému záznamu v tabulce přiřadí databázový systém. Je důležité si ale uvědomit, že je to klíč umělý, tabulka by tedy měla vždy obsahovat ještě minimálně jeden klíč přirozený. Příklad: Databáze zaměstnanců obsahuje sloupce jméno a příjmení. Jméno a příjmení není jednoznačná identifikace osoby, je tedy potřeba buď přidat sloupce (rodné číslo), nebo zavést logickou identifikaci osob (zaměstnanecké číslo), to vše je potřeba bez ohledu na to jestli databáze obsahuje umělý automaticky generovaný primární klíč, nebo nikoliv. Je potřeba myslet na to, že umělý klíč slouží pouze pro vnitřní potřebu systému a nikoliv pro uživatele (hodnotu nesmí změnit a ani by ji neměl číst, naproti tomu zaměstnanecké číslo je možné změnit). Výjimkou mohou být speciální databáze, například databáze výsledků anonymního hlasování, nebo databáze přístupů, ty z podstaty věci neobsahují přirozený primární klíč a je nutné vždy doplnit klíč umělý, aby bylo možné vytvořit relaci.

Cizí klíč referenční integritní omezení (foreign key) atribut jedné relace (R2), který je označen jako cizí klíč, musí mít: prázdnou hodnotu hodnotu primárního klíče jiné relace (R1) R1 – hlavní relace (master, parent) R2 – vedlejší relace (detail, dependent) Příklad: VZTAHY(ID_VZTAHY, ID_OSOBY1, ID_OSOBY2, DATUM) ID_OSOBY1 a ID_OSOBY2 jsou cizí klíče Cizí klíč v přikladu říká, že vztah může existovat jen mezi dvěma existujícími (v databázi) osobami. Tedy že ID osoby ve vztahu nemůže být vymyšlené libovolné, ale musí to být odkaz na konkrétní záznam v tabulce osob. Cizí klíč vždy zahrnuje dvě relace, ale je vždy definován jen v jedné, tedy jedna relace se odkazuje na druhou.

http://kantorek.webzdarma.cz/

Jazyk SQL SQL je programovací jazyk, pomocí kterého je možné komunikovat s relačním DBS. SQL je vychází z relační algebry, ale je bohatší. Pomocí SQL je možné: „dotazovat se databáze na její stav“ – získávat data z databáze „zasílat databázi požadavky na aktualizaci“ – měnit stav databáze definovat tabulky (definovat schémata) Jazyk SQL je velice odlišný od „běžných“ programovacích jazyků. Programovací jazyky se dají rozdělit například na procedurální (C, Pascal, Java, Javascript. Php, VB, C++, C#, atd...) funkcionální (LISP, Haskell, ...) a deklarativní (SQL, Prolog, ...)

Předpoklady Data jsou uložena v databázi ve formě tabulek. Program, který zaslal dotaz, se nemusí starat o fyzickou strukturu dat a jejich uložení. Pořadí tabulek ani sloupců v databázi není důležité, protože jsou identifikovány jménem. Pořadí řádků není důležité, protože jednotlivé řádky jsou identifikované hodnotou klíče. Deklarativní jazyk: definujeme, CO chceme udělat (procedurální jazyk definuje, jak se něco udělá – proceduru) Důležitá je identifikace všech prvků pomocí jména, to je jediný správný způsob. Často se lze setkat s příklady (zejména v PHP), kde se používá identifikace pomocí indexu, ta ale není nijak zajištěna. Je to jen dobrá vůle některých databázových rozhraní, že ji umožňují. Jazyk SQL zahrnuje DDL (Data Definition Language – jazyk pro definici struktury dat) a DML (Data Manipulation Language – jazyk pro manipulaci s daty (to zahrnuje i výběr dat)).

Historie první prototyp v r. 1974 – jazyk Sequel standardizace ANSI a ISO v roce 1986 a 1987 – SQL-86 nový standard ANSI a ISO v roce 1992 – SQL-92 a další SQL:1999 a další SQL:2003 a další SQL:2008 – rozšíření o XML a další SQL:2011 – zpracování časových řad SQL:2003 má 3606 stran Pro zajímavost, jazyk C byl standardizován v roce 89, tedy později než jazyk SQL. V současnosti je ve většině RDBS implementované něco mezi SQL-92 a SQL:1999, skutečnost je taková, že implementace jazyka SQL v RDBS zaostávají za standardem o mnoho let a pravděpodobně vždy budou. Některé implementace totiž již dlouho obsahují prvky nekompatibilní se standardem.

Jména bez speciálních znaků → A...Z, a...z, 0...9, _ název (sloupce, tabulky, databáze, ...) ne příliš dlouhý (30 znaků) pokud možno anglicky dodržovat jednotnou konvenci velikosti písmen: id_person (C) idPerson (Java, C++) IdPerson (Delphi) Id_Person (exoti) název by měl vystihovat obsah Při pojmenovávání je dobré myslet na to, že mínus (pomlčka) je operátor a tudíž se obvykle nedá použít ve jméně. Bohužel, některé méně přívětivé databázové systémy neberou ohledy na velikost písmen (např. převádí vše na malá písmena), což znamená, že pojmenování s podtržítky je zdaleka nejspolehlivější způsob.

Jména Název by neměl obsahovat zbytečné údaje u tabulky není nutné uvádět, že je to tabulka je zbytečné k názvu sloupce přidávat název tabulky/databáze používat zavedené zkratky id / person_id / id_person item_count / item_cnt id_person se v tabulce „persons“ může zdát zbytečné, ale může se využít při NATURAL JOIN je dobré vyhnout se klíčovým slovům jazyka Seznam klíčových slov PostgreSQL: http://www.postgresql.org/docs/8.2/interactive/sql-keywords-appendix.html MySQL: http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html Vyhnout se všem klíčovým slovům jazyka SQL a všech implementací je prakticky nemožné.

SQL Zapomeňte procedurální programování. Pomocí SQL se definuje co má DBS udělat, SQL server požadavek zpracuje (převede na procedurální kód) a vyhodnotí. K dílčím prvkům databáze se přistupuje přes operátor „.“ (tečka) databáze.tabulka.sloupec (schéma.tabulka.sloupec) project.persons.id_person databáze se zpravidla neuvádí (během spuštění programu se nemění) tabulku je vhodné uvádět vždy SQL má vysokou redundanci (mnoho možností) Tečková notace je podobná jako např. u objektů v C++, Js apod. Vysokou redundanci mají i ostatní jazyky, např. jakýkoliv procedurální jazyk si vystačí s podmínkou a skokem. Ostatní příkazy však zpravidla zkracují a/nebo zjednodušují zápis programu, případně zefektivňují zpracování. SQL je zajímavé tím, že má množství příkazů a klíčových slov, která jsou naprosto stejná. Motivací za tímto je možnost dát programátorovi na výběr takovou logiku jazyka, která mu nejvíce vyhovuje.

Datové typy - úvod základní datové typy více o datových typech později řetězce varchar(mohutnost) – standardní řetězec, omezený délkou text – „neomezený“ řetězec čísla int(mohutnost) / number – celé číslo, např. int(4) signed / unsigned float datum datetime / date více o datových typech později Mohutnost datového typu se udává vždy v bajtech, jestli se udává nebo ne, záleží na konkrétním datovém typu a konkrétní implementaci. Int (4) má rozsah 32bitů, protože 8*4 = 32 Velikost „neomezeného řetězce“ bývá zpravidla minimálně několik GB.

Tabulka × Relace Tabulky mohou být skutečné – odpovídají databázovém schématu. Tabulky mohou být virtuální – pohledy (externí schémata). Výsledkem libovolného dotazu je také tabulka (dočasná). Pohled (view): je definován dotazem je zpravidla jen pro čtení umožňuje zjednodušení dotazů vytváří „uživatelské verze“ databáze umožňuje odstínit jednotlivé programové moduly aktualizuje se automaticky ze základních tabulek Výsledek dotazu (ani pohled) obecně není relace Výsledek dotazu není relace, protože může obsahovat stejné řádky – tedy nesplňuje základní podmínku relace – tj. že množina musí obsahovat unikátní prvky. Pohled je dobrý k tomu, že se tváří jako tabulka, a přitom nezvyšuje redundanci dat (je vždy vytvořen spojením skutečných tabulek), může se tedy s výhodou použít k rekonstrukci původního DB schématu. Klíčový poznatek je, že tabulka je buď skutečná tabulka, nebo výsledek dotazu, nebo pohled (což je výsledek dotazu), nebo výsledek spojení tabulek (JOIN).

Syntaxe zápisu syntaxe funkce a klíčová slova jazyka VELKÝMI PÍSMENY kurzívou se značí rozvinutí (zástupný symbol) DELETE FROM tabulka; [ ] – nepovinný prvek { } – množina prvků | – vyloučení prvků [ LEFT | RIGHT ] JOIN LEFT JOIN RIGHT JOIN JOIN a { = | < | > } b a = b nebo a < b nebo a > b Syntaxe = pravidla zápisu něčeho. Tento způsob zápisu se často používá i jinde, napříkla pro syntaxi příkazů shellu.

Příkazy SQL pro definici struktury dat (tabulek) – DDL (data definition language): CREATE (SCHEMA | TABLE | INDEX ) ALTER TABLE DROP TABLE pro manipulaci s daty – DML (data manipulation language): INSERT SELECT UPDATE DELETE mezi jednotlivými DBS jsou v některých oblastech značné rozdíly! Někdy se používá také DQL (Data Query Language), který obsahuje jen příkaz SELECT, ve skutečnosti se, ale zkratka DQL nevztahuje k SQL. Prakticky vzato má jazyk 4 příkazy bez kterých se nedá obejít.

http://kantorek.webzdarma.cz/

Otázky? Proč většinou není dobré zobrazovat uživateli hodnotu umělého ID? Když má jedna relace X řádků a druhá relace Y řádků, kolik řádků maximálně může mít výsledek theta spojení těchto relaci? Musí mít každá relace klíč? Jaký je rozdíl mezi relací a (databázovou) tabulkou? K čemu slouží tečka v jazyku SQL? Musí mít každá relace cizí klíč? Je možné v SQL napsat sjednocení množin?