Syntax highlighting of Archiv/Bakalářská státnice - Informatika - Základy informatiky - ISPS - Databáze

zpět: [[Bakalářská státnice - Informatika - Základy informatiky - obor Správa počítačových systémů]]


== Podstata a architektury DB systémů ==

* databáze, systém řízení báze dat (SŘDB)

* ER modelování
** entity a vztahy, entitní typy, vztahové typy, slabý entitní typ, atributy, identifikátory

* relační model
** integritní omezení
** nadklíč, klíč, cizí klíč
** tabulky, řádky, sloupce, schéma tabulky, schéma relační databáze
** převod ER -> relační model
** relace, domény (typy atributů)
** funkční závislosti
** klíčový atribut, neklíčový atribut
** Armstrongova pravidla
** funkční uzávěr
** pokrytí, minimální pokrytí, redundantní atribut, atributový uzávěr

== Normální formy ==

* cílem je především odstranění redundance dat a tím zajištění jejich integrity


* '''1NF''' - každý atribut schématu je elementárního typu a je nestrukturovaný
** tj. tabulka je plochá - dvourozměrné pole, žádné stromy ani grafy

* '''2NF''' - neexistují částečné závislosti neklíčových atributů na klíči
** tj. nějaký atribut nesmí záviset pouze na části klíče -> rozdělit tabulku na dvě

* '''3NF''' - žádný neklíčový atribut není tranzitivně závislý na žádném klíči
** typická závislost: Firma -> PSČ -> Sídlo (rozdělíme dle tranzitivity na tabulky Firma+PSČ a PSČ+Sídlo)

* '''BCNF''' (Boyce-Coddova NF) - každý atribut je závislý na klíči
** tj. žádný samostatný atribut nesmí záviset na něčem jiném než na celém klíči


