T1 Relační databázové systémy
C1 Relační databázové systémy (1. část)
1. Základní pojmy 2. Struktura DBS 3. Vztahy a relace 4. Datová integrita
2
Základní pojmy
Proč používat DBS Poskytuje rychlejší přístup k datům
než soubory. Umožňuje přímý přístup k datům. Má zabudovaný mechanismus pro paralelní přístup k datům. Má zabudovaný systém uživatelských práv. Umožňuje pomocí dotazů snadno vybrat množiny dat vyhovující zadaným kritériím.
3
Základní pojmy
Základní pojmy Databáze (DB) Určitá uspořádaná množina dat uložená na paměťovém médiu (počítač, server).
evidence knih, sklad stavebnin, studijní agenda, …
Systém řízení báze dat (SŘBD) Integrovaný softwarový prostředek pro řízení databází.
Rozsáhlé – Microsoft SQL Server, Sybase SQL Server, mySQL, PostgreSQL, Interbase, Oracle, DB2, Informix, Ingres. Malé – dBase, Paradox, FoxPro, Microsoft Access.
Poskytuje prostředky pro definování dat, ukládání, změnu, vymazání a vyhledání dat. Zajišťuje bezpečnost systému a správu přístupových práv.
Databázový systém (DBS) Spojení databáze a systému řízení báze dat.
4
Základní pojmy
Relační databázový systém Databázový systém založený na relačním modelu dat (RMD), relační algebře (RA). Relační model dat definuje způsob reprezentace dat (struktura dat), způsoby jejich ochrany (integrita dat), operace prováděné nad daty (manipulace s daty).
Základní pojmy
5
Relační algebra Dotazovací jazyk pro práci s relacemi (tabulkami). Operace
Množinové: sjednocení, průnik, rozdíl, kartézský součin. Další: projekce (výběr sloupců), selekce (výběr řádků), spojení (spojení tabulek).
Databázové operace vyhledávání (realizuje RA), vkládání, rušení a modifikace.
6
Základní pojmy
Charakteristika RDBS Veškerá data se pomyslně dají
reprezentovat v pravidelně uspořádaných strukturách s řádky a sloupci nazývaných relace. Všechny hodnoty jsou skalární.
V každé konkrétní pozici řádku a sloupce dané relace se nachází právě jedna hodnota.
Operace se provádějí vždy nad celou
relací a jejich výsledkem je opět jiná celá relace (tzv. uzávěr).
7
Komponenty relace Základní pojmy
Záhlaví
Atribut
Vektor hodnot
Tělo
Každý řádek je n-rozměrným vektorem. Popisek atributu název_atributu:doména. Každý řádek relace musí mít jednoznačnou
identifikaci. Relace nesmí obsahovat opakované záznamy.
Základní pojmy
8
Tělo relace neuspořádaná množina nula nebo více vektorů hodnot. Každý prvek množiny je podle
definice jedinečný. Tabulka je současně relací, když každý její řádek má jednoznačnou
identifikaci, neobsahuje opakované záznamy (2 nebo více stejných řádků).
9
Základní pojmy
Datový model Myšlenkový (pojmový) popis modelování
reálného světa. Cílem je vytvořit obraz reality nezávislý na pozdějším způsobu implementace. Vyjadřuje se pomocí
entit, atributů, domén (oborů hodnot), vztahů.
10
Základní pojmy
Entita Součást reálného světa, o níž potřebujeme
uchovávat nějaké informace.
Osoba, místo, věc, událost, myšlenka, …
Sestavením seznamu entit zahajujeme návrh
datového modelu. Použití podstatných jmen a sloves při popisu reality Zákazníci kupují výrobky.
Dodavatelé prodávají výrobky. Zaměstnanci vyrábějí výrobky.
Entity
11
Základní pojmy
Atributy Vlastnosti popisující entity. Příklady entita Zakaznik
kód, jméno, příjmení, adresa, telefon;
entita Vyrobek kód, název, dodavatel, cena; entita Objednavka kód, datum, položka, množství.
Zakaznik KodZak Jmeno Prijmeni Adresa Telefon
12
Základní pojmy
Domény Definice domény (oboru hodnot) Popisuje typ dat představujících daný atribut. Obor hodnot Množina všech přípustných platných hodnot, které smí určitý atribut obsahovat. Nezaměňovat s datovým typem! číslo (datový typ) × věk (doména); vzdělání × příjmení
stejný datový typ (text), různé domény (Ing., MUDr. × Novák, Sladká).
13
Základní pojmy
Vztahy Definují se mezi entitami. Z tvrzení Zákazníci kupují výrobky vyplývá existence jistého vztahu mezi entitami Zákazníci a Výrobky. Entity zapojené do vztahu ¨ účastníci. Počet účastníků vyjadřuje stupeň vztahu. Vztah mezi dvěma libovolnými entitami jedna k jedné, jedna k více , více k více.
14
Základní pojmy
Diagramy entit a vztahů Zobrazení modelu entit a vztahů. Označení: ER diagramy (Entity Relationship Diagrams). Symboly entity atributy vztahy
jedna více nula nula nebo jedna nula nebo více jedna nebo více nula, jedna nebo více
15
Základní pojmy
ER diagram (příklad) Zakaznik CisloObjednavky CisloProdejce DatumObjednavky
Objednavka
Zaměstnanec vytvoří objednávku
Zamestnanec
CisloZamestnance Titul Jmeno Prijmeni
Zaměstnanec hraje fotbal
FotbaloveMuzstvo
IDZamestnance PoziceVMuzstvu
16
Základní pojmy
ER diagram (relační formát, příklad)
Objednavka PK CisloObjednavky Zakaznik CisloProdejce DatumObjednavky FK CisloZamestance
Zamestnanec
Zamestnanec
PK CisloZamestnance
PK IDZamestnance
Titul Jmeno Prijmeni
PoziceVMuzstvu
17
Struktura databázových systémů
Struktura DBS Úkol Zabezpečit, že model bude schopen odpovědět na jakoukoli rozumně položenou otázku. Cíl Minimalizace veškerých redundancí a problémů s nimi spojených. Normalizace Jednotlivé normální formy specifikují pro strukturu relací určitá pravidla.
18
Struktura databázových systémů
Bezztrátová dekompozice Relace v relačním modelu spojujeme
prostřednictvím propojení atributů. Princip bezztrátové dekompozice Při vytváření plně normalizovaného
datového modelu odstraňujeme redundance, přičemž rozdělujeme původní relace tak, abychom nové relace mohli zpětně spojit bez ztráty informace.
19
Struktura databázových systémů
Nenormalizovaná relace
Normalizované relace relace Ucastnici
relace Skoleni
20
Struktura databázových systémů
Kandidátní a primární klíče U každé relace musí existovat určitá kombinace
atributů jednoznačně identifikující každý jednotlivý vektor hodnot. Tato množina jednoho nebo více atributů
se nazývá kandidátní klíč. Relace může mít i více než jeden kandidátní klíč. Jednoznačnou identifikaci jednotlivých vektorů hodnot
musí definovat vždy každý z nich. Kandidátní klíč musí být schopen v jakémkoli daném okamžiku jednoznačně identifikovat všechny možné vektory hodnot.
Struktura databázových systémů
21
Tento atribut není kandidátním klíčem!
Struktura databázových systémů
22
Každá relace musí mít alespoň jeden
kandidátní klíč. Kandidátní klíče se skládají z jediného atributu (jednoduchý klíč), z více atributů (složený klíč). Kandidátní klíč musí být ireducibilní
(nerozložitelný).
Jakákoliv podmnožina této množiny klíčů již nevyjadřuje jednoznačnou identifikaci.
Struktura databázových systémů
23
Atribut Číslo kategorie je kandidátním klíčem. Množina atributů {Číslo kategorie, kategorie Název kategorie} kategorie není kandidátním klíčem, ačkoliv je jedinečná. Atribut Název kategorie je totiž zbytečný.
Struktura databázových systémů
24
Někdy (ne příliš často) může mít jedna relace
i několik možných kandidátních klíčů. Bývá zvykem stanovit jeden z kandidátních klíčů
za primární klíč a ostatní považovat za náhradní (alternativní) klíče. Pokud je jediný možný kandidátní klíč příliš
těžkopádný (mnoho atributů nebo je rozsáhlý), můžeme pro primární klíč použít speciální datový typ ¨ vytvoříme umělé klíče s jednoznačnými hodnotami, vygenerovanými systémem.
25
Struktura databázových systémů
Funkční závislost Je-li v dané entitě mezi atributem A
a atributem B funkční závislost, pak hodnota atributu A určuje hodnotu atributu B. Zapisujeme A → B, čteme A funkčně určuje B. Relace na snímku 23: Každý vektor hodnot se stejnou hodnotou množiny
{Číslo kategorie} má stejnou i hodnotu množiny {Název kategorie, Popis}. Atribut Číslo kategorie funkčně určuje množinu {Název kategorie, Popis} (množina je na atributu funkčně závislá).
Struktura databázových systémů
26
{Číslo kategorie} → {Název kategorie, Popis} Název kategorie Číslo kategorie Popis
27
Struktura databázových systémů
Normalizace Postup, na jehož konci vytvoříme množinu relací,
splňující jistou množinu vlastností.
Nenormalizovaná relace
Výběr primárního klíče Odstranění opakovaných atributů a atributů s násobnými hodnotami
Relace v 1NF
Odstranění částečně závislých atributů Relace v 2NF
Odstranění tranzitivně závislých atributů Relace v 3NF
Aplikace dalších normálních forem (?)
Plně normalizovaná relace
28
Struktura databázových systémů
Potřeba normalizace Nenormalizované relace znamenají určité
problémy projevující se při pokusu o aktualizaci dat. Tyto problémy se označují výrazem anomálie. Důvodem normalizace relací je odstranění anomálií v datech. Anomálie při vkládání. Anomálie při odstraňování. Anomálie při aktualizaci.
29
Struktura databázových systémů
Kritéria pro výběr primárního klíče Pokud je k dispozici jen jeden kandidátní klíč,
vybereme jej. Vybereme ten kandidátní klíč, u kterého je změna hodnoty nejméně pravděpodobná. Změna hodnoty PK po zápisu dat do relací je vždy
komplikovaná, protože PK může být v roli FK v jiných relacích. Hodnoty umělých klíčů jsou téměř vždy méně náchylné ke změnám než klíče přirozené.
Vybereme nejjednodušší kandidátní klíč. Je složen z nejmenšího počtu atributů.
Vybereme nejkratší kandidátní klíč.
Týká se čistě efektivity zpracování. Významná úspora místa, pokud PK je v roli FK v jiných
relacích.
30
Struktura databázových systémů
První normální forma (1NF) Charakteristika tabulkový formát, žádné opakované skupiny, určení primárního klíče (PK). Kroky 1. Odstranění opakovaných skupin. 2. Určení primárního klíče (PK). 3. Určení všech závislostí.
31
Struktura databázových systémů
Příklad Nenormalizovaná relace
CisloLetadla – kandidátní klíč, ale obsahuje
prázdné hodnoty. Nekonzistentní data a anomálie:
transportní × dopravní, anomálie při aktualizaci, anomálie při vkládání, anomálie při odstraňování.
Struktura databázových systémů
Tabulkové uspořádání
Odstranění opakovaných atributů
a atributů s násobnými hodnotami. Určení primárního klíče.
Relace v 1NF
32
Struktura databázových systémů
33
Určení všech závislostí. Diagram závislostí PK: {CisloLetadla, CisloPilota} CisloLetadla
NazevLetadla
CisloPilota
TridaLetu
CenaZaLetovouHodinu
tranzitivní závislost
částečná závislost
částečná závislost
PK: {CisloPilota} CisloPilota
JmenoPilota
PrijmeniPilota
LetoveHodiny
34
Struktura databázových systémů
Druhá normální forma (2NF) Charakteristika 1NF, žádné částečné závislosti. Kroky 1. Oddělení kandidátních klíčů. 2. Přiřazení závislých atributů klíčům. 3. Oprava diagramu závislostí.
35
Struktura databázových systémů
Opravený diagram závislostí
CisloLetadla
CisloPilota
NazevLetadla
TridaLetu
CenaZaLetovouHodinu
tranzitivní závislost
CisloLetadla
CisloPilota
CisloPilota
JmenoPilota
LetoveHodiny
PrijmeniPilota
36
Struktura databázových systémů
Třetí normální forma (3NF) Charakteristika 2NF, žádné tranzitivní závislosti. Kroky 1. Určení nových klíčů. 2. Určení závislých atributů. 3. Odstranění závislých atributů z tranzitivních závislostí. 4. Oprava diagramu závislostí.
37
Struktura databázových systémů
Opravený diagram závislostí CisloLetadla
NazevLetadla
CisloLetadla
TridaLetu
TridaLetu
CenaZaLetovouHodinu
CisloLetadla
CisloPilota
CisloPilota
LetoveHodiny
JmenoPilota
PrijmeniPilota
38
Vztahy a relace
Terminologie Entity svázané určitým vztahem
se nazývají účastníky vztahu. Počet účastníků je stupeň vztahu. Binární vztahy ¨ vztahy o dvou účastnících (převážná většina vztahů). Unární vztahy ¨ vztah o jednom
účastníkovi, tj. účastník svázaný sám se sebou (běžné). Ternární vztahy ¨ vztahy o třech účastnících (někdy).
Vztahy a relace
39
Klasifikace vztahů a entit do nich zapojených úplná nebo částečná účast, povinná nebo volitelná entita, slabá nebo silná entita.
Typ účasti entity závisí na tom, jestli může entita
existovat i bez účasti ve vztahu.
Příklad – entity Zakaznik a Objednavka
Účast entity Zakaznik v jejich vzájemném vztahu je jen částečná, protože informace o zákazníkovi můžeme zadat i bez toho, aby musel podat první objednávku. Entita Objednavky vykazuje úplnou účast, protože objednávku může podat pouze konkrétní zákazník. Zakaznik ¨ částečná účast, volitelná entita, silná entita. Objednavka ¨ úplná účast, povinná entita, slabá entita.
Vztahy a relace
40
Instance entity ¨ jeden konkrétní výskyt dané
entity.
Např. zákazník Josef Novák je jednou instancí entity
Zakaznik.
Kardinalita vztahu ¨ maximální počet vztahů
daného typu, kterých se může účastnit jedna entita. Obecné typy kardinality jedna k jedné, jedna k více, více k více.
41
Vztahy a relace
Modelování vztahů Je-li mezi dvěma entitami vztah, musíme
jej vhodně namodelovat.
Zahrneme příslušné atributy z jedné relace (primární relace) i do druhé relace (cizí relace).
Objednavky
RozpisObjednavek
CisloObjednavky KK
CisloObjednavky FK
KodZakaznika
CisloVyrobku
DatumObjednavky
JednotkovaCena
DodatDne
Mnozstvi
…
Sleva
42
Volíme takové atributy, které jednoznačně
identifikují primární entitu. Vztahy a relace
Do cizí relace doplníme atributy tvořící kandidátní klíč
primární relace.
Opakované atributy v cizí relaci ¨ cizí klíč
(foreign key, FK). Relace Objednavky je primární relací. Do relace RozpisObjednavek jsme doplnili atribut CisloObjednavky, který je kandidátním klíčem relace Objednavky. Relace RozpisObjednavek je cizí relací, CisloObjednavky je cizím klíčem relace RozpisObjednavek.
43
Vztahy a relace
Vztahy typu jedna k jedné Každou libovolnou instanci první entity
můžeme spojit pouze s jedinou instancí druhé entity, a naopak každou libovolnou instanci druhé entity můžeme spojit pouze s jedinou instancí první entity. Manžel
Manželka
Použití snížení počtu atributů v relaci, vytvoření podtřídy určité entity.
Vztahy a relace
44
Podtřídy entit Máme relace Kategorie a Pozice. Každý výrobek je přiřazen do jisté kategorie výrobků. S výrobkem můžeme pracovat pouze jako s obecným výrobkem, nikoli jako instancí jeho konkrétní kategorie.
Atributy, definované pro výrobky, má u sebe uloženy jakýkoli výrobek bez ohledu na svůj typ. Např. nápoje mají ze své podstaty jiné atributy než třeba koření.
Vztahy a relace
45
Model s podtřídami entit
Vztahy a relace
46
Identifikace primární a cizí relace Někdy bývá dosti ošidná. Musí jednoznačně vycházet ze sémantiky datového modelu. Ve struktuře s podtřídami entit se obecná entita (Vyrobky) stane primární relací a jednotlivé podtřídy (Napoje, Koreni, Plodiny, …) budou tvořit cizí relace.
47
Vztahy a relace
Vztahy typu jedna k více Nejběžnější typ vztahů mezi entitami. Jednu instanci první entity můžeme spojit s nula, jednou nebo více instancemi druhé entity, ale naopak každá instance druhé entity může být spojena nejvýše s jednou instancí první entity. Zakaznik
Objednavky
Jeden zákazník může realizovat nula, jednu nebo více objednávek, ale každá objednávka může být realizována jen jedním zákazníkem.
Vztahy a relace
48
Identifikace primární a cizí relace Velmi snadná. Entita na straně jedna tvoří vždy primární relaci, její kandidátní klíč se zkopíruje do relace na straně více. Relace na straně více se stává cizí relací. Kandidátní klíč primární relace je často součástí kandidátního klíče cizí relace na straně více, sám o sobě však jednoznačně identifikovat vektory hodnot cizí relace nedokáže.
Kandidátní klíč cizí relace se z něj může stát pouze po spojení s jedním neb více vhodnými atributy.
49
Vztahy a relace
Vztahy typu více k více Zvláštní typ vztahu mezi dvěma
entitami. Libovolnou instanci první entity můžeme spojit s nula, jednou nebo více instancemi druhé entity, ale i naopak libovolnou instanci druhé entity můžeme spojit s nula, jednou nebo více instancemi první entity. Student
Predmet
Vztahy a relace
50
Vztahy typu více k více nelze
realizovat přímo. Modelují se pomocí speciální mezilehlé relace, která má s každým z obou účastníků vztah jedna k více. Mezilehlá relace se obvykle nazývá
spojovací tabulka.
Student
Spojovací tabulka
Predmet
Vztahy a relace
51
Identifikace primární a cizí relace Vyplývá z toho, že vztah typu více k více modelujeme jako dva vztahy typu jedna k více.
Ve vztahu jedna k více je relace na straně jedna vždy primární relací.
Každá z původních entit se v jednom z nových vztahů stane primární relací a spojovací tabulka bude pro oba vztahy cizí relací, přičemž z obou původních relací převezme jejich kandidátní klíče.
Spojovací tabulky obsahují nejčastěji pouze kandidátní klíče dvou původních účastníků.
52
Vztahy a relace
Unární vztahy Mají jen jednoho účastníka ¨ relace
je spojena sama se sebou.
Klasickým případem je vztah
zaměstnance a nadřízeného. Zaměstnanec má obvykle za nadřízeného dalšího zaměstnance, který mívá také nadřízeného. Zamestnanec
Vztahy a relace
53
Modelují se stejným způsobem jako
binární vztahy ¨ kandidátní klíč primární relace se přidá do cizí relace. Jediným rozdílem je to, že primární a cizí relace jsou jedna a tatáž relace. Příklad Kandidátní klíč relace Zamestnanec může být atribut CisloZamestnance, přidáme atribut CisloNadrizeneho Zamestnanec jako cizí klíč.
Unární vztahy mohou být typu jedna
k jedné, jedna k více a více k více.
54
Datová integrita
Datová integrita Vytvoření datového modelu je jednou
z mnoha součástí datového modelování. Zároveň se musí modelovat také datová integrita.
Pravidla zajišťující, že fyzická data uložená v hotovém DBS budou správná, nebo alespoň věrohodná.
Žádný DBS nedokáže garantovat
pravdivost dat v DB ¨ umí jen zajistit, že mohou být pravdivá.
Data musejí vyhovovat jistým definovaným omezením integrity.
55
Datová integrita
Omezení integrity Datová integrita se implementuje
na několika různě podrobných úrovních: doménová integrita, přechodová integrita, entitní integrita, referenční integrita, databázová integrita, transakční integrita.
Datová integrita
56
Doménová, přechodová a entitní omezení
definují pravidla pro údržbu integrity jednotlivých relací. Omezení referenční integrity zajišťují zachování potřebných vztahů mezi relacemi. Omezení databázové integrity kontrolují databázi jako celek. Omezení transakční integrity řídí manipulace s daty v jedné, nebo i mezi několika databázemi.
57
Datová integrita
Doménová integrita Doména (obor hodnot) je množina
všech přípustných hodnot určitého atributu. Omezení doménové integrity (doménové omezení) je pravidlo definující platné hodnoty. K úplnému popisu některých domén
je třeba definovat více než jedno doménové omezení.
58
Datová integrita
Přechodová integrita Omezení přechodové integrity
definují stavy, kterými může vektor hodnot právoplatně přecházet. Stav entity kontroluje: Jediný atribut Přechodovou integritu můžeme považovat za jistý speciální typ doménové integrity. Několik atributů nebo několik relací Pak je vhodné je považovat za samostatný typ omezení.
Datová integrita
59
svobodný/á
ženatý/vdaná
rozvedený/á
ovdovělý/á
Obrázek ukazuje, jakých hodnot může nabývat rodinný stav
60
Datová integrita
Entitní integrita Entitní omezení zabezpečují
integritu entit modelovaných v DB. Na nejjednodušší úrovni ¨ existence primárního klíče (pravé omezení). Primární klíč jednoznačně definuje
každý záznam entity. Není možná existence záznamů se stejným primárním klíčem. Není možná existence záznamu s hodnotou primárního klíče Null.
Datová integrita
61
Omezení integrity definovaná na úrovni entity (ostatní omezení) mohou kontrolovat: Jeden atribut
Integritu modelujeme definicí atributu v určité doméně ¨ atribut zdědí veškerá omezení integrity definovaná pro jeho doménu. Na úrovni entity můžeme tato zděděná omezení zpřísnit (v žádném případě však uvolnit!).
Několik atributů stejné relace
Např. DatumVraceni musí být pozdější nebo rovno DatumVypujcky.
62
Datová integrita
Referenční integrita Omezení referenční integrity udržují
a ochraňují vztahy mezi relacemi.
Zajišťují, že vztahy mezi relacemi zůstanou konzistentní.
Jediné omezení ¨ cizí klíče se nesmějí
stát sirotky:
Žádný vektor hodnot v cizí relaci nesmí obsahovat takovou hodnotu FK, která nemá odpovídající vektor hodnot v primární relaci. Sirotci ¨ vektory hodnot obsahující FK bez odpovídajícího PK v primární relaci.
Datová integrita
63
Vznik sirotka Do cizí relace je přidán vektor hodnot s FK, který neodpovídá žádnému PK v primární relaci. PK v primární relaci je změněn.
Musí být zajištěno promítnutí odpovídající změny i v hodnotách FK ¨ kaskádová aktualizace.
Vektor hodnot v primární relaci, na nějž
se sirotek odkazuje, je odstraněn.
Může být zajištěno zákazem odstranění vektoru hodnot, na který se odkazuje nějaká cizí relace. Může být zajištěno odstraněním vektoru hodnot ze všech relací ¨ kaskádové odstranění.
64
Datová integrita
Databázová integrita Databázové omezení ¨ nejobecnější
forma omezení integrity. Databázová omezení jsou omezeními závislými na několika relacích.
Definují se mezi atributy patřících
do různých relací.
65
Datová integrita
Transakční integrita Omezení transakční integrity
ovládají způsoby přípustné manipulace s databází.
Jsou procedurálního charakteru. Nejsou součástí datového modelu.
Transakce ¨ nedělitelná skupina
určitých operací.
Operace se musejí buď všechny
společně dokončit, nebo se nesmí dokončit žádná z nich.
Datová integrita
66
Příklad transakce ¨ převod peněz
z jednoho bankovního účtu na druhý. Pokud se odečte částka z účtu A, ale pak se sytému nepodaří připsat ji na účet B, znamená to ztrátu peněz po cestě. Řešení: jestliže selhala druhá operace, musí se zrušit i první operace.
Do jedné transakce může být zapojeno
několik různých záznamů, několik různých relací i několik různých databází.