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

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

Databáze – speciality šéfkuchařů. Nejpoužívanější relační databázové systémy: Adaptive Server Enterprise (Sybase) DB2 (IBM) Firebird MySQL Oracle Database.

Podobné prezentace


Prezentace na téma: "Databáze – speciality šéfkuchařů. Nejpoužívanější relační databázové systémy: Adaptive Server Enterprise (Sybase) DB2 (IBM) Firebird MySQL Oracle Database."— Transkript prezentace:

1 Databáze – speciality šéfkuchařů

2 Nejpoužívanější relační databázové systémy: Adaptive Server Enterprise (Sybase) DB2 (IBM) Firebird MySQL Oracle Database PostgreSQL SQL Server (Microsoft) SQLite Každý systém implementuje jazyk SQL jinak a žádný úplně. Mezi jednotlivými DBS bývají velké rozdíly.

3 Pro práci s databázovým systémem se vždy používá nějaké rozhraní: Firemní pouze pro jeden konkrétní DB systém zpravidla více funkcí optimální výkon Obecná obvykle větší podpora standardů použitelné z různých aplikací a pro různé DBS ODBC, ADODB, JDBC, … Každé rozhraní poskytuje funkce pro připojení k databázi, vykonání dotazu, vypsání výsledku dotazu a zjištění chyb.

4 character_varying(mohutnost) / varchar(mohutnost) / nvarchar(mohutnost) standardní řetězec, omezený délkou mohutnost se udává v byte [B] char(mohutnost) / character(mohutnost) / nchar(mohutnost) řetězec omezený délkou doplňuje se mezerami operátor LIKE porovnává řetězce bez mezer text / ntext „neomezený“ řetězec

5 bigint(šířka) – 8B – = integer(šířka) – 4B – mediumint(šířka) – 3B – smallint(šířka) – 2B – tinyint(šířka) – 1B – celé číslo signed (se znaménkem) – záporné rozsahy unsigned (bez znaménka) – pouze kladná čísla pozor na převod mezi signed a unsigned

6 real / float(velikost) plovoucí desetinná čárka velikost <= 24 – 7 číslic, 4 byty velikost > 24 – 15 číslic, 8 bytů number / numeric / decimal(přesnost, měřítko) pevná desetinná čárka přesnost – maximální počet platných číslic měřítko – počet číslic za desetinnou čárkou velikost – bytů podle nastavení money = ,5808

7 timestamp Datum a čas se ukládá jako časové razítko. Časové razítko je počet milisekund od platné pouze do :14:07 Převod na běžný formát data je velice složitý, je nutné počítat se přestupnými dny a sekundami. Timestamp není možné použít k uložení intervalu (rok, měsíc, den, …). Podle SQL standardu by měl typ timestamp obsahovat i časovou zónu. datetime / date / time větší rozsah a přesnost uložení intervalu komplexní datový typ

8 je možné použít také formát data aplikace – např. pg_query("UPDATE osoby SET datum_narozeni=". time()); datový typ sloupce je integer výhody: jednoduché, pro jednu aplikaci bezproblémové nevýhody: není atomické, nelze vyhledávat podle části data (lze pouze řadit) obtížně se zobrazuje interval – respektive závisí to na aplikaci vracíme se k problému závislosti dat a aplikace nespolehlivé pokud k databázi přistupuje více aplikací

9 bit / boolean / binary – jedna hodnota BLOB / image – binární data BLOB – binary large object Detaily práce s binárními daty závisí na použitém rozhraní. Jednodušší případ: Data je možno odesílat (po správném escapování) SQL dotazem a přijímat v rámci jeho výsledků. Od určité velikosti nemusí fungovat správně. Složitější případ: Binární data (může zahrnovat i typ text) je nutné odesílat a přijímat speciálními funkcemi.

10 SQL příkaz CREATE CREATE TABLE nazev_tabulky ( sloupec datovy_typ [NOT NULL] [DEFAULT hodnota] [PRIMARY KEY] [,sloupec datovy_typ …] ) CREATE TABLE kontakty ( id serial PRIMARY KEY, osoba integer NOT NULL REFERENCES osoby, typ integer REFERENCES typy_kontaktu, kontakt varchar(200) NOT NULL )

11 Prakticky není možné využívat SQL pro definici databáze mezi jednotlivými DBS. Každý DB systém používá jiné datové typy Generovaný primární klíč je implementován různě Jednotlivé DBS používají rozšíření, která významně ovlivňují práci s DB (např. MySQL – MyISAM × InnoDB) SQL pro definici struktury se používá nejčastěji pro import a export struktury v rámci jednoho DBS. Pro převod dat mezi DB systémy je nutné používat nástroje pro migraci (migration toolkit)

