+ All Categories
Home > Documents > RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D...

RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D...

Date post: 27-Aug-2018
Category:
Upload: nguyenkiet
View: 220 times
Download: 0 times
Share this document with a friend
13
RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D. Katedra softwarového inženýrství Matematicko-Fyzikální fakulta Univerzita Karlova v Praze 1
Transcript
Page 1: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

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

1

Page 2: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

Konceptuální modelování

2

Page 3: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

3

Vytvořte model pro reprezentaci matriky – obsahující základní informace o osobách a jejich rodinných vztazích. O osobách je potřeba si pamatovat jejich (biologické) rodiče a informace o manželkách a manželech. K základním informacím o osobě patří datum narození, případně úmrtí, jméno, příjmení a pohlaví.

Základní entitou / třídou bude Osoba. Atribut datÚmrtí by měl být nepovinný. Sňatek je vztahem mezi dvěma osobami. Každá osoba může mít až dva rodiče. Rodiče nesmí být povinní, jinak by nešla kvůli tomu žádná osoba vložit.

Sňatek

jméno

0..1

příjmení

datNar datÚmrtí

pohlaví

0..1 0..1 manžel manželka Osoba

datSňatku

Rodič

0..n 0..2

(0,1) (0,1) +manžel +manželka

Osoba (0,2)

(0,*)

- RČ - datNar - datÚmrtí (0..1) - jméno - příjmení - pohlaví

Sňatek

+rodič

+potomek

Sňatek - datSňatku

Totéž v UML. Pouze kardinality vztahů jsou Znázorněny prohozené.

Page 4: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

4

Vytvořte model pro reprezentaci matriky – obsahující základní informace o osobách a jejich rodinných vztazích. O osobách je potřeba si pamatovat jejich (biologické) rodiče a informace o manželkách a manželech. K základním informacím o osobě patří datum narození, případně úmrtí, jméno, příjmení a pohlaví.

Vztah na rodiče by bylo vhodné rozdělit na dva vztahy - Otec a Matka. Lépe se bude zjišťovat, který z rodičů je který.

Sňatek

jméno

0..1

příjmení

datNar datÚmrtí

pohlaví

0..1 0..1 manžel manželka Osoba

datSňatku

Otec

0..n 0..1

Matka

0..1 0..n

(0,1) (0,1) +manžel +manželka

(0,1) (0,*)

- RČ - datNar - datÚmrtí (0..1) - jméno - příjmení - pohlaví

Sňatek

+otec

+potomek

Sňatek - datSňatku

Osoba

(0,*) +potomek (0,1)

+matka

Page 5: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

5

Vztah Sňatek nedovoluje modelovat historii sňatků, pouze aktuální sňatky. Změna vztahu na M:N by ani tak nedovolil opětovný sňatek stejných osob.

Řešením bude upgrade vztahu na samostatnou entitu. V E-R modelu bude slabě závislá na obou osobách.

(1,1) (1,1) +manžel +manželka

(0,1) (0,*)

- RČ - datNar - datÚmrtí (0..1) - jméno - příjmení - pohlaví

+otec

+potomek

Sňatek - datSňatku - datRozvodu (0,1)

Osoba

(0,*) +potomek (0,1)

+matka

(0,*) (0,*)

jméno

0..1

příjmení

datNar datÚmrtí

pohlaví

0..n 0..n

Osoba

datSňatku

Otec

0..n 0..1

Matka

0..1 0..n

datRozvodu 0..1

Sňatek 1..1 1..1 Man

žel Man želka

Page 6: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

6

Poslední úpravou bude vytvoření hierarchie osob dle pohlaví, tedy přidání dvou entit Muž a Žena. To umožní detailněji specifikovat typy vztažených entit ve vztazích

jméno

0..1

příjmení

datNar datÚmrtí

pohlaví

0..n 0..n manžel manželka

Osoba

datSňatku

Otec

0..n

0..1

Matka

0..1

0..n

