Transformace ER SQL. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 9

Podobné dokumenty
DBS Transformace konceptuálního schématu na

Transformace konceptuálního modelu na relační

Konceptuální modelování

Seminá e. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, sem. 1-13

DBS Konceptuální modelování

Souvislost E-R schématu s relačním

Úvod, terminologie. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 1

Normalizace rela ního schématu

DBS Konceptuální modelování

Konceptuální modelování

Relace x vztah (relationship)

SQL - úvod. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 6

A5M33IZS Informační a znalostní systémy. Relační databázová technologie

Diagram výskytů a vztahů

Funkční schéma Datové schéma Integrita modelu s realitou

Databázové modely. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 2

Úvod do databázových systémů

Databáze 2013/2014. Konceptuální model DB. RNDr. David Hoksza, Ph.D.

Databázové systémy. - SQL * definice dat * aktualizace * pohledy. Tomáš Skopal

Databázové modelování. Analýza Návrh konceptuálního schématu

Konceptuální modelování. Pavel Tyl

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Relační databázová technologie

4IT218 Databáze. 4IT218 Databáze

Gymnázium a Střední odborná škola, Rokycany, Mládežníků 1115

Databázové systémy. Tomáš Skopal. - úvod do relačního modelu. - převod konceptuálního schématu do relačního

SQL - SELECT. Ing. Michal Valenta PhD. Databázové systémy BI-DBS ZS 2010/11, P edn. 7

Databázové systémy Cvičení 5.2

Konceptuální modelování a SQL

Jazyk SQL 3 - DML, DDL, TCL, DCL

2. přednáška. Databázový přístup k datům (SŘBD) Možnost počítání v dekadické aritmetice - potřeba přesných výpočtů, např.

Primární klíč (Primary Key - PK) Je právě jedna množina atributů patřící jednomu z kandidátů primárního klíče.

Databáze I. Přednáška 4

Vzorové příklady SQL. Tabulka: Kniha CREATE TABLE kniha (id INTEGER, název VARCHAR(50), PRIMARY KEY (id))

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Modely datové. Další úrovní je logická úroveň Databázové modely Relační, Síťový, Hierarchický. Na fyzické úrovni se jedná o množinu souborů.

Databázové systémy úvod

RELAČNÍ DATABÁZOVÉ SYSTÉMY

Databáze 2011/2012 SQL DDL (CREATE/ALTER/DROP TABLE), DML (INSERT/UPDATE/DELETE) RNDr.David Hoksza, Ph.D.

2. blok část B Základní syntaxe příkazů SELECT, INSERT, UPDATE, DELETE

Transak ní zpracování I

Konceptuální datové modely používané při analýze

Databázové systémy trocha teorie

Úvod do databázových systémů 6. cvičení

Tvorba informačních systémů

Databázové systémy úvod

Informační systémy 2008/2009. Radim Farana. Obsah. Jazyk SQL

6. SQL složitější dotazy, QBE

DUM 12 téma: Příkazy pro tvorbu databáze

Kapitola 6: Omezení integrity. Omezení domény

Inovace tohoto kurzu byla spolufinancována z Evropského sociálního fondu a státního rozpočtu České republiky.

Databázové systémy II. KIV/DB2 LS 2007/2008. Zadání semestrální práce

A5M33IZS Informační a znalostní systémy. O čem předmět bude? Úvod do problematiky databázových systémů

Databáze. Logický model DB. David Hoksza

Databázové systémy I. 3. přednáška

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Analýza problémové domény

Databáze I. Přednáška 7

Měřící systém se vzdáleným přístupem. Databáze

Objektově orientované databáze

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Databáze 2011/2012 Konceptuální model DB. RNDr. David Hoksza, Ph.D.

DBS Databázové modely

4IT218 Databáze. 4IT218 Databáze

Databázové a informační systémy

Pravd podobnost a statistika - cvi ení. Simona Domesová místnost: RA310 (budova CPIT) web:

Databázové systémy. Cvičení 2

Kritéria hodnocení praktické maturitní zkoušky z databázových systémů

Analýza dat a modelování. Přednáška 2

DBS Databázové modely

P íklad 1 (Náhodná veli ina)

Dotazovací jazyk SQL I

C8 Relační databáze. 1. Datový model

Databázové systémy I

Obchodní akademie a Jazyková škola s právem státní jazykové zkoušky Jihlava

Data v počítači EIS MIS TPS. Informační systémy 2. Spojení: jan.skrbek@tul.cz tel.: Konzultace: úterý

Návrh datového modelu