Další info: [http://en.wikipedia.org/wiki/Database_normalization Database normalization] (Wiki en) - kdyby někdo trval na tom, že chce znát 4NF, 5NF, 6NF a další :-)

== Referenční integrita ==

* pomáhá udržovat vztahy v relačně propojených databázových tabulkách, zabraňuje vzniku nekonzistentních dat
* kontrola přípustných hodnot
* kontrole existence položky s daným klíčem v druhé tabulce (podle cizího klíče)


chování při porušení integrity:
* hlášení chyby, pokud není nastavena jiná akce
* ON UPDATE, ON DELETE - podmínka spuštění akce
* CASCADE - kaskádová aktualizace/smazání
* SET NULL
* SET DEFAULT
* NO ACTION


zdroje:
* [http://cs.wikipedia.org/wiki/Referen%C4%8Dn%C3%AD_integrita Referenční integrita] (Wiki cs)

== Transakční zpracování, vlastnosti transakcí, uzamykací protokoly, zablokování ==

Požadované vlastnosti transakcí ('''ACID'''):
* '''Atomicity''' - transakce se provede buď celá nebo vůbec
* '''Consistency''' - databáze je před i po transakci konzistentní
* '''Isolation''' - souběžné transakce o sobě neví, navzájem se neovlivňují
* '''Durability''' - změny jsou po skončení transakce trvale uloženy v databázi


* úspěšné ukončení transakce - '''COMMIT'''
* neúspěšné
** uživatelský '''ABORT'''
** vynucený ABORT (porušení integrity, neexistující objekt, ...)
** pád systému


* architektura transakcí v SŘBD:
** aplikační program
** manažer transakcí
** rozvrhovač transakcí (scheduler)
** manažer dat


* sériový rozvrh
* prokládání transakcí
* uspořádatelný rozvrh (serializovatelný)
* konflikty WR (čtení nepotvrzených dat), RW (neopakovatelné čtení), WW (přepsání nepotvrzených dat)
* konfliktově uspořádatelný rozvrh, precedenční graf
* (ne)zotavitelný rozvrh


* exkluzivní a sdílené zámky
* uváznutí (deadlock, zablokování), detekce uvzáznutí (waits-for graf), konverze zámků, prevence uváznutí
* fantom
* ARIES - algoritmus pro zotavení po havárii - analysis, redo, undo


uzamykací protokoly:
* '''2PL''' (dvoufázový) - nelze požadovat zámek na entitu, pokud již nějaký zámek na ni transakce měla
* '''S2PL''' (striktní dvoufázový) - všechny zámky uvolněny až při ukončení transakce
* konzervativní 2PL - všechny zámky na začátku transakce - nepoužívané
* '''optimistické řízení''' - třífázový optimistický protokol (lokální datový prostor)
* '''časová razítka'''

== Základy SQL ==

SQL = Structured Query Language


* '''DML''' - Data Manipulation Language - dotazy, přidání, změny, ...
* '''DDL''' - Data Definition Language - práce se schématy (tabulkami)
* '''DCL''' - Data Control Language - nastavení přístupových práv


* '''SELECT''' [DISTINCT] ... FROM ... WHERE ... GROUP BY ... HAVING
* '''WHERE''': porovnání, [NOT] BETWEEN (a AND b), [NOT] LIKE, IS [NOT] NULL, [NOT] IN, EXISTS


spojení:
* CROSS JOIN - kartézský součin
* NATURAL JOIN - přirozené spojení
* INNER JOIN - vnitřní spojení
* UNION JOIN - sjednocené spojení
* LEFT | RIGHT | FULL OUTER JOIN - vnější spojení
* agregační funkce COUNT, MAX, MIN, AVG, SUM


* CREATE TABLE - integritní omezení, referenční integrita
* ALTER TABLE
* DROP TABLE


* INSERT INTO
* DELETE FROM
* UPDATE


* pohledy

== Indexy, triggery, uložené procedury, uživatelé, uživatelská práva ==

'''Indexy''' = pomocná struktura, umožňující rychle vyhledávat záznamy podle vyhledávacího klíče (klíčů)
* indexy organizovány do stránek (podobně jako datové soubory)
* shlukované vs. neshlukované indexy
* B+-strom - B-strom s provázanými listy, snadné rozsahové dotazy, všechny klíče jsou v listech (vnitřní uzly jen pro rozdělení intervalů)
* hašovaný index - hašovací funkce, kapsy
* bitové mapy
* víceatributové indexování (smíšený index)
* prostorové indexování
* fulltextové indexy
* primární a unikátní index


'''Embedded SQL''' = procedurální rozšíření SQL
* je standardizováno, ale kód většinou nepřenosný!
* řídící konstrukce
* kurzory
* triggery - zobecnění integritních omezení, událostí na tabulce/databázi spouštěná uložená procedura
* CREATE PROCEDURE, EXECUTE


Uživatelé:
* vlastní systém uživatelů, oddělený od OS
* příkazy GRANT, REVOKE
* přístupová práva na databáze, tabulky, sloupce, procedury, vytváření, měnění, mazání, ...


zdroje:
* [http://cs.wikipedia.org/wiki/Index_%28datab%C3%A1ze%29 Index (databáze)] (Wiki cs)

== Vícevrstevné architektury ==


zdroj:
* [http://kocour.ms.mff.cuni.cz/~pokorny/papers/MD06.pdf Databázové architektury: současné trendy a jejich vztah k novým požadavkům praxe] (Jaroslav Pokorný, PDF)
* [http://student.cvut.cz/cwut/index.php/Architektury_datab%C3%A1zov%C3%BDch_syst%C3%A9m%C5%AF Architektury databázových systémů] (ČWUT)
* [http://www.fit.vutbr.cz/study/courses/DSI/public/pdf/nove/10_clsrv.pdf Architektura klient/server a třívrstvá architektura] (J. Zendulka, VUTBR)

== Vazba databází na internetové technologie ==

== Správa databázových systémů ==