Databázové systémy Relační model
Relační DB systémy E.F.Codd: „A relational data model for large shared data banks“ - 1970 Oddělení logické struktury dat od implementace, Transparentnost přístupových metod při manipulacích s daty, Poskytnutí matematické podpory pro manipulaci s daty, Poskytnutí matematické podpory k omezení redundance při návrhu logické struktury databáze. Složky relačního modelu dat Relační datová struktura Obecná integritní omezení pro relační databáze Manipulace s daty v relační databázi
Základní pojmy Relací druhého stupně rozumíme kartézský součin dvou neprázdných množin. Znázorníme jej formou tabulky, která má m řádků a n sloupců. V komerčně používaných SŘBD se místo pojmu relace používá pojem tabulka (Table). Vztah pojmu relace v relačním modelu dat a pojmu tabulka: relace - základní abstraktní pojem relačního modelu tabulka - forma znázornění relace Na osobních počítačích se dnes provozují převážně SŘBD s relační architekturou.
Je nezbytné, aby každá tabulka v databázi měla své jedinečné jméno. Pole (Atribut, Field) – sloupec tabulky - definuje jednu položku. Každé pole musí mít svůj název a musí být určitého datového typu. Záznam (Record) - řádek tabulky - reprezentuje souhrn údajů o daném objektu. Datové typy - základní Textový typ - textový řetězec, max. délky 255 znaků. Číselné typy - pro uložení celých a reálných čísel . Datumový typ - pro uložení datumu nebo datumu a času. Logický typ - slouží k uložení logické hodnoty Ano/Ne. Memo - pro uložení textu proměnné délky.
Tabulkové vyjádření relace a její vlastnosti Atribut2 Atribut3 Atribut n Atribut1 záznam položka Struktura tabulky Název „relační model“ a „relační databáze“ je odvozen od faktu, že relace je základním abstraktním pojmem modelu a jedinou strukturou databáze na logické úrovni.
Př. Spořitelna - tabulky KLIENT: r_cislo jmeno prijmeni ulice mesto 601012/1224 Jan Nový Jánská 25 Zlín 826111/5267 Petra Nováková Poštová 128 Lešná 580506/4891 Pavel Nováček Nezvalova 697 Zlín 795302/2459 Ivana Novotná Pod mlýnem 12 Lukov ÚČET: POBOČKA: c_uctu stav r_cislo pobocka nazev jmeni 4568517 42000 826111/5267 Zarámí 4463 T.Bati 2132 5000000 6585485 75000 580506/4891 T.Bati 2132 Zarámí 4463 8000000 3256151 25000 826111/5267 T.Bati 2132 TRANSAKCE: c_uctu c_transakce castka datum 6585485 1 -2100 11.09.2007 4568517 1 -4560 11.09.2007 6585485 2 10000 12.09.2007
Typy relací pojmenované - bázové (reálné) - pohledy (virtuální) - materializované pohledy - odvozené, ale existující - dočasné nepojmenované - výsledky dotazů - mezivýsledky
Integritní pravidla v relačním modelu Jsou to omezení plynoucí z reality reprezentované daty v dané databázi Typy integritních omezení: specifická – pro konkrétní aplikaci obecná – musí platit v každé databázi daného typu Obecná omezení v relačním modelu se týkají primárních a cizích klíčů.
Primární klíč - atribut, který jednoznačně identifikuje n-tici v relaci Atribut K relace R se nazývá kandidátním klíčem, když má tyto dvě časově nezávislé vlastnosti: jednoznačnost minimalita (neredukovatelnost). Primárním klíčem PK je jeden (vybraný) z kandidátních klíčů, zbývající kandidátní klíče se nazývají alternativní. -způsob výběru primárního klíče není v relačním modelu specifikován Každá n-tice bázové relace musí být v každém okamžiku jednoznačně identifikovatelná hodnotou primárního klíče.
Cizí klíč Atribut FK bázové relace R2 se nazývá cizí klíč, právě když splňuje tyto časově nezávislé vlastnosti: 1. Každá hodnota FK je buď plně zadaná nebo plně nezadaná. 2. Existuje bázová relace R1 s primárním klíčem PK takovým, že každá zadaná hodnota FK je identická s hodnotou PK nějaké n-tice relace R1. Pravidlo referenční integrity DB nesmí obsahovat žádnou nesouhlasnou hodnotu cizího klíče.
Indexy Jsou takové prvky dat, podle nichž lze jednoznačně určit i ostatní atributy téhož záznamu. Indexy podstatně urychlují vyhledávání v databázi. Unikátní - jednoznačný index - hodnoty v indexu se nesmí opakovat Primární - stejný jako unikátní index, může být pouze jeden v tabulce - tento klíč jednoznačně identifikuje záznam Neunikátní - hodnoty se smějí libovolně opakovat.
Relační algebra Tradiční operace Relační algebrou rozumíme dvojici RA = (R, O), kde nosičem R je množina relací a O je množina operací, která zahrnuje: tradiční operace - sjednocení, průnik, rozdíl, součin speciální operace -projekce, selekce (restrikce), spojení a dělení. Tradiční operace Sjednocení relací R1 = (R, R1*) a R1 = (R, R2*) se schématem R je relace R1 UNION R2 = (R, R1* ∪ R2*). Průnik - R1 INTERSECT R2 Rozdíl - R1 MINUS R2 Kartézský součin relací R1 = (R1, R1*) a R2 = (R2, R2*) je relace R1 TIMES R2 = ((R1,R2), R1* x R2*).
Speciální relační operace Unární - projekce, selekce (restrikce) Binární - spojení, dělení Projekce - výběr atributů Selekce - výběr záznamů
Spojení Přirozené spojení relací R1 a R2 je relace R1 JOIN R2
Vztahy mezi tabulkami – 1 : 1 Nejjednodušším typem vztahu jsou vztahy jedna ku jedné. 1 : 1 KANCELÁŘ ZAMĚSTNANEC Představme si, že modelujeme kancelářské prostory v určité budově. Budeme-li předpokládat, že v každé kanceláři sedí pouze jeden člověk, dostáváme tím vztah jedna ku jedné.
Vztahy mezi tabulkami – 1 : N ODDĚLENÍ ZAMĚSTNANEC Nejběžnější vztah mezi entitami představují vztahy jedna k více. Dobře identifikovatelný vztah typu jedna k více přináší s sebou málokdy nějaké problémy.
Vztahy mezi tabulkami – M : N PROJEKT ZAMĚSTNANEC V reálném světě najdeme spoustu příkladů vztahů více k více. Studenti mohou mít zapsáno několik různých přednášek a podobně jedné přednášky se může účastnit více různých studentů. Každý zákazník nakupuje v řadě obchodů a jeden obchod má mnoho zákazníků. V relační databázi se však vztahy více k více přímo implementovat nedají. Modelují se proto s pomocí speciálního „prostředníka“, speciální samostatné relace, která má s každým z obou původních účastníků vztah jedna k více.
Unární vztahy Všechny vztahy, o nichž jsme zatím hovořili, byly binární vztahy se dvěma účastníky. Unární vztahy mají oproti tomu jen jednoho účastníka – relace je tedy spojena se sebou sama. Klasickým příkladem unárního vztahu je vazba zaměstnance a nadřízeného. Zaměstnanec má totiž většinou za nadřízeného dalšího zaměstnance, který sám mívá zpravidla také nadřízeného.
Realizace vztahů Vztah 1 : 1 – nejjednodušší vztah v relační DB
Vztah 1 : N – základní vztah v relační DB Realizace prostřednictvím cizího klíče Cizí klíč je primární klíč z tabulky na straně 1 umístěný do tabulky na straně N Zamestnanec.ID PK Dite.IDrodic FK
Realizace pomocí vazebné tabulky Vztah M : N Realizace pomocí vazebné tabulky Zamestnanec.ID PK Projekt.ID PK Vazebná tabulka: ZamestnanecProjekt .IDprojekt FK .IDzamestnanec FK
Databázové schéma v DB systému Access