Dotazy v SQL. Výraz relační algebry R1( )[A1,A2,...,Aj] lze zapsat takto: SELECT A1,A2,...,Aj FROM R1 WHERE. Výraz (R1, R2... Rk)( )[A1,A2,...

Tvorba informačních systémů

Odpov di na dotazy uchaze e k ve ejné zakázce. 2/

RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D. Katedra softwarového inženýrství Matematicko-Fyzikální fakulta Univerzita Karlova v Praze

Databázové systémy úvod

2 Konceptuální modelování a návrh databáze

2 Konceptuální modelování a návrh databáze

SQL. strukturovaný dotazovací jazyk. Structured Query Language (SQL)

12. blok Fyzický návrh databáze

Databázové systémy. Integritní omezení. Vilém Vychodil. V. Vychodil (KMI/DATA1, Přednáška 9) Integritní omezení Databázové systémy 1 / 33

Obsah přednášky. Databázové systémy RDBMS. Fáze návrhu RDBMS. Coddových 12 pravidel. Coddových 12 pravidel

Jazyk SQL slajdy k přednášce NDBI001

Integritní omezení (IO)

- sloupcové integritní omezení

1) vložení záznamu o smlouvě a jeho atributy (rozumí se i možnost opravy záznamu)

Tabulka fotbalové ligy

10. blok Logický návrh databáze

Fakulta elektrotechniky a informatiky Vysoká škola báňská - Technická univerzita Ostrava. Úvod do databázových systémů 2012/2013 IS MHD

Skalární sou in. Úvod. Denice skalárního sou inu

BOZP - akcepta ní testy

Integrování jako opak derivování

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

Transkript:

Transformace ER SQL Ing. Michal Valenta PhD. Katedra softwarového inºenýrství Fakulta informa ních technologií ƒeské vysoké u ení technické v Praze c Michal Valenta, 2010 Databázové systémy BI-DBS ZS 2010/11, P edn. 9 Evropský sociální fond. Praha & EU: Investujeme do va²í budoucnosti Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 1 / 17

Kontext a princip Kontext algoritmus p evodu konceptuálního modelu na rela ní bývá sou ástí modelovacích nástroj (Oracle Data Modeller, Enterprise Architekt,...) pomocí nastavení je obvykle moºné chování vestav ných generátor výrazn upravit p evod n kterých konstrukcí konceptuálního modelu (nap íklad ISA hierarchie) má n kolik moºných variant, z nichº ºádná není úpln p esná; optimální varianta pro konkrétní situaci závisí na parametrech, které jsou mimo konceptuální modelování ( asto pouºívané dotazy, zp soby uloºení dat...) v n kterých p ípadech (povinnost nedeterminantu ve vztahu) nemáme na úrovni rela ního modelu dostate n efektivní mechanismus, který by kontrolu zajistil Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 2 / 17

Kontext a princip Princip Entity název entity název relace atributy entity atributy relace domény atribut entity se namapují na domény rela ních atribut povinnost atribut entity NOT NULL na rela ní úrovni atributy identikátoru entity PRIMARY KEY alternativní klí e UNIQUE u slabých entit je t eba do klí e p ibrat identikátory identika ních vlastník Vztahy jediná moºnost provázání dat ze dvou relací je referen ní integrita (FOREIGN KEY) podle kardinality a parciality je t eba pouºít vztahové tabulky a IO NOT NULL a UNIQUE Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 3 / 17

Implemenetace silných entit na rela ní úrovni P evod silné entity (zjednodu²ené a pouºívané pro písemky) entita(identikator, povinny_atribut, nepovinny_atribut) SQL CREATE TABLE entita ( identikator integer, povinny_atribut varchar(20) NOT NULL, nepovinny_atribut varchar(40), CONSTRAINT entita_pk PRIMARY KEY (identikator) ); Poznámka: domény atribut se zadávají jiº na konceptuální úrovni, ale v diagramech se obvykle nezobrazují. Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 4 / 17

Implemenetace vztah na rela ní úrovni vztahy 1:1 Vztah 1:1, ob entity povinná ú ást zamestnanec_vuz(cislo_z, jmeno_z, adresa, spz, vyrobce, model) SQL CREATE TABLE zamestnanec_vuz ( cislo_z integer CONSTRAINT zamestnantec_vuz_pk PRIMARY KEY, jneno_z varchar(20) NOT NULL, adresa varchar(40), spz varchar(20) NOT NULL CONSTRAINT zamestnantec_vuz_uk UNIQUE, vyrobce varchar (40) NOT NULL, model varchar(40)); Poznámka: vzhledem k povinnosti lenství na obou stranách jedna tabulka. Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 5 / 17