12 nejčastěji používaný typ primárního klíče abstraktní identifikátor záznamu nezávislý na vnějších podmínkách odpadají problémy se složeným klíčem kromě něj by měl existovat ještě jiný klíč (definice relace) Žádný databázový systém neodpovídá přesně standardu. Mezi jednotlivými databázovými systémy jsou velké rozdíly.

13 sloupci se přiřadí speciální atribut auto_increment při vložení dat INSERT dotazem se klíč automaticky aktualizuje i v případě, že je hodnota zadaná (např. při importování) SELECT LAST_INSERT_ID(); pouze jeden sloupec v tabulce může mít atribut nastaven musí být klíčem CREATE TABLE tabulka ( id int(5) unsigned NOT NULL auto_increment)

14 sloupci se přiřadí speciální atribut is_identity při vložení dat INSERT dotazem se klíč automaticky aktualizuje SELECT IDENT_CURRENT('nazev_tabulky'); v případě, že je hodnota sloupce zadaná, je nutné použít příkazy: SET IDENTITY INSERT on – povolí vkládání dat SET IDENTITY INSERT off – ukončí vkládání dat vkládání dat do generovaného klíče může být povoleno pouze pro jednu tabulku CREATE TABLE tabulka ( id int(5) unsigned NOT NULL is_identity,

15 Sloupci se přiřadí speciální datový typ SERIAL Automaticky se vytvoří sekvence pro generování hodnot klíče. Při vložení dat INSERT dotazem se klíč automaticky aktualizuje. SELECT currval('nazev_sekvence') V případě, že je hodnota sloupce explicitně zadaná se klíč neaktualizuje! CREATE TABLE tabulka ( id serial NOT NULL,

16 Pro zjištění hodnoty ID posledního vloženého záznamu se musí používat předdefinované funkce. Nefunguje: SELECT MAX(id) FROM tabulka Zjištění hodnoty musí být thread-safe viz Obrázky: vence-currval.pdf vence-currval.pdf vence-max.pdf vence-max.pdf vence-max-soubeh.pdf vence-max-soubeh.pdf

17 integritní omezení – NOT NULL, UNIQUE, PRIMARY KEY, CHECK cizí klíč zpravidla představuje referenční integritní omezení nelze změnit záznam v jedné tabulce bez aktualizace záznamů, které se na něj odkazují Příklad: sloupec osoba v tabulce kontakty se odkazuje na tabulku osoby při smazání osoby je žádoucí upravit i všechny připojené kontakty CASCADE – smazat RESTRICT / NO ACTION - nepovolit smazání osoby SET NULL – nastavit hodnoty ve sloupci na NULL CREATE TABLE kontakty ( osoba integer NOT NULL REFERENCES osoby ON DELETE CASCADE osoby-kontakty vs. osoby- adresy

18 id_osobyjmenoid_adresy 1Pavel11 NULL 2Karel12 id_adresymestoulice 11BrnoPolní 12PrahaJarní id_kontaktykontaktid_osoby Osoby Adresy Kontakty Při odstranění Karla z databáze se stane id_osoby=2 neplatné. ON DELETE CASCADE smaže i záznamy, které se na tuto hodnotu odkazují. Při odstranění adresy se stane id_adresy=11 neplatné. ON DELETE SET NULL smaže pouze referenci, pravděpodobně není žádoucí smazat odkazující se záznam.

19 Struktura databáze je uložena ve speciální databázi INFORMATION_SCHEMA Pro DBS, které INFORMATION_SCHEMA nepodporují je možné použít příkazů DESCRIBE, SHOW, LIST, ALTER, RENAME, DROP, MODIFY, ADD… Příklad: SHOW TABLES FROM databaze; SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE = 'BASE TABLE' ;

20 Nestandardní (PgSQL, MySQL): SELECT... LIMIT n; SELECT vyska FROM osoby ORDER BY vyska DESC LIMIT 10; Standardní (SQL Server): SELECT [TOP | BOTTOM n] FROM... SELECT TOP 10 vyska FROM osoby ORDER BY vyska DESC; A další: SELECT vyska FROM osoby ORDER BY vyska DESC WHERE ROWNUM <= 10;

21 volba primárního klíče souvisí se způsobem u kládání dat v DBS ISAM (Index Sequential Access Method) využívá se indexových souborů (telefonní seznam) u moderních DBS už se využívají jiné metody, pro snížení časové složitosti operací idpozice jménopříjmenírodné číslo ChlastislavPeruňka647423/3452 SosnaOrbnicová624783/7332 RůžeslavMekota737902/7145 index datový soubor

22 Firebird: MySQL Microsoft SQL Server (Express edice) Oracle (Express edice) acle10g/index.html acle10g/index.html PostgreSQL SQLite

23


Stáhnout ppt "Databáze – speciality šéfkuchařů. Nejpoužívanější relační databázové systémy: Adaptive Server Enterprise (Sybase) DB2 (IBM) Firebird MySQL Oracle Database."

Podobné prezentace


Reklamy Google