8.7 KiB
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
nadD_{1}, D_{2}, \dots, D_{n}
. - Prvky relace
R
jsou uspořádané n-tice (d_{1}, d_{2}, \dots, d_{n}
) takové, žed_{i} \in D_{i}
proi \in \langle_{1}, n\rangle
.
Pohled na relační model dat
- relační model dat zobrazuje data tabulkou
- relace je tabulka s
m
řádky an
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
- množina atributů včetně jejich domén relace
- 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
)
- zadávána v rámci definice dat (např.
- 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
- jednoznačná hodnota
- 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
- každá hodnota v databázi musí být z množiny přípustných pro daný atribut
- 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
- výuka předmětu nemusí být nutně zajištěna katedrou, takže hodnoty atributů cizího klíče mohou být
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ématemA, R(A)
na množinu atributůB
, kdeB \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 tvarut_{1} \Theta t_{2}
- kde
\Theta \in \{<, \leq, = \geq, >, \neq\}
- a
t_{i}
je buď konstanta nebo jméno atributu
- kde
- značíme
\sigma_{\phi}(R)
Kartézský součin
- operace kartézský součin dvou relací
R(A)
aS(B)
- vytvoří relaci se schématem zahrnující nejprve všechny atributy schématu
A
následované všemi prvky schématuB
a prvky, které vzniknou spojením každého prvku relaceR
s každým prvem relaceS
- schémata
A
aB
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
aS
- 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
aS
- vytvoří relaci se všemy prvky
R
, které nejsou vS
- 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 relaciS(B)
- vytvoří relaci se všemi prvky
R
které může a nemusí být přejmenována naS
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)
- přejmenování všeho:
Průnik
- operace průnik
R
aS
- vytvoří relaci zahrnující jen ty prvky, které jsou současně prvky relace
R
iS
- obě relace musí mít kompatibilní schémata
- značíme
R \cap S = S \cap R
Spojení
- operace spojení dvou relací
R(A)
aS(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
- se schématem
Dělení
- operace dělení dvou relací
R(A)
aS(B)
- vytvoří relaci se schématem
A \setminus B
, kdeB \subseteq A
a prvky získané projekcí nad relacíR
, kterým odpovídají všechny prvky relaceS
- pořadí relací v zápise je důležité