DBS Transformace konceptuálního schématu na

Podobné dokumenty
Transformace konceptuálního modelu na relační

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

DBS Konceptuální modelování

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

DBS Konceptuální modelování

Konceptuální modelování

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

Diagram výskytů a vztahů

Relace x vztah (relationship)

Konceptuální modelování

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

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

Konceptuální modelování. Pavel Tyl

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

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

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

4IT218 Databáze. 4IT218 Databáze

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

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

Relační databázová technologie

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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

Jazyk SQL 3 - DML, DDL, TCL, DCL

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

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

Konceptuální modelování a SQL

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

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

Databáze. Logický model DB. David Hoksza

Databázové systémy úvod

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

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

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

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

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

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

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

Databázové systémy úvod

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

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

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

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

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

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

DBS Databázové modely

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 I. 3. přednáška

DBS Normální formy, normalizace

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

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

Tvorba informačních systémů

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

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

DBS Databázové modely

Databázové systémy trocha teorie

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

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

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

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

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

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

Okruhy z odborných předmětů

Databázové systémy BIK-DBS

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

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

Databáze I. 4. přednáška. Helena Palovská

DBS relační DB model, relační algebra

Návrh datového modelu

Databázové systémy BIK-DBS

Internetová filmová databáze IFDB

Databázové systémy. modelování. Tomáš Skopal. - úvod. - konceptuální datové

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

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

- sloupcové integritní omezení

Databázové systémy úvod

Databázové systémy. Ing. Radek Holý

5. Formalizace návrhu databáze

5. Formalizace návrhu databáze

10. blok Logický návrh databáze

12. blok Fyzický návrh databáze

Databázové systémy I

Fyzické uložení dat a indexy

Fakulta elektrotechniky a informatiky Databázové systémy 2. Leden 2010 souhrn. Červené dobře (nejspíš), modré možná

Tvorba informačních systémů

Semestrální práce z DAS2 a WWW

Základy databází. O autorech 17 PRVNÍ ČÁST. KAPITOLA 1 Začínáme 19

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

Databázové systémy 1. Studijní opora. Ing. Zbyněk Bureš. Ph.D.

Integritní omezení (IO)

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

Databázové systémy 1. Cvičení č. 9. Fakulta elektrotechniky a informatiky Univerzita Pardubice

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

8.2 Používání a tvorba databází

Tabulka fotbalové ligy

Otázka č. 1 (bodů za otázku: 4)

Jiří Mašek BIVŠ V Pra r ha

Relační databázový model. Vladimíra Zádová, KIN, EF, TUL- DBS

Transkript:

DBS Transformace konceptuálního schématu na relační Michal Valenta Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2012/13 https://edux.fit.cvut.cz/courses/bi-dbs/ Michal Valenta (FIT ČVUT) Konceptální model relační BI-DBS, 2012 1 / 22

Kontext algoritmus převodu konceptuálního schématu 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 dalších okolnostech (často používané dotazy, způsoby uložení dat, počet atributů v podtypech a nadtypu,...) 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, proto se na kontrolu některých IO rezignuje Michal Valenta (FIT ČVUT) Konceptální model relační BI-DBS, 2012 3 / 22

Princip Entity Vztahy 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 identifikátoru entity PRIMARY KEY alternativní klíče UNIQUE u slabých entit je třeba do klíče přibrat identifikátory identifikačních vlastníků 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) Konceptální model relační BI-DBS, 2012 4 / 22

Převod silné entity (zjednodušené a používané i pro testy) entita(identifikator, povinny_atribut, nepovinny_atribut) SQL CREATE TABLE entita ( identifikator integer, povinny_atribut varchar(20) NOT NULL, nepovinny_atribut varchar(40), CONSTRAINT entita_pk PRIMARY KEY (identifikator) ); Poznámka: domény atributů se zadávají již na konceptuální úrovni, ale v diagramech se obvykle nezobrazují. Michal Valenta (FIT ČVUT) Konceptální model relační BI-DBS, 2012 6 / 22

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) Konceptální model relační BI-DBS, 2012 8 / 22

Vztah 1:1, 1 entita povinná účást Relační schéma 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) Konceptální model relační BI-DBS, 2012 9 / 22

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) Konceptální model relační BI-DBS, 2012 10 / 22

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)); Poznámka: informaci o parcialitě nedeterminantu ztrácíme. Michal Valenta (FIT ČVUT) Konceptální model relační BI-DBS, 2012 11 / 22

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 pacient 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) Konceptální model relační BI-DBS, 2012 12 / 22

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) Konceptální model relační BI-DBS, 2012 13 / 22