datRozvodu 0..1

Sňatek 1..1 1..1

Muž Žena

Man žel

Man želka

(1,1) (1,1) +manžel +manželka

(0,1)

(0,*)

- RČ - datNar - datÚmrtí (0..1) - jméno - příjmení - pohlaví

+otec

+potomek

Sňatek - datSňatku - datRozvodu (0,1)

Osoba

(0,*) +potomek

(0,1) +matka

(0,*) (0,*)

Muž Žena

Page 7: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

Převod do logického relačního modelu

7

Page 8: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

Osoba(RČ,datNar,datÚmrtí,

jméno,Příjmení,pohlaví) Sňatek(maželRČ,manželkaRČ,datSňatku)

manželRČOsoba.RČ, manželkaRČOsoba.RČ

Rodič(rodičRČ,potomekRČ) rodičRČOsoba.RČ, potomekRČOsoba.RČ

8

Sňatek

jméno

0..1

příjmení

datNardatÚmrtí

pohlaví

0..10..1manžel manželkaOsoba

datSňatku

Rodič

0..n0..2

Převod E-R i UML bude celkem přímočarý. Nejprve entita (třída), potom oba vztahy, kde oba jsou v podstatě M:N (více než 1:N). V převodu z UML budou umělé klíče. Informace o identifikační schopnosti RČ není součástí diagramu, ale případného OCL omezení. Atribut datSňatku bude jako neklíčový přidán do relace, která vztah modeluje.

Osoba(OsobaID,RČ,datNar,datÚmrtí,

jméno,Příjmení,pohlaví) Sňatek(maželID,manželkaID,datSňatku)

manželIDOsoba.OsobaID, manželkaIDOsoba.OsobaID

Rodič(rodičID,potomekID) rodičIDOsoba.osobaID, potomekIDOsoba.OsobaID

(0,1)(0,1)+manžel +manželka

Osoba(0,2)

(0,*)

- RČ- datNar- datÚmrtí (0..1)- jméno- příjmení- pohlaví

Sňatek

+rodič

+potomek

Sňatek- datSňatku

Page 9: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

Osoba(RČ,datNar,datÚmrtí,

jméno,Příjmení,pohlaví) Sňatek(maželRČ,manželkaRČ,datSňatku)

manželRČOsoba.RČ, manželkaRČOsoba.RČ

Otec(otecRČ,potomekRČ) otecRČOsoba.RČ, potomekRČOsoba.RČ

Matka(matkaRČ,potomekRČ) matkaRČOsoba.RČ, potomekRČOsoba.RČ

9

Převod E-R i UML bude obdobný předchozímu, pouze vztahová tabulka Rodič bude nahrazena dvojicí vztahových tabulek Otec a Matka.

Osoba(OsobaID,RČ,datNar,datÚmrtí,

jméno,Příjmení,pohlaví) Sňatek(maželID,manželkaID,datSňatku)

manželIDOsoba.OsobaID, manželkaIDOsoba.OsobaID

Otec(otecID,potomekID) otecIDOsoba.osobaID, potomekIDOsoba.OsobaID

Matka(matkaID,potomekID) matkaIDOsoba.osobaID, potomekIDOsoba.OsobaID

Sňatek

jméno

0..1

příjmení

datNardatÚmrtí

pohlaví

0..10..1manžel manželkaOsoba

datSňatku

Otec

0..n0..1

Matka

0..10..n (0,1)(0,1)

+manžel +manželka

(0,1)(0,*)

- RČ- datNar- datÚmrtí (0..1)- jméno- příjmení- pohlaví

Sňatek

+otec

+potomek

Sňatek- datSňatku

Osoba

(0,*)+potomek(0,1)

+matka

Page 10: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

Osoba(RČ,datNar,datÚmrtí,

jméno,Příjmení,pohlaví) Sňatek(maželRČ,manželkaRČ,datSňatku ,

datRozvodu) manželRČOsoba.RČ, manželkaRČOsoba.RČ

