Obsah přednášky Databázové systémy Konceptuální model databáze Codd a návrh relační databáze fáze návrhu pojem konceptuální model základní pojmy entity, relace, atributy, IO kardinalita, 2 historie: RDBMS E.F.Codd - 1969 poprvé představil základní principy návrhu relační databáze výzkumný pracovník IBM červen 1970 publikoval aplikoval matematický aparát relační algebry v kombinaci s predikátovou logikou 1.řádu první pokusy o realizaci už v r.1971 (Adabas) realizace se dočkal až koncem 70.let postupně vznikaly RDBMS: SystemR, dbase, Paradox, Oracle, Firebird, DB2, SyBase, FoxBase, MS Access, MS SQL Server a další 3 Coddových 12 pravidel 1. data reprezentována jednotným způsobem hodnotami v tabulkách 2. data jsou zaručeně přístupná kombinací PK, jména tabulky a jména sloupce 3. plná podpora nulových hodnot pro reprezentaci nedefinovaných hodnot pouze u PK nelze 4. přístup ke struktuře stejnými prostředky jako k datům 5. součástí systému jazyk pro definici dat, manipulaci dat, integritu dat a řízení transakcí 6. všechny možné pohledy musí být realizovatelné 4 Coddových 12 pravidel Fáze návrhu RDBMS 7. relační pravidla u relací by měla být zachována i při vkládání a mazání dat 8. změna fyzické struktury dat nesmí vyžadovat změnu aplikačních programů - hw 9. změna logické struktury dat nesmí vyžadovat změnu aplikačních programů tabulky, 10.jazyk by měl podporovat omezení přístupu uživatele při zachování integrity 11.uživatel by neměl vědět, že je databáze distribuovaná 12.změnit strukturu lze pouze pomocí daného jazyka 5 data + požadavky konceptuální návrh (ER diagram) logický návrh (logické schéma) fyzický návrh (fyzická realizace) 6 1
Konceptuální model slouží k popisu dat v databázi nezávisle na jejich fyzickém uložení umožňuje zobrazit a popsat objekty v databázi a vztahy mezi nimi z hlediska jejich významu a chování výsledkem je implementačně nezávislé schéma obecně aplikovatelné v jakémkoli prostředí znázorňuje se v podobě ER diagramu, který definuje entity (třídy prvků), jejich atributy a relace (vztahy) mezi nimi 7 E-R model entitně - relační model množina pojmů s jejichž pomocí popisujeme příslušnou aplikaci umožňuje specifikovat strukturu databáze využívá k tomu definice třídy entit, relací, atributů a integritních omezení při definici těchto pojmů se používá analogie s přirozeným jazykem 8 entita (entity) je objekt reálného světa, který je schopen nezávislé existence a je jednoznačně odlišitelný od ostatních objektů relace (relationship) je vztah, vazba mezi dvěma i více entitami atribut (atribut) je funkce určující některou podstatnou vlastnost entity nebo vztahu klíč (key) jeden nebo několik atributů tabulky určený pro setřídění záznamů podle hodnot v tomto poli. numerický, textový klíč. unikátní klíč klíč tabulky, ve kterém se každá hodnota atributu vyskytuje nejvýše jedenkrát. duplicitní klíč klíč tabulky, ve kterém se každá hodnota atributu může vyskytovat vícekrát (u více různých záznamů). 9 10 jednoduchý klíč klíč tabulky, který je tvořen pouze jediným atributem nejčastěji se vyskytující typ klíče i uměle vytvořený (id) složený klíč klíč tabulky, který je tvořen alespoň dvěma atributy často součást tzv. spojovací tabulky 11 primární klíč (primary key) klíč tabulky, který slouží k jednoznačné identifikaci záznamu musí být unikátní označuje se PK v jedné tabulce může být nejvýše jeden primární klíč cizí klíč (foreign key) klíč tabulky, který slouží k propojení (vytvoření relace) s primárním klíčem jiné tabulky často obsahuje duplicitní hodnoty označuje se FK v jedné tabulce může být více cizích klíčů 12 2
číslo objednávky datum objednávky jméno zaměstnance zaměstnán od název výrobku cena výrobku 10456 12.8.2005 Jan Novák 1.2.2005 Funghi 105 Kč 10456 12.8.2005 Jan Novák 1.2.2005 Hawai 127 Kč 10456 12.8.2005 Jan Novák 1.2.2005 Insalata Belucci 125 Kč 10457 12.8.2005 Emil Král 15.3.2005 Fausto 115 Kč 10457 12.8.2005 Emil Král 15.3.2005 Carpaccio 155 Kč 10458 12.8.2005 Jan Novák 1.2.2005 Insalata Caesar 128 Kč 10458 12.8.2005 Jan Novák 1.2.2005 Rustica 159 Kč 10458 12.8.2005 Jan Novák 1.2.2005 Carpaccio 155 Kč 10458 12.8.2005 Jan Novák 1.2.2005 Hawai 127 Kč 10459 13.8.2005 Jan Novák 1.2.2005 Quatro formaggi 157 Kč 10459 13.8.2005 Jan Novák 1.2.2005 Insalata Belucci 125 Kč 10459 13.8.2005 Jan Novák 1.2.2005 Insalata Greca 109 Kč 10460 13.8.2005 Václav Nový 25.5.2005 Trapolla 145 Kč 10461 13.8.2005 Václav Nový 25.5.2005 Carpaccio 155 Kč 10461 13.8.2005 Václav Nový 25.5.2005 Funghi 105 Kč 10462 14.8.2005 Jan Novák 1.2.2005 Hawai 127 Kč 10462 14.8.2005 Jan Novák 1.2.2005 Fausto 115 Kč 10462 14.8.2005 Jan Novák 1.2.2005 Insalata Greca 109 Kč 10462 14.8.2005 Jan Novák 1.2.2005 Insalata Caesar 128 Kč 10463 14.8.2005 Emil Král 15.3.2005 Fausto 115 Kč 10463 14.8.2005 Emil Král 15.3.2005 Trapolla 145 Kč 10463 14.8.2005 Emil Král 15.3.2005 Quatro formaggi 157 Kč 10463 14.8.2005 Emil Král 15.3.2005 Rustica 159 Kč relační tabulka: PK záznamy atributy id výrobku název výrobku cena výrobku 001 Carpaccio 155 Kč 002 Fausto 115 Kč 003 Funghi 105 Kč 004 Hawai 127 Kč 005 Quatro formaggi 157 Kč 006 Rustica 159 Kč 007 Trapolla 145 Kč 101 Insalata Belucci 125 Kč 102 Insalata Caesar 128 Kč 103 Insalata Greca 109 Kč 13 14 FK číslo objednávky název výrobku 10456 003 10456 004 10456 101 10457 002 10457 001 10458 102 10458 006 10458 001 10458 004 10459 005 10459 101 10459 103 10460 007 10461 001 10461 003 10462 004 10462 002 10462 103 10462 102 10463 002 10463 007 10463 005 10463 006 id zaměstnance jméno zaměstnance zaměstnán od 01 Jan Novák 1.2.2005 PK 02 Emil Král 15.3.2005 03 Václav Nový 25.5.2005 id výrobku název výrobku cena výrobku 001 Carpaccio 155 Kč 002 Fausto 115 Kč 003 Funghi 105 Kč 004 Hawai 127 Kč 005 Quatro formaggi 157 Kč 006 Rustica 159 Kč 007 Trapolla 145 Kč 101 Insalata Belucci 125 Kč 102 Insalata Caesar 128 Kč 103 Insalata Greca 109 Kč FK PK číslo objednávky datum objednávky id zaměstnance 10456 12.8.2005 01 10457 12.8.2005 02 10458 12.8.2005 01 10459 13.8.2005 01 10460 13.8.2005 03 10461 13.8.2005 03 10462 14.8.2005 01 10463 14.8.2005 02 15 postup vytváření: 1. určení typů entit zvolení množiny objektů stejného typu např. Objednávky, Zaměstnanci, Výrobky 2. určení typů relací vztahů, do kterých mohou příslušné entity vstupovat např. Objednávka obsahuje Výrobek 16 postup vytváření: způsob zobrazení: 3. určení atributů přiřazení jednotlivým entitám a vztahům např. Objednávky(číslo, datum, ) 4. určení integritních omezení zpřesnění navrženého modelu např. atribut datum je datového typu Datum a čas datum < dnešní datum 1. lineární vhodné pro rozsáhlé datové objekty snadný způsob zápisu např.: E: Studenti(jméno, příjmení, rč, dat_nar) E:Předměty(název, zkratka, anotace) R:Má_zapsán(Studenti, Předměty) 17 18 3
způsob zobrazení: 2. grafické vhodné pro jednoduché datové objekty obdoba vývojových diagramů např.: jméno rč příjmení Studenti Má_zapsán Předměty dat_nar název zkratka anotace 19 způsob zobrazení: 3. tabulkové nejvhodnější pro návrh konceptuálního modelu logický způsob zobrazení např.: Studenti jméno příjmení rč (pk) dat_nar nebo Předměty zkratka (pk) název anotace 20 1. určení typů entit: entita = jeden objekt databáze (instance) třída entit = abstraktní popis všech možných entit daného typu, které se mohou do budoucna v databázi objevit k jejich označení používáme podstatná jména množina entit = všechny entity daného typu existující v databázi v konkrétním okamžiku neustále se mění dle aktuálního stavu DB 2. určení typů relací: k jejich popisu používáme slovesa rozeznáváme tři základní typy relací typ 1:1 typ 1:N typ M:N někdy označeno jako kardinalita vztahu mezi entitami 21 22 relace typu 1:1 zahrnuje i relace částečné, tj. 1:0 a 0:1 1 1 relace relace typu 1:N zahrnuje i relace: 1:0, 0:1 a 1:1 1 N relace studenti Jan Novák Emil Král Václav Nový Jana Černá Kamil Kratochvíl Daniela Krátká jazykové kursy Německý jazyk Anglický jazyk Francouzský jazyk Ruský jazyk Španělský jazyk Italský jazyk studenti Jan Novák Emil Král Václav Nový Jana Černá Kamil Kratochvíl Daniela Krátká jazykové kursy Německý jazyk Anglický jazyk Francouzský jazyk Ruský jazyk Španělský jazyk Italský jazyk = jeden záznam primární tabulky je možné svázat nejvýše s jedním záznamem sekundární tabulky 23 = jeden záznam primární tabulky je možné svázat s jedním nebo více záznamy sekundární tabulky 24 4
relace typu M:N studenti Jan Novák Emil Král Václav Nový Jana Černá Kamil Kratochvíl Daniela Krátká zahrnuje i relace: 1:0, 0:1, 1:1 a 1:N M relace jazykové kursy Německý jazyk Anglický jazyk Francouzský jazyk Ruský jazyk Španělský jazyk Italský jazyk N 3. určení atributů: k jejich popisu používáme podstatná jména doména množina hodnot stejného významového typu (množina přípustných hodnot) nejedná se o datový typ! = jeden nebo více záznamů primární tabulky je možné svázat s jedním nebo více záznamy sekundární tabulky 25 26 4. určení integritních omezení: = pravidla pro zajištění správnosti a konzistence uložených dat entitní integrita zajištění jednoznačné identifikace každého záznamu tabulky dána definicí PK doménová integrita zajištění souladu každé hodnoty atributu s množinou přípustných hodnot referenční integrita zajištění souladu hodnot cizího klíče sekundární tabulky a odpovídajícího primárního klíče primární tabulky 27 Datové modely spojovací tabulka Zaměstnanci id zaměstnance jméno zaměstnance zaměstnán od číslo objednávky název výrobku 01 Jan Novák 1.2.2005 10456 003 02 Emil Král 15.3.2005 10456 004 03 Václav Nový 25.5.2005 Výrobky 10456 101 10457 002 id výrobku název výrobku cena výrobku 10457 001 001 Carpaccio 155 Kč 10458 102 002 Fausto 115 Kč 10458 006 003 Funghi 105 Kč 10458 001 004 Hawai 127 Kč 10458 004 005 Quatro formaggi 157 Kč 10459 005 006 Rustica 159 Kč 10459 101 007 Trapolla 145 Kč 10459 103 101 Insalata Belucci 125 Kč 10460 007 102 Insalata Caesar 128 Kč 10461 001 103 Insalata Greca 109 Kč 10461 003 Objednávky 10462 004 číslo objednávky datum objednávky id zaměstnance 10462 002 10456 12.8.2005 01 10462 103 10457 12.8.2005 02 10462 102 10458 12.8.2005 01 10463 002 10459 13.8.2005 01 10463 007 10460 13.8.2005 03 10463 005 10461 13.8.2005 03 10463 006 10462 14.8.2005 01 10463 14.8.2005 02 28 vlastnosti relací vlastnosti relací kardinalita relace: = omezení v počtu instancí (záznamů) sekundární entity (tabulky), které mají vztah s jakoukoliv instancí (záznamem) primární entity (tabulky) maximální kardinalita maximální počet souvisejících záznamů 1 nebo N minimální kardinalita minimální počet souvisejících záznamů 0 nebo 1 29 kardinalita relace: Objednávky číslo_objednávky (pk) (1,1) (0,N) datum_objednávky id_zaměstnance (fk) Zaměstnanci id_zaměstnance (pk) jméno_zaměstnance zaměstnán_od 30 5
kardinalita relace: vlastnosti relací Objednávky číslo_objednávky (pk) datum_objednávky id_zaměstnance (fk) Zaměstnanci id_zaměstnance (pk) jméno_zaměstnance zaměstnán_od 31 6