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

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

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

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

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

Relace x vztah (relationship)

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

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

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

Jazyk SQL 3 - DML, DDL, TCL, DCL

Relační databázová technologie

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

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

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

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

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

DBS Konceptuální modelování

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

Konceptuální modelování. Pavel Tyl

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

Konceptuální modelování a SQL

Diagram výskytů a vztahů

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

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

Jazyk SQL slajdy k přednášce NDBI001

Databázové systémy I

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

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

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

Jazyk SQL. Jaroslav Pokorný MFF UK, Praha J. Pokorný 1

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

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

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

DB1 cvičení 4 spojení tabulek a složitější dotazy

Dotazovací jazyk SQL I

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

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

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

7. Integrita a bezpečnost dat v DBS

7. Integrita a bezpečnost dat v DBS

Databázové systémy BIK-DBS

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

PL/SQL. Jazyk SQL je jazykem deklarativním, který neobsahuje procedurální příkazy jako jsou cykly, podmínky, procedury, funkce, atd.

- sloupcové integritní omezení

Jaký je rozdíl v definicicíh VARCHAR2(20 BYTE) a VARCHAR2(20 CHAR):

Semestrální práce z DAS2 a WWW

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

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

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

DBS Konceptuální modelování

Zkouškový příklad 4IT218 Rezervační systém zážitkové agentury. Karel Kohout FIS VŠE

Konceptuální modelování

Integritní omezení (IO)

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

Tabulka fotbalové ligy

Kapitola 4: SQL. Základní struktura

Západočeská univerzita v Plzni Katedra informatiky a výpočetní techniky. 9. června krovacek@students.zcu.cz

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

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

1. Relační databázový model

RELAČNÍ DATABÁZOVÉ SYSTÉMY

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

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

Materiál ke cvičením - SQL

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

4IT218 Databáze. 4IT218 Databáze

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

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

Měřící systém se vzdáleným přístupem. 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ů.

Univerzita Pardubice. Fakulta elektrotechniky a informatiky SEMESTRÁLNÍ PRÁCE PRO PŘEDMĚT IDAS2

PG 9.5 novinky ve vývoji aplikací

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

Relační databázová technologie

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

Konceptuální modelování

VŠB FEI - Technická Univerzita Ostrava. DAIS - Projekt. Dopravní podnik. Jméno: Matěj Kotyz (KOT0177)

Oracle XML DB. Tomáš Nykodým

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

Databáze. Logický model DB. David Hoksza

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

Tvorba informačních systémů

Základy informatiky. 06 Databázové systémy. Kačmařík/Szturcová/Děrgel/Rapant

Dotazovací jazyk SQL I

Structured Query Language SQL

DOKUMENTACE. Úvod do zpracování prostorových dat (153UZPD) PROJEKT

SII - Informatika. 1. Atribut relace, jehož hodnota jednoznačně určuje prvek v jiné relaci, se nazývá:

Použití databází na Webu

Databázové systémy. Přirozené spojení. Vilém Vychodil. V. Vychodil (KMI/DATA1, Přednáška 4) Přirozené spojení Databázové systémy 1 / 41

Jazyk SQL databáze SQLite. připravil ing. petr polách

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

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

Informační systémy 2008/2009. Radim Farana. Obsah. Skripty a dávky. Nastavení aktuální databáze. USE DatabaseName

B2646 Informační technologie 1802R007 Informační technologie

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

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

Temporální databáze. Jan Kolárik Miroslav Macík

12. blok Fyzický návrh databáze

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

Transkript:

Souvislost E-R schématu s relačním Reprezentace silného entitního typu entitnímu typu odpovídá schéma relace atributům entitního typu odpovídají atributy relace primární klíč bude tvořen atributy odpovídajícími atributům identifikačního klíče entitního typu Reprezentace vztahů opět musíme použít relaci vyjádření je podpořeno referenční integritou 1

Reprezentace vztahu 1:1 (obě účasti povinné) ZAM_VUZ(C_Z, JMÉNO_Z, ADRESA, SPZ, VÝROBCE, MODEL) 2

