1 / 23

Databázové systémy

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,

holly-wynn
Download Presentation

Databázové systémy

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Databázové systémy Relační model

  2. 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.

  3. 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í...)

  4. 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.

  5. 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 􀂾

  6. 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.

  7. 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.

  8. 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!

  9. 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íč

  10. 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íč

  11. 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í

  12. 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, ...)

  13. 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, ...)

  14. 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)

  15. 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Č)

  16. 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)

  17. 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)

  18. 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í

  19. Pravidla transformace Odstranění složených a vícehodnotových atributů

  20. Pravidla transformace Vícehodnotový atribut → náhrada opakovánímnebo slabá entitní množina

  21. Příklad – Rezervace

  22. 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));

  23. 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 --

More Related