230 likes | 349 Views
Databázové systémy. Relační model. Relační model. E.F.Codd : „ A relational data model for large shared data banks “ - 1970 Vlastnosti: Oddělení logické struktury dat od implementace, Transparentnost přístupových metod při manipulacích s daty,
E N D
Databázové systémy Relační model
Relační model E.F.Codd: „A relational data model for large shared data banks“ - 1970 Vlastnosti: • 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.
Relační model • jde o model uchovávání entit/ vztahů v tabulkách 1 tabulka na entitní/vztahový typ • sloupec tabulky reprezentuje atribut (A) entity • řádek tabulky reprezentuje datovou entitu/vztah (E) • schéma tabulky – popis struktury tabulky (všeho kromě dat) N(Ai:Ti) – kde N je název tabulky, Ai jsou atributy a Ti jejich typy • buňka tabulky na pozici (x,y) uchovává hodnotu atributu A(x) v kontextu entity/vztahu E(y) • schéma relační databáze – množina schémat tabulek (+integritní omezení...)
Struktura tabulky Atribut1 Atribut2 Atribut3 Atribut n záznam položka Tabulkové vyjádření relace a její vlastnosti 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.
Integritní pravidla v relačním modelu Obecná integritní omezení • neexistují 2 stejné řádky (unikátní identifikace entit), • každý řádek je identifikovatelný (odlišitelný od ostatních) jedním nebo více pevně určenými atributy v rámci tabulky - klíč tabulky, • skupina atributů, která existuje i v jiné (tzv. referenční) tabulce a tam tvoří klíč - cizí klíč, • rozsah hodnot atributu je dán typem (typované atributy), • tabulka neobsahuje prázdné buňky - všechny hodnoty jsou definované. • Integritní pravidla jsou omezení plynoucí z reality reprezentované daty v dané databázi • Typy integritních omezení: • obecná – musí platit v každé databázi daného typu • specifická – pro konkrétní aplikaci
Indexy • 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. 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.
Primární klíč • - atribut, který jednoznačně identifikuje n-tici v relaci • Atribut Krelace 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íčemPKje 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 FKbá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!
prim. klíč cizí klíč(klíč v tabulce Autor) prim. klíč Příklad 1 Kniha (Název text, Autor text, Cena číslo, Skladem číslo) Název je primární klíč, Autor je cizí klíč do tabulky Autor(Jméno) Autor (Jméno text, Adresa text, Žije ano/ne)Jméno je primární klíč
složený cizí klíč(klíč v tabulce Auto) složený klíč složený klíč Příklad 2 Řidič (Jméno text, Příjmení text, MK text, SPZ text), Jméno a Příjmení je klíč, MK a SPZ je cizí klíč do tabulky Auto(Mezinárodní kód, SPZ) Auto (Mezinárodní kód: text, SPZ:text, Značka: text)Mezinárodní kód a SPZ je klíč
Převod ER diagramu Výstupem z ER diagramů je seznam tabulek, do kterých budou uložená data, obsahující: • názvy sloupců, • zachování integritních omezení (pokud možno 1:1). Převod obecně • silný entitní typ – tabulka • klíčem je identifikátor entity • slabý entitní typ – tabulka • klíčem je smíšený (externí) identifikátor • vztahový typ – tabulka • počet tabulek a jejich sdílení vztahu a entit se řídí kardinalitami vztahu, do něhož tyto entity vstupují • integritní omezení ve formě klíčů tabulek • n-ární vztahy se převádějí v principu stejně jako binární
Kardinality (1,1) : (1,1) • jediná tabulka – klíčem může být identifikátor libovolné z entit (nebo oba) Relační schéma: OsobaMobil(RČ, jméno, příjmení, ..., sériové číslo, model, výrobce, ...)
Kardinality (1,1) : (0,1) • dvě tabulky T1 a T2 • T1 existuje nezávisle na T2 • T2 obsahuje identifikátor/klíč z T1, který je zde cizím klíčem do T1 • reprezentace vztahu je „ukrytá“ v tabulce T2 Relační schéma: Osoba(RČ, jméno, příjmení, ..., sériové číslo)Mobil(sériové číslo, model, výrobce, ...)
Kardinality (0,1) : (0,1) • tři tabulky – dvě entitní a jedna vztahová • vztahová tabulka má dva klíče odpovídající identifikátorům obou entitních typů • klíče jsou zároveň cizí klíče do entitních tabulek Relační schéma: Osoba(RČ, jméno, příjmení, ...)Mobil(sériové číslo, model, výrobce, ...)Vlastní(RČ, sériové číslo)
Kardinality (0 nebo 1,n) : (1,1) • podobně jako u (1,1) : (0,1) – dvě tabulky T1 a T2 • T1 existuje nezávisle na T2 • T2 obsahuje identifikátor T1, který je zde cizím klíčem do T1 • reprezentace vztahu je „ukrytá“ v tabulce T2 Relační schéma: Osoba(RČ, jméno,příjmení, ...)Mobil(sériové číslo, model, výrobce, ..., RČ)
Kardinality (0 nebo 1,n) : (0,1) • podobně jako (0,1) : (0,1) – tři tabulky – dvě entitní a jedna vztahová • vztahová tabulka má jeden klíč odpovídající identifikátoru jednoho z entitních typů, identifikátor druhého entitního typu je pouze cizím klíčem • klíč je zároveň cizí klíč do jedné z entitních tabulek Relační schéma: Osoba(RČ, jméno, příjmení, ...)Mobil(sériové číslo, model, výrobce, ...)Vlastní(RČ, sériové číslo)
Kardinality (0 nebo 1,n) : (0 nebo 1,n) • nejobecnější situace – tři tabulky • dvě entitní a jedna vztahová • klíč ve vztahové tabulce je složený z identifikátorů obou entitních typů • všechny části klíče vztahové tabulky jsou cizími klíči do tabulek vázaných Relační schéma: Osoba(RČ, jméno, příjmení, ...)Mobil(sériové číslo, model, výrobce, ...)Vlastní(RČ, sériové číslo)
Transformace ER diagramu na tabulky relační databáze • Hlavní problémy špatného návrhu: • opakující se informace (redundance) • cyklické struktury – nesplňují předpoklad jednoznačnosti • nemožnost reprezentovat určitou informaci • - složitá kontrola integritních omezení
Pravidla transformace Odstranění složených a vícehodnotových atributů
Pravidla transformace Vícehodnotový atribut → náhrada opakovánímnebo slabá entitní množina
Příklad – Rezervace -- Skript pro vytvoreni schematu databaze -- -- Vytvoreni tabulek – CREATE TABLE Zakaznik ( Id Integer NOT NULL, Adresa Varchar(100) NOT NULL, Telefon Varchar(12) NOT NULL, CONSTRAINT pk_Zakaznik PRIMARY KEY (Id)); CREATE TABLE Predstaveni ( Id Integer NOT NULL, Datum Date NOT NULL, Nazev Varchar(50) NOT NULL, CONSTRAINT pk_Predstaveni PRIMARY KEY (Id)); CREATE TABLE Sedadla ( Stav Integer NOT NULL, Sedadlo Integer NOT NULL, Rada Integer NOT NULL, Sekce Integer NOT NULL, Id Integer NOT NULL, patri_Id Integer NOT NULL, CONSTRAINT pk_Sedadla PRIMARY KEY (Id, patri_Id), CONSTRAINT fk_Sedadla_Predstaveni FOREIGN KEY (patri_Id) REFERENCES Predstaveni(Id));
Příklad – Rezervace CREATE TABLE Rezervuje ( Sedadla_Id Integer NOT NULL, Sedadla_patri_Id Integer NOT NULL, Zakaznik_Id Integer NOT NULL, CONSTRAINT pk_rezervuje PRIMARY KEY (Sedadla_Id, Sedadla_patri_Id), CONSTRAINT fk_rezervuje_Sedadla FOREIGN KEY (Sedadla_Id, Sedadla_patri_Id) REFERENCES Sedadla(Id,patri_Id), CONSTRAINT fk_rezervuje_Zakaznik FOREIGN KEY (Zakaznik_Id) REFERENCES Zakaznik(Id)); -- Konec skriptu --