Reprezentace vztahu 1:1 (obě účasti povinné) CREATE TABLE ZAM_VUZ (C_Z Number PRIMARY KEY, JMENO_Z Char Varying(25) NOT NULL, ADRESA Char Varying(25) NOT NULL, SPZ Number NOT NULL UNIQUE, VYROBCE Char Varying(10) NOT NULL, MODEL Char Varying(10) NOT NULL); CREATE VIEW VUZ AS SELECT SPZ, VYROBCE, MODEL FROM ZAM_VUZ; CREATE VIEW ZAMESTN AS SELECT C_Z, JMENO_Z, ADRESA FROM ZAM_VUZ; 3

Reprezentace vztahu 1:1 (1 účast nepovinná) ZAMESTN (C_Z,JMENO_Z,...) VUZ(SPZ,...,C_Z) VUZ[C_Z] ZAMESTN [C_Z] 4

Reprezentace vztahu 1:1 (1 účast nepovinná) CREATE TABLE ZAMESTN (C_Z Number PRIMARY KEY, JMENO_Z Char Varying(25) NOT NULL, ADRESA Char Varying(25) NOT NULL ); CREATE TABLE VUZ (SPZ Number PRIMARY KEY, VYROBCE Char Varying(10) NOT NULL, MODEL Char Varying(10) NOT NULL); ALTER TABLE VUZ ADD (V_C_Z Number NOT NULL UNIQUE REFERENCES ZAMESTN); podchycení povinné účasti a kardinality 1 5

Reprezentace vztahu 1:1 (obě účasti nepovinné) dvě entitní relace ZAMĚSTN (C_Z,JMÉNO_Z, ADRESA) VŮZ(SPZ, VÝROBCE, MODEL) POUZIVA(C_Z, SPZ) IO: POUZIVA[C_Z] ZAMĚSTN [C_Z] POUZIVA[SPZ ] VŮZ[SPZ] vztahová relace 6

Reprezentace vztahu 1:N determinant vztahu povinná účast determinantu Povinná účast informaci o parcialitě nedeterminantu ztratíme PACIENT(RODNE_C,PRIJMENI,..., ČÍSLO_P) POKOJ(CISLO_P, POCET_LUZEK,...) IO: PACIENT[CISLO_P] POKOJ[CISLO_P] nesmí být NULL 7

Reprezentace vztahu 1:N nepovinná účast determinantu ve vztahu nepovinná účast determinantu informaci o parcialitě nedeterminantu ztratíme PACIENT(RODNÉ_Č, PŘÍJMENÍ,..., ČÍSLO_P) POKOJ(ČÍSLO_P, POČET_LŮŽEK,...) IO: PACIENT[ČÍSLO_P] POKOJ[ČÍSLO_P] může být NULL 8

Reprezentace vztahu 1:N atribut vztahu varianta 1 Nepovinná účast PACIENT(RODNÉ_Č, PŘÍJMENÍ,...) POKOJ(ČÍSLO_P, POČET_LŮŽEK,...) UMÍSTĚN(RODNÉ_Č,ČÍSLO_P, DATUM_N) IO: UMÍSTĚN[RODNÉ_Č] PACIENT[RODNÉ_Č] UMÍSTĚN ČÍSLO_P] POKOJ[ČÍSLO_P] pacienti bez pokoje nejsou uvedeni v UMISTEN 9

Reprezentace vztahu 1:N varianta 1 (3 relace) pacienti bez pokoje nejsou uvedeni v UMISTEN CREATE TABLE Pacient ( Rodne_c Number PRIMARY KEY, Prijmeni Char(20) NULL, Jmeno Char(10) NOT NULL); CREATE TABLE Pokoj ( Cislo_p Number PRIMARY KEY, Pocet_l Number(2) NOT NULL); REATE TABLE Umisten ( U_Rodne_c Number REFERENCES Pacient, U_Cislo_p Number NOT NULL REFERENCES Pokoj, U_Datum_n Date NOT NULL, PRIMARY KEY(U_Rodne_c )); 10

Reprezentace vztahu 1:N attribut vztahu varianta 2 (slévání) nepovinná účast determinantu ve vztahu, který má navíc atribut informaci o parcialitě nedeterminantu ztratíme POKOJ(ČÍSLO_P, POČET_L,...) PACIENT(RODNÉ_Č, PŘÍJMENÍ,..., ČÍSLO_P, DATUM_N), PACIENT[ČÍSLO_P] POKOJ[ČÍSLO_P] Obojí může být NULL pouze současně 11

