FAV-ZCU/KIV DB1/04. Relační model dat.md

8.7 KiB

Relační model dat

E-R-A vs relační model dat

  • E-R-A model
    • konceptuální
    • modelujeme reálný svět
  • Relační model dat
    • interní model
    • nahlížení na data, která jsou uložena na disku

Matematická definice relace

  • Nechť je daný systém \{D_{i}, i \in \langle 1, n \rangle\} neprázdných množin, tzv. domén.
  • Potom podmnožinu kartézského součinu R \subseteq D_{1} \times D_{2} \times \dots \times D_{n} nazveme relací stupně n nad D_{1}, D_{2}, \dots, D_{n}.
  • Prvky relace R jsou uspořádané n-tice ($d_{1}, d_{2}, \dots, d_{n}$) takové, že d_{i} \in D_{i} pro i \in \langle_{1}, n\rangle.

Pohled na relační model dat

  • relační model dat zobrazuje data tabulkou
  • relace je tabulka s m řádky a n sloupci
  • každý sloupec je atribut
  • v relaci R neexistují dna stejné řádky
  • pořadí řádků i sloupců je nevýznamné

Porovnání přístupů

Souborově orientovaný přístup E-R-A model Datová struktura Relační model
soubor entitní množina tabulka relace
záznam entita řádek uspořádaná n-tice
položka atribut sloupec (název) doména (název)
  • doménou můžeme chápat i množinu hodnot, kterých prvek z n-tice může nabývat

Relační klíče

  • superklíč (superkey)
    • atribut nebo množina atributů, který/á jednoznačně identifikuje uspořádanou dvojici n-tice dané relace
  • složený klíč (composite key)
    • superklíč s dvěmi či více atributy
  • kandidát klíče (candidate key)
    • superklíč, jehož žádná podmnožina neplní funkci superklíče dané relace
  • primární klíč (primary key)
    • vybraný kandidát klíče, obsahující co nejmenší množinu atributů
  • alternativní klíč (alternate key)
    • kandidát klíče splňující vlastnost primárního klíče, který za primární klíč nebyl vybrán

Relační (databázové) schéma

  • Relační schéma
    • množina atributů včetně jejich domén relace R
      • R(A_{1}:D_{1}, A_{2}:D_{2}, \dots, A_{n}:D_{n})
    • obvykle se používá zápis bez domén atributů
      • R(A_{1}, A_{2}, \dots m A_{n})
    • atributy primárního klíče jsou v relačním schématu vyznačeny podtržením
  • Relační databázové schéma
    • množina relačních schémat, každé s unikátním názvem relace

Příklady relačních schémat

  • Student(číslo_studenta, jméno, příjmení, rok_narození, adresa)
  • Známka(číslo_studenta, zkr_předmětu, známka, datum, pokus)

Důležité pojmy

  • Databáze
    • též báze dat
    • konečná množina v čase proměnných konečných relací
  • Relační schéma databáze
    • skládá se z databáze a integritních omezení

Integritní omezení

Definice integritních omezení

  • integritní omezení: pravidla pro hodnoty objektů v databázi, které musí být splněny, aby odpovídaly reálnému světu
  • příklad: učitel a student se dohodnou na známce 1, ale do systému učitel zapíše
    • trojku - nejedná se o porušení integritních omezení, jen je do databáze zapsán chybný údaj
    • pětku - jedná se o porušení integritních omezení, systém hodnotu nedovolí zapsat

Realizace integritních omezení

  • omezující podmínky hodnot a vztahů jsou běžné, a možnosti SQL či jiných nástrojů SŘBD na ně reagují
  • Deklarativní realizace integritních omezení
    • zadávána v rámci definice dat (např. CREATE TABLE)
  • Procedurální realizace integritních omezení:
    • triggery
    • uložená procedura
    • ošetření programem (aplikací)

Klasifikace integritních omezení

  • Entitní integrita (Entity Integrity Constraints)
    • jednoznačná identifikace entity v tabulce
    • zajišťuje primární klíč
      • jednoznačná hodnota UNIQUE
      • musí být vyplněn NOT NULL
  • Doménová integrita (Domain Integrity Constraints)
    • každá hodnota v databázi musí být z množiny přípustných pro daný atribut
      • typem
      • rozsahem
      • výčtem
      • speciálním odkazem
  • Referenční integrita (Referential Integrity Constraints)
    • korektnost vztahů mezi entitami
    • vazba mezi nadřízenou a podřízenou tabulkou (1:N) pomocí primárního a cizího klíče