Otec(otecRČ,potomekRČ) otecRČOsoba.RČ, potomekRČOsoba.RČ

Matka(matkaRČ,potomekRČ) matkaRČOsoba.RČ, potomekRČOsoba.RČ

10

Převod E-R i UML bude opět obdobný předchozímu. V E-R bude mít pouze vztahová tabulka Sňatek jiný – složený – klíč, obě RČ plus atribut datSňatku. Navíc bude mít vazební tabulka nový neklíčový atribut datRozvodu. V UML bude nyní Sňatek plnohodnotná entita s vlastním ID a přibude atribut datRozvodu. Dva 1:N vztahy mezi třídami Sňatek a Osoba budou vnořeny do ní.

Osoba(OsobaID,RČ,datNar,datÚmrtí,

jméno,Příjmení,pohlaví) Sňatek(SňatekID,datSňatku , datRozvodu,

maželID,manželkaID) manželIDOsoba.OsobaID, manželkaIDOsoba.OsobaID

Otec(otecID,potomekID) otecIDOsoba.osobaID, potomekIDOsoba.OsobaID

Matka(matkaID,potomekID) matkaIDOsoba.osobaID, potomekIDOsoba.OsobaID

jméno

0..1

příjmení

datNardatÚmrtí

pohlaví

0..n0..n

Osoba

datSňatku

Otec

0..n0..1

Matka

0..10..n

datRozvodu0..1

Sňatek1..1 1..1Man

želManželka

(1,1)(1,1)+manžel +manželka

(0,1)(0,*)

- RČ- datNar- datÚmrtí (0..1)- jméno- příjmení- pohlaví

+otec

+potomek

Sňatek- datSňatku- datRozvodu (0,1)

Osoba

(0,*)+potomek(0,1)

+matka

(0,*) (0,*)

Page 11: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

Osoba(RČ,datNar,datÚmrtí,

jméno,Příjmení,pohlaví) Muž(RČ), RČOsoba.RČ Žena(RČ), RČOsoba.RČ

Sňatek.manželRČMuž.RČ, Sňatek.manželkaRČŽena.RČ Otec.otecRČMuž.RČ, Matka.matkaRČOsoba.RČ

11

Změna se bude týkat jen převodu hierarchie a případně definic cizích klíčů. V nejobecnějším případě převodu vzniknou pro hierarchii tří entit (tříd) tři relační schémata Osoba, Muž a Žena. V obou modelech by bylo zřejmě možné atribut pohlaví odebrat. Pozná se jinak.

Osoba(OsobaID,RČ,datNar,datÚmrtí,

jméno,Příjmení,pohlaví) Muž(OsobaID), osobaIDOsoba.OsobaID Žena(OsobaID), osobaIDOsoba.OsobaID

Sňatek.manželIDMuž.OsobaID, Sňatek.manželkaRČŽena.OsobaID Otec.otecIDMuž.OsobaRČ, Matka.matkaIDŽena.OsobaID

jméno

0..1

příjmení

datNardatÚmrtí

pohlaví

0..n0..nmanžel manželka

Osoba

datSňatku

Otec

0..n

0..1

Matka

0..1

0..n

datRozvodu0..1

Sňatek1..1 1..1

Muž Žena

Manžel

Manželka

(1,1)(1,1) +manžel +manželka

(0,1)

(0,*)

- RČ- datNar- datÚmrtí (0..1)- jméno- příjmení- pohlaví

+otec

+potomek

Sňatek- datSňatku- datRozvodu (0,1)

Osoba

(0,*)+potomek

(0,1)+matka

(0,*) (0,*)

Muž Žena

Page 12: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

Osoba(RČ,datNar,datÚmrtí,

jméno,Příjmení,pohlaví) Sňatek(maželRČ,manželkaRČ,datSňatku,

datRozvodu) manželRČOsoba.RČ, manželkaRČOsoba.RČ

