This is an old revision of the document!
Table of Contents
Konceptuální a logický datový model, dotazovací jazyk SQL, transakční zpracování, objektově-relační mapování, noSQL databáze.
B0B36DBS Webové stránky předmětu
- Konceptuální modelování – ER (entitní typy, atributy, identifikátory, vztahové typy, n-ární, rekurzivní, slabé entitní typy, ISA hierarchie). Logické modely (tabulkový, objektový, stromový, grafový). Relační model (definice, klíč, nadklíč, cizí klíč), transformace ER schématu do relačního schématu.
- Relační databáze – datový model, NULL hodnoty, tříhodnotová logika, integritní omezení (NOT NULL, UNIQUE, PRIMARY KEY, CHECK, FOREIGN KEY a referenční akce), umělé identifikátory.
- Jazyk SQL – definice schématu. Manipulace s daty (SELECT, INSERT, UPDATE, DELETE). Spojování tabulek, predikáty, řazení, seskupování a agregace, množinové operace, vnořené dotazy. Pohledy (aktualizovatelnost, CHECK OPTION). Procedurální rozšíření (funkce, kurzory, triggery).
- Fyzická vrstva – bloky, sloty, buffer management. Organizace záznamů (halda, seřazený soubor, hašovaný soubor, složitost operací), indexové struktury (B+-stromy, hašované indexy, bitmapové indexy).
- Funkční závislosti – definice, Armstrongovy axiomy, úpravy závislostí (funkční uzávěr, pokrytí, kanonické pokrytí, redundantní závislost, neredundantní pokrytí, atributový uzávěr, redukovaná závislost, minimální pokrytí). Hledání klíčů (nalezení prvního klíče, Lucchesi-Osborn). Normální formy (první, druhá, třetí, Boyceho-Coddova).
- Transakce – základní pojmy, ACID vlastnosti, BEGIN a COMMIT, rozvrh / historie, uspořádatelnost / serializovatelnost. Konfliktová uspořádatelnost (konflikty WR, RW, WW, precedenční graf), zamykací protokoly (dvoufázové a striktní dvoufázové zamykání), uváznutí (deadlock, graf čekání, Coffmanovy podmínky, strategie wait-die a wound-wait), fantom.
Konceptuální modelování
ER (entitní typy, atributy, identifikátory, vztahové typy, n-ární, rekurzivní, slabé entitní typy, ISA hierarchie). Logické modely (tabulkový, objektový, stromový, grafový). Relační model (definice, klíč, nadklíč, cizí klíč), transformace ER schématu do relačního schématu.
- ER diagramy - diagramy zobrazující realnou strukturu systému, pomáhají uvědomit si co je potřeba zavést do databáze.
- ER - Entity-relationship model
- Nemá standardy - takže si každý z prdele tahá notaci a je to uplně k hovnu
- Méně využíván než UML (for good fucking reason too)
Entitní typy
Entita je obecně osoba, projekt, nějaký objekt = třída v UML.
- Silní entitní typ - má alespoň jeden plný identifikátor (např. název u projektu)
- Slabý entitní typ - nemá plný identifikátor, má jeden nebo více částečných id → jeho identifikace závisí na jiné entitě
Atributy
- Vlastnost entity
- Mají název a kardinalitu (množství)
- Složené atributy - basically více atributů složené do jednoho (např. adresa)
- mají datový typ
Identifikátory
- Atribut nebo skuipina atributů, která jednoznačně určuje entitu
- Rozdělení
- Plné - atribut nebo skupina atributů jedné entity
- Částečné - pomocí vazby na jinou entitu, dovoluje pouze kardinalitu (1,1)
Vztahové typy
- Mají název, entity a kardinalitu
- Binární - 2 entity
- N-ární - více než 2 entity, mohou být nahrazeny třídou, která má binární vztahy se všemi entitami ve vztahu
- Rekurzivní - typ vztahu mezi entitami stejného typu
ISA hierarchie (is-a hierarchy)
specifický vztah bez názvu a kardinalit
- Vytváří hierarchii parent-child
- typ entity, která je speicalizací jiné enity
- child může mít max jednoho parent
Logické modely
- Proces logického modelování
- Výběr modelu podle charakteristik dat, možností dotazování, použití, požadavky
- Tvorba logického schématu - transformace z konceptuálního schématu do logického
Tabulkový
- Struktura - řádky pro entitry a sloupce pro atributy
- Operace - selection, projection, join
- např.: sql
Objektový
- Struktura - objekty s atributy, používá ukazatele mezi objekty
- Operace - navigation
Stromový
- Struktura - vrchol s atributy, hrany mezi vrcholy
- Hieararchie, kategorizace, semi-strukturovaná data
- např.: xml dokumenty, json
Grafový
- Struktura vrcholy, hrany, atributy
- Opearce - Obhcázení, porovnávání vzorů, grafové algoritmy
- Např.: síťovy model, REsource Description Framework, FlockDB
Relační databáze
- Databáze - Logicky uspořádaný soubor souvisejících dat, obsahuje data, metadata, schéma, omezení integrity atd.
- Database management system (DBMS) - Softwarový systém umožňující přístup do databáze, poskytuje mechanismy pro zajištění bezpečnosti a
- spolehlivosti, souběžnost, integritu uložených dat, …
- Databázový systém - informační systém obsahující databázi, DBMS, hardware, procesy, osoby…
- Relační databáze - množina relací
Null hodnoty
- Vyjadřuje vhybející informaci
- Operace s null
- 3 + null = null
- 3 < null = uknown
==== Integritní omezení (NOT NULL, UNIQUE, PRIMARY KEY, CHECK, FOREIGN KEY a referenční akce) *
- Entitní – každý záznam v tabulce má platný a jedinečný primární klíč.
- Doménová – zajišťují dodržování datových typů/domén definovaných u sloupců databázové tabulky
- Referenční – zabývají se vztahy dvou tabulek, kde jejich relace je určena vazbou primárního a cizího klíč
- NOT NULL - hodnoty nesmí být null
- UNIQUE - hodnoty musí být unikátní
- PRIMARY KEY = NOT NULL + UNIQUE
- FOREIGN KEY - hodnoty klíče v odkazující tabulce musí být v odkazované tabulce
- CHECK - definuje se podmínka, která musí být splněna
Referenční akce
Pokud nejsou nastavené referenční akce a zároveň by operace v odkazované tabulce způsobila porušení cizího klíče v odkazující tabulce, tak by operace byla blokována a generoval by se error message
- Trigger - různé případy změn v tabulce
- ON UPDATE
- ON DELETE
- Akce - co se provede po změne v tabulce
- CASCADE - hodnota je také změněna / odstraněna
- SET NULL - hodnota nastavena na NULL
- SET DEFAULT - hodnota nastavena na výchozí
- NO ACTION - zabraňuje provedení operace
- RESTRICT - podobný no action
Umělé identifikátory
- Zcela automatizované
- Obvykle se jedná o celočíselné řady a každý novější záznam dostává číslo vždy o jednotku vyšší než je číslo u posledního vloženého záznamu
- (číselné označení záznamů s časem stoupá).
Jazyk SQL
Structured Query Language (SQL) je jazyk pro kladení dotazů do databáze. Obsahuje jak příkazy DML (Data manipulation Language), tak i DDL příkazy (Data Definition Language). SQL je case insensitive (nerozlišuje mezi velkými a malými písmeny).
- Transaction management
- Administrace Databáze
Definice schématu
Tvorba tabulky
CREATE TABLE *
- Název tabulky
- Definování sloupců (atributů) - názvy, datové typy, výchozí hodnota
- Definování integritních omezení v rozsahu tabulky
Úprava schématu
- ALTER TABLE – změny existujících objektů.
- RENAME TO
- ADD COLUMN
- ALTER COLUMN
- DROP COLUMN
- ADD (constraint definition)
- DROP CONSTRAINT
- DROP TABLE
Manipulace s daty (SELECT, INSERT, UPDATE, DELETE)
- Příkazy pro získání dat z databáze a pro jejich úpravy
- DML – Data Manipulation Language
- INSERT INTO – vkládá do databáze nové řádky (záznamy)
- UPDATE – mění data v databázi (editace záznamu)
- MERGE – kombinace INSERT a UPDATE – data buď vloží (pokud neexistuje odpovídající klíč), pokud existuje, pak je upraví ve stylu UPDATE.
- DELETE FROM – odstraňuje data (záznamy) z databáze
- EXPLAIN – speciální příkaz, který zobrazuje postup zpracování SQL příkazu. Pomáhá uživateli optimalizovat příkazy tak, aby byly rychlejší.
- SHOW - méně častý příkaz, umožňující zobrazit databáze, tabulky nebo jejich definice
- SELECT - Vybírá data z databáze, umožňuje výběr podmnožiny a řazení dat
- SELECT + názvy sloupců, nebo * , nebo definování nových a agregovaných sloupců
- nové pojmenování sloupců pomocí AS
- ALL - vše
- DISTINCT - odstranění duplicit
- FROM - z které tabulky, poddotazu nebo pohledu
- WHERE - podmínka
- AND, OR, NOT
- predikáty
- GROUP BY - volba atributů pro agregaci
- HAVING - podmínka pro agregovaná data
- ORDER BY - řazení
Spojování tabulek
- JOIN
- CROSS JOIN - kartézský součin všech řádků z obou tabulek (všechny kombinace)
- NATURAL JOIN - výsledkem pouze řádky, které mají stejné hodnoty atributů
- INNER JOIN - defaultní JOIN
- podmínka ON
- USING atribut - odpovídá natural join
- pokud bez ON nebo USING - odpovídá cross join
- OUTER JOIN - řádky z inner joinu a řádky, které nemohou být spojeny (hodnoty doplněny NULL)
- LEFT / RIGHT - řádky z levé / pravé tabulky
- FULL - z obou
- UNION JOIN - řádky jsou integrovány do jedné tabulky, žádné řádky nejsou spojeny