Vztah M:N kino(id_kina, nazev_kina) film(id_filmu, nazev_filmu) predstaveni(id_kina, id_filmu) predstaveni[id_kina] kino[id_kina] predstaveni[id_filmu] film[id_filmu] M:N vždy pomocí vztahové tabulky. SQL CREATE TABLE kino (...); CREATE TABLE film (...); CREATE TABLE predstaveni ( id_kina integer REFERENCES kino (id_kina), id_filmu integer REFERENCES film (id_filmu), CONSTRAINT predstaveni_pk PRIMARY KEY (id_kina,id_filmu)); Poznámka 1: informaci o parcialitě nedeterminantů opět ztrácíme. Poznámka 2: jeden film v jenom kině nejvýše jednou? Zřejmě spíše dekompozice, viz dále. Michal Valenta (FIT ČVUT) Konceptální model relační BI-DBS, 2012 14 / 22

Vztah M:N dekompozice kvůli identifikaci vztahu, silná entita kino(id_kina, nazev_kina) film(id_filmu, nazev_filmu) predstaveni(id_predstaveni, datum, id_kina, id_filmu) predstaveni[id_kina] kino[id_kina] predstaveni[id_filmu] film[id_filmu] SQL CREATE TABLE kino (...); CREATE TABLE film (...); CREATE TABLE predstaveni ( id_predstavení integer PRIMARY KEY, datum date NOT NULL, id_kina integer NOT NULL REFERENCES kino (id_kina), id_filmu integer NOT NULL REFERENCES film (id_filmu)); Michal Valenta (FIT ČVUT) Konceptální model relační BI-DBS, 2012 15 / 22

Vztah M:N dekompozice kvůli identifikaci vztahu, slabá entita kino(id_kina, nazev_kina) film(id_filmu, nazev_filmu) predstaveni(datum, id_kina, id_filmu) predstaveni[id_kina] kino[id_kina] predstaveni[id_filmu] film[id_filmu] SQL CREATE TABLE kino (...); CREATE TABLE film (...); CREATE TABLE predstaveni ( datum date, id_kina integer NOT NULL REFERENCES kino (id_kina), id_filmu integer NOT NULL REFERENCES film (id_filmu), CONSTRAINT PRIMARY KEY predstaveni_pk (datum, id_kina, id_filmu)); Michal Valenta (FIT ČVUT) Konceptální model relační BI-DBS, 2012 16 / 22

Slabá entita, identifikační závislost blok(id_bloku, nazev_bloku) pokoj(cislo_pokoje, id_bloku) pokoj[id_bloku] blok[id_bloku] SQL CREATE TABLE blok (...); CREATE TABLE pokoj ( cislo_pokoje integer id_bloku integer REFERENCES blok (id_bloku), PRIMARY KEY (id_bloku, cislo_pokoje)); osoba(id_osoby, jmeno_osoby) profil(id_osoby, fotka) profil[id_osoby] osoba[id_osoby] CREATE TABLE osoba (...); CREATE TABLE profil ( fotka blob id_osoby integer REFERENCES osoba (id_osoby), PRIMARY KEY (id_osoby)); Michal Valenta (FIT ČVUT) Konceptální model relační BI-DBS, 2012 17 / 22

ISA hierarchie varianta 1 osoba(id_osoby, email, telefon, jmeno, ico, dic) je vhodné zavést rozlišovací atribut (pokud všechny atr. podtypu umožňují NULL, je to nezbytné) 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) Konceptální model relační BI-DBS, 2012 18 / 22

Migrace identifikátoru entity, složený cizí klíč zakaznik(id_zak) zamestnanec(id_zam) film(id_filmu) kopie(id_filmu, id_kopie) vypujcka(od, id_zak, id_zam, id_filmu,id_kopie) kopie[id_filmu] film[id_filmu] vypujcka[id_zak] zakaznik[id_zak] vypujcka[id_zam] zakaznik[id_zam] vypujcka[id_filmu, id_kopie] kopie[id_filmu, id_kopie] Michal Valenta (FIT ČVUT) Konceptální model relační BI-DBS, 2012 20 / 22

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) Konceptální model relační BI-DBS, 2012 22 / 22