Příklady referenční integrity

  • student a jeho známky
    • existuje-li známka bez studenta, databáze je nekonzistentní
  • čtenář a jeho výpůjčky
  • předměty zajišťované katedrou
    • výuka předmětu nemusí být nutně zajištěna katedrou, takže hodnoty atributů cizího klíče mohou být NULL

Udržení referenční integrity

  • Restriktivní způsob
    • výchozí nastavení
    • operace vedoucí k narušení integrity nebude provedena
    • typy operací
      • zrušení řádku v nadřízené tabulce, pokud existuje závislý řádek v podřízené
      • vložení řádku do podřízené tabulky, pokud neexistuje řádek v nadřízené
        • patří sem i aktualizace cizího klíče
  • Kaskádní způsob
    • velmi mocný (a nebezpečný) nástroj
    • změny se dopraví i do podřzených tabulek, aby byla integrita zachována
    • typy operací
      • závislé řádky k rušenému řádku nadřazené tabulky budou zrušeny
      • změna primárního klíče se provede i u cizích klíčů
  • Nastavení hodnoty NULL
    • lze použít jen v případech volné vazby

Relační algebra

Základní operace

  • selekce (selection)
  • projekce (projection)
  • kartézský součin (cartesian product)
  • sjednocení (union)
  • množinový rozdíl (set difference)
  • přejmenování (rename)

Odvozené operace

  • spojení (join)
  • průnik (intersection)
  • dělení (division)

Výsledkem každé operace s relacemi je opět relace.

Projekce

  • operace projekce relace R se schématem A, R(A) na množinu atributů B, kde B \subseteq A
  • vytvoří relaci se schématem B a prvky, které vzniknou z původní relace ostraněním atributů A \setminus B
  • odstraněny jsou i případné duplicity
  • značíme \Pi_{B}(R)

Selekce

  • operace selekce relace R podle podmínky \phi
  • vytvoří relaci se stejným schématem a ponechá ty prvky z původní relace, které splňují podmínku \phi
  • formule \phi je Booleovský výraz s taomickými formulemi ve tvaru t_{1} \Theta t_{2}
    • kde \Theta \in \{<, \leq, = \geq, >, \neq\}
    • a t_{i} je buď konstanta nebo jméno atributu
  • značíme \sigma_{\phi}(R)

Kartézský součin

  • operace kartézský součin dvou relací R(A) a S(B)
  • vytvoří relaci se schématem zahrnující nejprve všechny atributy schématu A následované všemi prvky schématu B a prvky, které vzniknou spojením každého prvku relace R s každým prvem relace S
  • schémata A a B by neměla mít společné atributy
  • značíme R \times S = S \times R

Sjednocení

  • operace sjednocení
  • vytvoří relaci se všemi prvky obou relací R a S
  • duplicitní prvky jsou odstraněny
  • obě relace musí mít kompatibilní schémata
    • stejný počet atributů
    • atributy na stejných pozicích musí mít stejnou doménu
  • značíme R \cup S = S \cup R

Množinový rozdíl

  • operace množinový rozdíl dvou relací R a S
  • vytvoří relaci se všemy prvky R, které nejsou v S
  • pořadí relací v zápise je důležité
  • obě relace musí mít kompatibilní schémata
  • značíme R \setminus S \neq S \setminus R

Přejmenování

  • operace přejmenování relace R(A) na relaci S(B)
  • vytvoří relaci se všemi prvky R které může a nemusí být přejmenována na S a která bude mít přejmenovaný alespoň jeden atribut svého schématu
  • značení
    • přejmenování všeho: \rho_{S(B)}(R)
    • přejmenování relace: \rho_{S}(R)
    • přejmenování atributů: \rho_{a=x, b=y}(R)

Průnik

  • operace průnik R a S
  • vytvoří relaci zahrnující jen ty prvky, které jsou současně prvky relace R i S
  • obě relace musí mít kompatibilní schémata
  • značíme R \cap S = S \cap R

Spojení

  • operace spojení dvou relací R(A) a S(B)
  • vytvoří novou relaci
    • se schématem (A \cup B)
      • \Theta spojení (theta join)
      • přirození spojení (natural join)
      • vnější spojení (outer join)
    • se schématem A
      • polospojení (semijoin)
      • antijoin

Dělení

  • operace dělení dvou relací R(A) a S(B)
  • vytvoří relaci se schématem A \setminus B, kde B \subseteq A a prvky získané projekcí nad relací R, kterým odpovídají všechny prvky relace S
  • pořadí relací v zápise je důležité