Databázový systém
= skupina informací, prostředků a technik slouící k práci s informačními systémy
•Báze dat
-mnoina vzájemně propojených dat
•Systém řízení báze dat
-programové vybavení, které řídí přístupy k datům
Základní rys: vzájemná nezávislost dat a aplikačních programů
Proces návrhu relační databáze:
Zadání úlohy, sběr poadavků různých uivatelů
Konceptuální schéma (E-R model)
Databázový model (u relačních databází jde o převod do tabulek a jejich vzájemné propojení pomocí relací)
Fyzické schéma (organizace datových struktur, indexování apod.)
Konceptuální schéma
formální popis reálného světa vytvářející model databázového systému
E-R model (Entita-Relace) - popisuje uivatelskou aplikaci na konceptuální úrovni, způsob zápisu konceptuálního modelu, obsahuje typy entit a typy vztahů
E-R model lze znázornit textově nebo graficky.
Textový zápis:
E: Vlastník (RC, Adresa, …)
Parcela (PC, Výměra, …)
R: Vlastní (Vlastník, Parcela)
Grafický zápis: pro entity, vztahy a atributy se pouívají speciální grafické značky
entity vztahy atributy
Atributy se někdy zapisují přímo k entitě, klíčové atributy se podtrhují.
Ukázka grafického zápisu E-R modelu
Etapy tvorby konceptuálního modelu:
1. nalezení objektů
2. určení vztahů mezi objekty
3. nalezení primárního klíče
4. určení popisných atributů (vlastností) a integritních omezení
Nalezení objektů - terminologie
Entita (objekt) - reálný objekt (lékař, pacient, student, kniha)
abstraktní objekt (diagnóza, objednávka)
Atribut - vyjádření vlastnosti entity (RČ, jméno, adresa)
Doména - obor hodnot daného atributu (text, datum, číslo 1-5)
Instance - konkrétní hodnota objektu, entity, atributu (Novák, zápal plic)
Určení vztahů mezi objekty
Mezi entitami vznikají vazby - vztahy.
Vztahy charakterizuje kardinalita vztahů.
Kardinalita vztahu - číslo, které určuje kolik instancí vstupuje do vztahu
1:1 - kadé entitě odpovídá maximálně jedna druhá entita (kadý člověk má pouze jedno rodné číslo)
1:N - první entitě odpovídá více ne jedna druhá entita, druhé entitě odpovídá maximálně jedna první entita (čtenář si půjčí více knih, ale 1 kniha je čtena 1 čtenářem)
M:N - první entitě odpovídá více ne jedna druhá entita, druhé entitě odpovídá více ne jedna první entita (učitel vyučuje v několika třídách a ve třídě učí několik učitelů)
Dekompozice M:N vztahu
Vztah M:N se rozkládá na dva jednodušší vztahy 1:N
-->vytvoří se nová entita na pozici původního vztahu a vyjádří se nové vztahy k původním entitám
Př.
Řešení: na pozici vztahu VLASTNÍ se zavede entita VLASTNICTVI a nové vztahy MA a PATRI.
Rozlišujeme 3 typy entit ve vztazích:
•nezávislá - instance nemají povinné členství ve vztahu
př. pacient (nezávislý) - návštěva lékaře
•existenčně závislá -v závislé neexistuje ani jedna instance, která by nevstoupila do vztahu s nezávislou
př. pacient (nezávislá) - návštěva lékaře (existenčně závislá).
•identifikačně závislá- je existenčně závislá a navíc neexistuje ádná monost jak definovat identifikační klíč s pouitím pouze jejích atributů (je třeba pouít klíč nezávislého typu)
př. učitel - závěrečná práce
Nalezení primárního klíče
Primární klíč (identifikační klíč)
Atribut v dané entitě, který jí jednoznačně identifikuje (např. rodné číslo)
Cizí klíč (nevlastní klíč)
Atribut v závislé entitě, který je v nezávislé entitě primárním klíčem
Podmínky pro primární klíč (PK):
•hodnota PK musí být jedinečná
•entita můe mít pouze 1 PK
•PK můe být i sloený (z více atriburů)
•kadá instance PK musí být definována jako NOT NULL (NULL = označuje chybějící nebo neznámou hodnotu v nějakém poli)
Integritní omezení
Integritní omezení - pravidla, která zajišují korektnost databáze a její soulad s modelovanou realitou.
Typy: Entitní, doménové a referenční.
Entitní - v ádné entitě nesmí existovat duplicitní instance (dva stejné záznamy)
- zajistí se přiřazením primárního klíče
Doménová - podmínky platnosti pro jednotlivé atributy
- hodnoty atributů musí odpovídat definovaným doménám (celé číslo 1-5)
Referenční integrita - omezení vztahu mezi 2 entitami (závislou a nezávislou tabulkou)
- k definování referenční integrity slouí primární klíč nezávislé entity a cizí klíč závislé entity
- hlídá operace INSERT (vloení záznamu), UPDATE (aktualizace záznamu), DELETE (vymazání záznamu)
Př. pacient (nezávislá) - návštěva lékaře (závislá)
Nezávislá entita:
Insert - bez omezení
Update - pouze u instance, které neodpovídá ádná instance v závislé entitě (tzn. nelze měnit identifikační číslo pacienta, pokud máme záznamy o jeho návštěvách v tabulce návštěva)
Delete - jako Update (tzn. nejdříve smazat záznam v závislé tabulce, pak v nezávislé)
Závislá entita
Insert - pouze u instance, které odpovídá instance v nezávislé entitě (př. nelze vloit záznam o návštěvě pacienta pokud nemám pacienta v databázi)
Update - pouze u instance, které odpovídá instance v nezávislé entitě
Delete - bez omezení
Pozn. V Accessu můeme referenční integritu zmírnit zadáním:
AKTUALIZACE SOUVISEJÍCÍCH POLÍ V KASKÁDĚ - hodnoty v primární tabulce můeme měnit a ty budou automaticky aktualizovány v podřízené tabulce
ODSTRANĚNÍ SOUVISEJÍCÍCH POLÍ V KASKÁDĚ -
hodnoty v primární tabulce můeme odstranit a ty budou automaticky odstraněny v podřízené tabulce
Databázový model relační databáze
•Navrena E.F. Coddem (konec 60. Let)
•entity a vztahy se reprezentují pomocí tabulek (tabulce z matematického hlediska odpovídá relace)
•Relace - tabulka s m řádky a n sloupci
•řádek = 1prvek relace (záznam)
•sloupec = atribut (pole)
•n = stupeň relace
•m = kardinalita relace
•Podmínky pro tabulky:
•pořadí sloupců je nevýznamné
•homogenita sloupců - domény mají data stejného typu
•neexistují dva stejné řádky
Převod E-R modelu do relačního databázového modelu
(do jisté míry algoritmická záleitost):
Pro kadou entitu definujeme relaci (tabulku)
Provedeme transformaci vztahů:
1 : 1 většinou se převede do jedné tabulky
1 : N přidá se primární klíč nadřízené relace do podřízené
M:N vytvoří se nová relace obsahující primární klíče obou relací
Normální formy (proces normalizace)
- zásady, „kritéria“ dobrého návrhu databázového schématu, tak, aby byly odstraněny některé nepříjemné faktory např. nadbytečnost dat
Správně vytvořené tabulky splňují 4 základní normální formy.
1. normální forma
Všechny atributy jsou atomické, tj. dále ji nedělitelné.
Př.
JMÉNO PŘÍJMENÍ BYDLIŠTĚ
jan novák Ostravská 16, Praha 16000
petr nový Svitavská 8, Brno 61400
jan nováček Na bradlech 1147, Ostrava 79002
chyba: - atribut BYDLIŠTĚ není atomický, skládá se z několika částí: ULICE, ČÍSLO, MĚSTO a PSČ
správně:
JMÉNO PŘÍJMENÍ ULICE ČÍSLO MĚSTO PSČ
jan novák Ostravská 16 Praha 16000
petr nový Svitavská 8 Brno 61400
jan nováček Na bradlech 1147 Ostrava 79002
Obecně bychom se měli snait, aby obsahem jedné databázové poloky byla právě jedna hodnota (určitého databázového typu).
2. normální forma
Kadý neklíčový atribut nesmí být funkčně závislý na vlastní podmnoině primárního klíče
(to znamená, e se nesmí v řádku tabulky objevit poloka, která by byla závislá jen na části primárního klíče)
2NF se týká jenom tabulek, kde volíme za primární klíč více poloek ne jednu. Jinými slovy, pokud má tabulka jako primární klíč jenom jeden sloupec, pak 2NF je splněna triviálně.
Př.
ČÍSLO JMÉNO PŘÍJMENÍ ČÍS_PRAC NÁZEV_PRAC
1 jan novák 10 studovna
2 petr nový 15 centrála
3 jan nováček 10 studovna
Jaký primární klíč zvolíme v této tabulce? Pokud zvolíme pouze ČÍSLO, je to špatně, nebo zcela určitě název pracoviště, kde zaměstnanec pracuje, není závislý na číslu pracovníka. Take za primární klíč musíme vzít dvojici (ČÍSLO,ČIS_PRAC). Tím nám ovšem vznikl nový problém. Poloky JMÉNO, PŘÍJMENÍ a NÁZEV_PRAC nejsou úplně závislé na dvojici zvoleného primární klíče.
správně:
ČÍSLO JMÉNO PŘÍJMENÍ ČIS_PRAC ČÍSLO NÁZEV
1 jan novák 10 10 studovna
2 petr nový 15 15 centrála
3 jan nováček 10
3. normální forma
Žádný atribut, který není primárním klíčem, není tranzitivně závislý na ádném klíči.
Př.
ČÍSLO JMÉNO PŘÍJMENÍ FUNKCE PLAT
1 jan novák technik 15000
2 petr nový vedoucí 21500
Vysvětlení pojmu tranzitivní závislosti:
atributy JMÉNO, PŘÍJMENÍ a FUNKCE závisí na atributu ČÍSLO (ten by nejspíš byl primárním klíčem), atribut PLAT zřejmě je funkčně závislý na atributu FUNKCE
tedy: ČÍSLO->FUNKCE a FUNKCE->PLAT, dostaneme díky tranzitivitě, e ČÍSLO->PLAT.
správně:
ČÍSLO JMÉNO PŘÍJMENÍ FUNKCE FUNKCE PLAT
1 jan novák technik vedoucí 21500
2 petr nový vedoucí správce 17500
3 jan nováček správce technik 15000
Boyce-Coddova normální forma
Pro dvě mnoiny atributů A a B platí: A->B a současně B není podmnoinou A, pak mnoina A obsahuje primární klíč tabulky.
Naivní uivatel
Kvalifikovaný uivatel
Aplikační programátor
Administrátor báze dat
Uivatelé
Aplikační rozhraní
Aplikační
program
Dotazy
Databázová schémata
Systém řízení báze dat
Báze dat