The wiki page is under active construction, expect bugs.

This is an old revision of the document!


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

Fyzická vrstva

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

Charakteristika

  • Specifikuje jak jsou databázové struktury implementovány ve specifickém prostředí
  • Zahrnuje soubory, indexovací struktury a tak dále

Stránky, sloty a záznamy

  • Záznamy jsou uloženy na disku v blocích (angl. page) fixní velikosti
  • Hardware přistupuje pouze k celým stránkám uloženým na disku (čtení i zápis)
  • Čas, který trvá jedna I/O operace se na rotačním pevném disku spočítá jako součet doby hledání, rotačního zpoždění a přenosu dat
  • stránky bývají rozděleny na sloty ve kterých jsou uložené záznamy, které jsou identifikované číslem stránky + číslem záznamu
  • Záznamy mohou mít fixní nebo variabilní velikost
  • Každá stránka má ještě hlavičku, která obsahuje informace o využití slotů, případně jejich velikosti pokud stránka obsahuje záznamy variabilní velikosti

Buffer management

  • Buffer je část hlavní paměti, kde jsou dočasně uloženy celé stránky z disku, stránky jsou mapovány na paměťové rámce
  • Každý rámec si drží počet referencí na stránku v rámci a dirty flag, který označuje změněný záznam, který nebyl zapsán na disk

Datové soubory

  • Halda je druh souboru, kde záznamy nejsou v blocích řazené a záznamy tedy mohou být vyhledávány pouze sekvenčně, vkládat nové záznamy je snadné, ale při mazání může vznikat nevyužité místo
    • Prázdné stránky jsou udržovány pomocí spojového seznamu nebo tabulky stránek
    • Všechny operace mají lineární složitost, až na vkládání, které je konstantní
  • Řazený soubor je druh souboru, kde jsou záznamy řazeny na základě nějakého klíče
    • Rychlé vyhledávání (logaritmická složitost)
    • Pro vkládání má každá stránka prázdný overhead, pokud je zaplněn jsou použity nové stránky
    • Ve všem kromě vyhledávání je pomalejší než halda

Hashované soubory

  • Soubor je organizovaný do tzv. kapes (anglicky buckets)
  • To v jaké kapse je záznam uložený je rozhodnuto na základě hashovací funkce $f$
  • Pokud je kapsa plná, je alokována nová stránka a propojena s kapsou formou spojového seznamu
  • Výhodou je rychlé vyhledávání, nevýhodou je ale paměťová náročnost (řešeno dynamickým hashováním)
  • Většina operací má přibližně složitost $N/K$, kde $K$ je počet kapes

Indexové struktury

  • Index je pomocná struktura, která poskytuje rychlé vyhledávání na základě hledaných klíčů
  • Obsahuje typicky jenom klíče a odkazy k záznamům, vyžaduje proto výrazně méně místa než datové soubory
  • Index může obsahovat celý záznam, pár klíče a odkazu na záznam, nebo pár klíče a seznamu odkazů na záznam
  • Řazení indexovaných předmětů může být zachováno (clustered indexing) nebo nemusí (unclustered indexing)

B$^+$-stromy

  • Rozšířený B-strom
  • Logaritmická složitost pro vkládání, vyhledávání podle rovnosti a mazání podle rovnosti
  • Garantuje využití alespoň 50% stránek
    • Oproti B-stromu jsou všechny data (klíču jsou stále v B strom struktuře) v listech a stránky příslušné listům jsou provázány pro vykonávání dotazů založených na intervalech

Hašovaný index

  • Stejné jako hašovaný soubor, ale obsahuje pouze odkazy na záznamy

Bitmapy

  • Vhodné pro atributy, které mohou nabývat malého množství hodnot
  • Každý atribut je realizován jako vektor bitů, kde $i$-tý bit popisuje jestli atribut nabývá $i$-té hodnoty nebo ne
  • Dotazy lze pak provádět pomocí bitových masek a bitwise operací
  • Výhody - efektivní, kompaktní, rychlé, snadno paralelizovatelné
  • Nevýhody - Pouze pro atributy s doménou malé kardinality, pomalé dotazy na základě rozsahu (lineární v šířce rozsahu)

Funkční závislosti

Transakce

Navigation

Playground

QR Code
QR Code statnice:bakalar:b0b36dbs (generated for current page)