Implemenetace vztah na rela ní úrovni vztahy 1:1 Vztah 1:1, 1 entita povinná ú ást Rela ní model zamestnanec(cislo_z, jmeno_z, adresa) vuz(spz, vyrobce, model, cislo_z) SQL: vuz[cislo_z] zamestnanec[cislo_z] CREATE TABLE zamestnanec ( cislo_z integer CONSTRAINT zamestnantec_pk PRIMARY KEY, jneno_z varchar(20) adresa varchar(40)); CREATE TABLE vuz ( spz varchar(20) CONSTRAINT vuz_pk PRIMARY KEY, vyrobce(40) NOT NULL, model varchar(40), cislo_z integer NOT NULL UNIQUE, CONSTRAINT zamestnanec_vuz_fk FOREIGN KEY (cislo_z) REFERENCES zamestnantec(cislo_z)); Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 6 / 17

Implemenetace vztah na rela ní úrovni vztahy 1:1 Vztah 1:1, nepovinná ú ást 1. moºnost Jako v p edchozím p ípad. Jediný rozdíl je ten, ºe atribut cislo_z v tabulce vuz bude nepovinný. 2. moºnost zamestnanec(cislo_z, jmeno_z, adresa) vuz(spz, vyrobce, model) zamestnanec_vuz (cislo_z, spz) zamestnanec_vuz[spz] vuz[spz] zamestnanec_vuz[cislo_z] zamestnanec[cislo_z] spz v relaci zamestnanec_vuz je NOT NULL a UNIQUE SQL: CREATE TABLE vuz (...); CREATE TABLE zamestnanec (...); CREATE TABLE zamestnanec_vuz ( cislo_z integer PRIMARY KEY REFERENCES zamestnanec (cislo_z), spz varchar(20) NOT NULL UNIQUE REFERENCES vuz (spz)); Poznámka: v notaci rela ního modelu nejsou obvykle vyzna ena integritní omezení NOT NULL a UNIQUE. Zde jsou v²ak pro správnou transformaci ob tato integritní omezení nezbytná! Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 7 / 17

Implemenetace vztah na rela ní úrovni vztahy 1:N Vztah 1:N, povinná ú ast determinantu pacient(id_pac, jmeno_pac, id_pok) pokoj(id_pok, poc_luzek) pacient[id_pok] pokoj[id_pok] id_pok v relaci pacient NOT NULL SQL CREATE TABLE pacient ( id_pac integer CONSTRAINT pacient_pk PRIMARY KEY, jmeno_pac varchar(20) NOT NULL, id_pokoj integer NOT NULL); CREATE TABLE pokoj ( id_pok integer CONSTRAINT pokoj_pk PRIMARY KEY, poc_luzek integer NOT NULL); ALTER TABLE pacient ADD CONSTRAINT pacient_pokoj_fk FOREIGN KEY (id_pok) REFERENCES pokoj(id_pok)); Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 8 / 17

Implemenetace vztah na rela ní úrovni vztahy 1:N Vztah 1:N, nepovinná ú ast determinantu 1. moºnost Jako v p edchozím p ípad. Rozdíl je ten, ºe atribut id_pok v tabulce pokoj bude nepovinný. 2. moºnost pacient(id_pac, jmeno_pac) pokoj(id_pok, poc_luzek) umisteni (id_pac, id_pok) umisteni[id_pac] pacient[id_pac] umisteni[id_pok] pokoj[id_pok] id_pok v relaci umisteni NOT NULL SQL: CREATE TABLE pacient (...); CREATE TABLE pokoj (...); CREATE TABLE umisteni ( id_pac integer PRIMARY KEY REFERENCES pacient (id_pac), id_pokoj integer NOT NULL REFERENCES pokoj (id_pok)); Poznámka: informaci o parcialit nedeterminantu op t ztrácíme. Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 9 / 17

Implemenetace vztah na rela ní úrovni vztahy 1:N Rekurzivní vztah osoba(id_osoby, jmeno, manager_id) osoba[manager_id] osoba[id_osoby SQL CREATE TABLE osoba ( id_osoby integer PRIMARY KEY, jmeno varchar(30), manager_id integer); ALTER TABLE osoba ADD CONSTRAINT osoba_manager_fk FOREIGN KEY (manager_id) REFERENCES osoba (id_osoby)); Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 10 / 17