Otec(otecRČ,potomekRČ) otecRČOsoba.RČ, potomekRČOsoba.RČ

Matka(matkaRČ,potomekRČ) matkaRČOsoba.RČ, potomekRČOsoba.RČ 12

Pokud se budeme chtít vyhnout spojování relací Osoba a Muž, resp. Osoba a Žena, je možné celou hierarchii převést jako jediné schéma Osoba. V tomto případě dopadne převod stejně, Jako převod bez hierarchie o dva slidy dříve.

Osoba(OsobaID,RČ,datNar,datÚmrtí,

jméno,Příjmení,pohlaví) Sňatek(SňatekID,datSňatku , datRozvodu,

maželID,manželkaID) manželIDOsoba.OsobaID, manželkaIDOsoba.OsobaID

Otec(otecID,potomekID) otecIDOsoba.osobaID, potomekIDOsoba.OsobaID

Matka(matkaID,potomekID) matkaIDOsoba.osobaID, potomekIDOsoba.OsobaID

jméno

0..1

příjmení

datNardatÚmrtí

pohlaví

0..n0..nmanžel manželka

Osoba

datSňatku

Otec

0..n

0..1

Matka

0..1

0..n

datRozvodu0..1

Sňatek1..1 1..1

Muž Žena

Manžel

Manželka

(1,1)(1,1) +manžel +manželka

(0,1)

(0,*)

- RČ- datNar- datÚmrtí (0..1)- jméno- příjmení- pohlaví

+otec

+potomek

Sňatek- datSňatku- datRozvodu (0,1)

Osoba

(0,*)+potomek

(0,1)+matka

(0,*) (0,*)

Muž Žena

Page 13: RNDr. Jakub Lokoč, Ph.D. RNDr. Michal Kopecký, Ph.D ...kopecky/vyuka/dbs/Example02_ER_CZ_MK.pdf · - tec a atka. épe se bude zjišťovat, který z rodičů je který. ňatek Č

Osoba(…) Muž(RČ,datNar,datÚmrtí, jméno,Příjmení,pohlaví) Žena(RČ,datNar,datÚmrtí, jméno,Příjmení,pohlaví)

Sňatek.manželRČMuž.RČ, Sňatek.manželkaRČŽena.RČ Otec.otecRČMuž.RČ, Otec.potomekRČ ???, Matka.matkaRČOsoba.RČ, Matka.potomekRČ ???

13

Pokud budeme brát entitu Osoba jako abstraktní, a dědění jako exkluzivní (nikdo není zároveň muž i žena), bylo by možné vytvořit jen dvě relace Muž a Žena a zrušit relaci Osoba. V návaznosti by se zpřesnily některé cizí klíče, ale musely by být zrušeny ty cizí klíče v Otec a Matka, které musí vést na osoby. V tomto případě by tedy tato volba nebyla vhodná.

Osoba(…) Muž(OsobaID,RČ,datNar, …,Příjmení,pohlaví) Žena(OsobaID,RČ,datNar, …,Příjmení,pohlaví)

Sňatek.manželIDMuž.OsobaID, Sňatek.manželkaRČŽena.OsobaID Otec.otecIDMuž.OsobaRČ, Otec.potomekID ???, Matka.matkaIDŽena.OsobaID , Matka.potomekID ???

jméno

0..1

příjmení

datNardatÚmrtí

pohlaví

0..n0..nmanžel manželka

Osoba

datSňatku

Otec

0..n

0..1

Matka

0..1

0..n

datRozvodu0..1

Sňatek1..1 1..1

Muž Žena

Manžel

Manželka

(1,1)(1,1) +manžel +manželka

(0,1)

(0,*)

- RČ- datNar- datÚmrtí (0..1)- jméno- příjmení- pohlaví

+otec

+potomek

Sňatek- datSňatku- datRozvodu (0,1)

Osoba

(0,*)+potomek

(0,1)+matka

(0,*) (0,*)

Muž Žena


Recommended