Reprezentace vztahu 1:N - varianta 2 (2 realace) CREATE TABLE Pacient ( Rodne_c Number PRIMARY KEY, Prijmeni Char(20) NULL, Jmeno Char(10) NOT NULL); CREATE TABLE Pokoj ( Cislo_p Number PRIMARY KEY, Pocet_l Number(2) NOT NULL); ALTER TABLE Pacient ADD ( Datum_n Date, podchycení nepovinné účasti determinantu U_Cislo_p Number REFERENCES Pokoj, CONSTRAINT CHECK ((U_Cislo_p IS NOT NULL AND Datum_n IS NOT NULL) OR (U_Cislo_p IS NULL AND Datum_n IS NULL)) ); 12

Reprezentace vztahu M:N CREATE TABLE PROGRAM (P_NAZEV_K Char_Varying(20) NOT NULL, P_JMENO_F Char_Varying(20) NOT NULL, DATUM Date NOT NULL, PRIMARY KEY (P_NAZEV_K, P_JMENO_F), --!!! (chceme to?) FOREIGN KEY (P_NAZEV_K) REFERENCES KINO, FOREIGN KEY (P_JMENO_F) REFERENCES FILM); Informaci o povinné/nepovinné účasti ztrácíme. 13

Vztah M:N v ER modeláři (1/2) Create table kino ( idk Integer Not Null, Constraint PK_kino Primary Key (idk)); Create table film ( idf Integer Not Null, Constraint PK_film Primary Key (idf)); Create table program ( datum Date Not Null, k_idk Integer Not Null, f_idf Integer Not Null, Constraint UNQ_program_1 Unique (k_idk, f_idf) -- opravdu to tak chceme??? ); Alter table program add ( Constraint FK_program_1 Foreign Key (k_idk) References kino(idk), Constraint FK_program_2 Foreign Key (f_idf) References film(idf)); 14

Vztah M:N v ER modeláři 2/2 Create table kino ( idk Integer Not Null, Constraint PK_kino Primary Key (idk)); Create table film ( idf Integer Not Null, Constraint PK_film Primary Key (idf)); Create table program ( datum Date Not Null, f_idf Integer Not Null, k_idk Integer Not Null, Constraint PK_program Primary Key (datum, f_idf, k_idk) -- film v jednom kině v různých dnech ); Alter table program add ( Constraint FK_program_1 Foreign Key (k_idk) References kino(idk), Constraint FK_program_2 Foreign Key (f_idf) References film(idf)); 15

Reprezentace vztahu n-árního a) R(KA, KB, KC), b) R(KA, KB, KC), c) R(KA, KB, KC), d) R(KA, KB, KC), 16

Reprezentace ISA vztahu OSOBA(OS_C, ADRESA,JMENO,DAT_NAR ) UCITEL (OS_C, AK_HODNOST,PLAT) STUDENT (OS_C, OBOR, ROCNIK, KREDITY) IO: STUD [OS_C] OSOBA[OS_C], UCITEL [OS_C] OSOBA[OS_C] 17