Implemenetace vztah na rela ní úrovni Vztahy M:N Vztah M:N kino(id_kina, nazev_kina) lm(id_lmu, nazev_lmu) predstaveni(id_kina, id_lmu) predstaveni[id_kina] kino[id_kina] predstaveni[id_lmu] lm[id_lmu] M:N vºdy pomocí vztahové tabulky. SQL CREATE TABLE kino (...); CREATE TABLE lm (...); CREATE TABLE predstaveni ( id_kina integer REFERENCES kino (id_kina), id_lmu integer REFERENCES lm (id_lmu), CONSTRAINT predstaveni_pk PRIMARY KEY (id_kina,id_lmu)); Poznámka 1: informaci o parcialit nedeterminant op t ztrácíme. Poznámka 2: jeden lm v jenom kin nejvý²e jednou? Z ejm spí²e dekompozice, viz dále. Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 11 / 17

Implemenetace vztah na rela ní úrovni Vztahy M:N Vztah M:N dekompozice kv li identikaci vztahu, silná entita kino(id_kina, nazev_kina) lm(id_lmu, nazev_lmu) predstaveni(id_predstaveni, datum, id_kina, id_lmu) predstaveni[id_kina] kino[id_kina] predstaveni[id_lmu] lm[id_lmu] SQL CREATE TABLE kino (...); CREATE TABLE lm (...); CREATE TABLE predstaveni ( id_predstavení integer PRIMARY KEY, datum date NOT NULL, id_kina integer NOT NULL REFERENCES kino (id_kina), id_lmu integer NOT NULL REFERENCES lm (id_lmu)); Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 12 / 17

Implemenetace vztah na rela ní úrovni Vztahy M:N Vztah M:N dekompozice kv li identikaci vztahu, slabá entita kino(id_kina, nazev_kina) lm(id_lmu, nazev_lmu) predstaveni(datum, id_kina, id_lmu) predstaveni[id_kina] kino[id_kina] predstaveni[id_lmu] lm[id_lmu] SQL CREATE TABLE kino (...); CREATE TABLE lm (...); CREATE TABLE predstaveni ( datum date, id_kina integer NOT NULL REFERENCES kino (id_kina), id_lmu integer NOT NULL REFERENCES lm (id_lmu), CONSTRAINT PRIMARY KEY predstaveni_pk (datum, id_kina, id_lmu)); Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 13 / 17

Implemenetace vztah na rela ní úrovni Slabá entita, identika ní závislost Slabá entita, identika ní závislost blok(id_bloku, nazev_bloku) pokoj(cislo_pokoje, id_bloku) pokoj[id_bloku] blok[id_bloku] osoba(id_osoby, jmeno_osoby) prol(id_osoby, fotka) prol[id_osoby] osoba[id_osoby] SQL CREATE TABLE blok (...); CREATE TABLE pokoj ( cislo_pokoje integer id_bloku integer REFERENCES blok (id_bloku), PRIMARY KEY (id_bloku, cislo_pokoje)); CREATE TABLE osoba (...); CREATE TABLE prol ( fotka blob id_osoby integer REFERENCES osoba (id_osoby), PRIMARY KEY (id_osoby)); Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 14 / 17

Implemenetace vztah na rela ní úrovni ISA hierarchie ISA hierarchie varianta 1 osoba(id_osoby, email, telefon, jmeno, ico, dic) je vhodné zavést rozli²ovací atribut varianta 2 osoba(id_osoby, email, telefon) fyzicka(id_osoby, jmeno) pravnicka(id_osoby, ico, dic) fyzicka[id_osoby] osoba[id_osoby] pravnicka[id_osoby] osoba[id_osoby] varianta 3 fyzicka(id_osoby, email, telefon, jmeno) pravnicka(id_osoby,email, telefon ico, dic) Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 15 / 17

Migrace klí e prost ednictvím závislostí Migrace identikátoru entity, sloºený cizí klí zakaznik(id_zak) zamestnanec(id_zam) lm(id_lmu) kopie(id_lmu, id_kopie) vypujcka(od, id_zak, id_zam, id_lmu,id_kopie) kopie[id_lmu] lm[id_lmu] vypujcka[id_zak] zakaznik[id_zak] vypujcka[id_zam] zakaznik[id_zam] vypujcka[id_lmu, id_kopie] kopie[id_lmu, id_kopie] Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 16 / 17

Moºné problémy s cykly Cyklus a jména rolí p i implementaci zamestnanec(id_zam) zvire(id_zvir, krmi_id_zam, sponzoruje_id_zam) zvire[krmi_id_zam] zamestnanec[id_zam] zvire[sponzoruje_id_zam] zamestnanec[id_zam] Poznámka: není moºné, aby se dva atributy v jedné relaci jmenovali stejn. Michal Valenta (FIT ƒvut) Transformace ER SQL BI-DBS, 2010, P edn. 9 17 / 17