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

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

Databáze – jazyk SQL (úvod). Množina n-tic ve tvaru (a 1, a 2, a 3,..., a n ) a i – hodnota atributu v dané n-tici, a i in D i D i – doména atributu (množina.

Podobné prezentace


Prezentace na téma: "Databáze – jazyk SQL (úvod). Množina n-tic ve tvaru (a 1, a 2, a 3,..., a n ) a i – hodnota atributu v dané n-tici, a i in D i D i – doména atributu (množina."— Transkript prezentace:

1 Databáze – jazyk SQL (úvod)

2 Množina n-tic ve tvaru (a 1, a 2, a 3,..., a n ) a i – hodnota atributu v dané n-tici, a i in D i D i – doména atributu (množina hodnot, kterých může atribut nabývat) A i – 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

3 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)

4 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

5 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)

6 BarvaVzhled bílátučně zelenákurzívou červenápodtržené BarvaVzhled růžováKAPITÁLKY zelenákurzívou BarvaVzhled bílátučně zelenákurzívou červenápodtržené růžováKAPITÁLKY BarvaVzhled bílátučně červenápodtržené BarvaVzhled zelenákurzívou

7 BarvaVzhled bílátučně zelenákurzívou červenápodtržené BarvaVzhled růžováKAPITÁLKY zelenákurzívou Barva bílá zelená červená BarvaVzhled bílátučně červenápodtržené Vzhled kurzívou BarvaVzhled bílátučně zelenákurzívou červenápodtržené

8 Barva1Vzhled zelenátučně zelenákurzívou červenápodtržené Barva2VelikostPísmo růžová17Arial červená20 Times červená10Arial zelená20 Courier Barva1VzhledBarva2VelikostPísmo zelenátučnězelená20 Courier zelenákurzívouzelená20 Courier červenápodtrženéčervená24 Times červenápodtrženéčervená20Arial Písmo Times

9

10 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íč.

11 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í

12 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

13

14 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)

15 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)

16 první prototyp v r – 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

17 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

18 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

19 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í)

20 základní datové typy ř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

21 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

22 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

23 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!

24

25 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?


Stáhnout ppt "Databáze – jazyk SQL (úvod). Množina n-tic ve tvaru (a 1, a 2, a 3,..., a n ) a i – hodnota atributu v dané n-tici, a i in D i D i – doména atributu (množina."

Podobné prezentace


Reklamy Google