Reprezentace ISA vztahu varianta 1 (3 relace) CREATE TABLE OSOBA (OS_C Number PRIMARY KEY, JMENO VARCHAR (20), ADRESA VARCHAR (25), PLAT NUMBER, DAT_NAR DATE); CREATE TABLE UCITEL (OS_C Number PRIMARY KEY, AK_HODN Number, Plat, FOREIGN KEY (OS_C) REFERENCES OSOBA); CREATE VIEW V_STUDENT AS SELECT * FROM OSOBA JOIN STUD USING (OS_C) CREATE TABLE STUD (OS_C Number PRIMARY KEY, OBOR Number, ROCNIK Number, KREDiTY Number, FOREIGN KEY (OS_C) REFERENCES OSOBA; CREATE VIEW V_UCITEL AS SELECT * FROM OSOBA JOIN UCITEL USING(OS_C) 18

Reprezentace ISA vztahu varianta 2 (1 relace) CREATE TABLE OSOBA (OS_C Number PRIMARY KEY, JMENO VARCHAR (20), ADRESA VARCHAR (25), DAT_NAR DATE, OBOR_st Number, ROCNIK_st Number, KREDiTY_st Number, AK_HODN_uc Number, PLAT_uc Number ); Jak zabezpečíme výlučnost účasti v ISA? CREATE VIEW STUDENT AS SELECT OS_C,JMENO,ADRESA,DAT_NAR, OBOR_st, ROCNIK_st, KREDiTY_st FROM OSOBA WHERE AK_HODN_uc IS NULL; CREATE VIEW UCITEL AS SELECT OS_C,JMENO,ADRESA,DAT_NAR,AK_HODN_uc,PLAT_uc FROM OSOBA WHERE AK_HODN_uc IS NOT NULL; 19

Reprezentace ISA vztahu varianta 2 - pokračování CREATE TABLE OSOBA (OS_C Number PRIMARY KEY, JMENO VARCHAR (20), ADRESA VARCHAR (25), DAT_NAR DATE, OBOR_st Number, ROCNIK_st Number, KREDiTY_st Number, AK_HODN_uc Number, PLAT_uc Number ); Jak zabezpečíme výlučnost účasti v ISA? ALTER TABLE OSOBA ADD CONSTRAINT vylucnost CHECK(((AK_HODN_uc is NULL and PLAT_uc is NULL) and (OBOR_st + ROCNIK_st +KREDiTY_st) is not NULL)) or ((AK_HODN_uc is not NULL and PLAT_uc is not NULL) and COALESCE(OBOR_st,ROCNIK_st,KREDiTY_st) is NULL) ); 20

Reprezentace identifikačního vztahu FILM (JMENO_F, ROK, REZISER) KOPIE(JMENO_F, CISLO_K, DATUM,... ) IO: KOPIE[JMENO_F] FILM [JMENO_F] 21

Reprezentace identifikačního vztahu CREATE TABLE FILM (JMENO_F CHAR(20) PRIMARY KEY, ROK DATE NOT NULL, REZISER CHAR(20) NOT NULL); CREATE TABLE KOPIE (JMENO_F CHAR(20) NOT NULL, CISLO_K NUMBER NOT NULL, DATUM DATE NOT NULL, FOREIGN KEY (JMENO_F) REFERENCES FILM, PRIMARY KEY (JMENO_F, CISLO_K)); 22

Příklad propagace identifikačního klíče 23

Příklad propagace identifikačního klíče CREATE TABLE KOPIE (C_KOPIE Number NOT NULL, K_JMENO_F Char_Varying(25) REFERENCES FILM, D_NAKUPU Date NOT NULL, PRIMARY KEY (C_KOPIE,K_JMENO_F)); CREATE TABLE VYPUJCKA (DATUM_VYP Date NOT NULL, V_C_KOPIE Number NOT NULL, V_JMENO_F Char_Varying(25) NOT NULL, FOREIGN KEY (V_C_KOPIE,V_JMENO_F) REFERENCES KOPIE, V_ROD_C Number NULL REFERENCES ZAKAZNIK, V_OSOBNI_C Number(10) NOT NULL REFERENCES ZAMEST, CENA Number NULL, PRIMARY KEY (DATUM_VYP,V_C_KOPIE,V_JMENO_F)); 24

K čemu jsou dobrá jména rolí v ER modeláři? Create table zamestnanec ( zamid Integer Not Null, Constraint PK_zamestnanec Primary Key (zamid)); Create table zvire ( sponzoruje_zamid Integer Not Null, krmi_zamid Integer Not Null, zvid Integer Not Null, Constraint PK_zvire Primary Key (zvid)); Alter table zvire add ( Constraint FK_zvire_1 Foreign Key (sponzoruje_zamid) References zamestnanec(zamid), Constraint FK_zvire_2 Foreign Key (krmi_zamid) References zamestnanec(zamid)); Toto řešení (povinné role vztahů) je bezpečné, ale obecně se vzdáváme zápisů: select * from zamestnanec join zvire using (???) => ruční úpravy skriptu jsou na vlastní nebezpečí! 25