Fakulta elektrotechniky a informatiky Vysoká škola báňská - Technická univerzita Ostrava
Úvod do databázových systémů 2012/2013
IS MHD
Jiří Znoj, (zno0011)
Ostrava, 29. listopadu 2012
I.
Obsah I.
Obsah .............................................................................................................................................. 2
II.
Zadání: ............................................................................................................................................ 3 1.
Funkční požadavky .................................................................................................................................... 3 PROČ........................................................................................................................................................................................... 3 K ČEMU....................................................................................................................................................................................... 3 KDO ............................................................................................................................................................................................ 3 VSTUPY ....................................................................................................................................................................................... 3 VÝSTUPY ..................................................................................................................................................................................... 3 FUNKCE ...................................................................................................................................................................................... 3 OKOLÍ.......................................................................................................................................................................................... 3
2.
Use Case diagram...................................................................................................................................... 4 Úplný Use case diagram ............................................................................................................................................................. 4 Odlehčená – přehlednější verze Use – case diagramu ............................................................................................................... 4
3.
Tabulka událostí a reakcí ........................................................................................................................... 5
4.
Kontextový diagram .................................................................................................................................. 5
III. 1.
Datová Analýza ............................................................................................................................ 5 Lineární zápis seznamu typů entit a jejich atributů ..................................................................................... 5 Entity: ......................................................................................................................................................................................... 5 Vztahy:........................................................................................................................................................................................ 5 Nahrazení vztahů M:N................................................................................................................................................................ 6 Entity: ......................................................................................................................................................................................... 6 Vztahy:........................................................................................................................................................................................ 6
2.
Grafický tvar konceptuálního modelu (ERD, UML) ...................................................................................... 6
3.
Grafický tvar logického modelu ................................................................................................................. 7
4.
Grafický tvar relačního datového modelu .................................................................................................. 7
5.
Úplné tabulky atributů (tj. datový slovník) a integritní omezení ................................................................. 8
IV. 1.
Funkční závislosti a normální formy .............................................................................................. 9 Sestavení množiny funkčních závislostí ...................................................................................................... 9 Universální schéma .................................................................................................................................................................... 9 Množina všech funkčních závislostí .......................................................................................................................................... 10 Klíč univerzálního schématu ..................................................................................................................................................... 10
2.
Minimalizace množiny funkčních závislostí algoritmem pro minimální neredundantní pokrytí .................. 10
3.
Sestavení relačního datového modelu v BCNF.......................................................................................... 11 rozklad pomocí dekompozice................................................................................................................................................... 11 rozklad pomocí syntézy ............................................................................................................................................................ 11
4.
Porovnání původního relačního modelu získaného z konceptuálního modelu a modelu v BCNF ................ 11
Jiří Znoj – zno0011
2
II.
Zadání: 1. Funkční požadavky PROČ Je potřeba vytvořit komplexní informační systém městské hromadné dopravy, který bude sloužit jak pro vnitřní, tak pro vnější účely. K ČEMU Tento informační systém bude sloužit k vyhledávání spojů městské hromadné dopravy podle různých kritérií, jakými jsou například typ vozidla, jestli vozidlo umožňuje bezbariérový přístup, vyhledávání jen v zastávkách umožňujících bezbariérový přístup do vozidla a zároveň bude sloužit k evidenci řidičů a k práci s jejich směnami. KDO Se systémem bude moci pracovat každý, kdo si chce vyhledat nějaký spoj městské hromadné dopravy, řidiči vozidel městské hromadné dopravy, správce systému a také zaměstnavatel řidičů. VSTUPY U řidičů evidujeme rodné číslo, jméno, příjmení, bydliště, telefonní číslo, pohlaví, heslo a plat. U směn evidujeme typ – tedy název směny, v kolik začíná, v kolik končí a kolik je to dohromady hodin. U vozidel evidujeme typ – jestli se jedná o tramvaj, autobus, metro, trolejbus nebo vlak, dále pak jestli je vozidlo s bariérovým přístupem, značku, max. počet cestujících a řidiče, který se o vozidlo stará. Dále evidujeme, jací řidiči jezdí s jakými vozidly a od kolika, do kolika hodin jezdí vozidlo určitou linku. U zastávek evidujeme identifikační číslo zastávky, její název a možnost bezbariérového přístup. Dále pak v kolik hodin zastavuje na konkrétní zastávce která linka. U zón evidujeme číslo zóny a pak jestli se jedná o městskou, nebo mimoměstskou oblast. U linek evidujeme číslo linky a typ linky (vozidla jakého typu po ní jezdí – tramvaj/autobus/metro/trolejbus/vlak) VÝSTUPY Výstupem pro správce nebo zaměstnavatele budou všichni řidiči, všechna vozidla, jaký řidič se stará o jaké vozidlo, jací řidiči řídí jaká vozidla, všechny zastávky, linky, zóny. Pro nepřihlášeného uživatele bude výstupem spojení dle zadaných kritérií včetně všech zastávek, které leží mezi zadanou vstupní a výstupní zastávkou, všechny odjezdy ze zadané zastávky, všechny spoje z dané zastávky. Pro řidiče se zobrazí rozpis směn, všechny detaily o vozidle, o které se stará, všechny směny včetně jejich detailů. FUNKCE Pokud přidáme nové vozidlo, musíme mu také přidělit řidiče, který se o toto vozidlo bude starat. Po přidání zastávky se musí zadat, ve které zóně leží a do které linky bude zastávka patřit. Každý řidič patří do jednoho rozpisu směn, kde se směny „točí“. Pro každé vyhledávání vyhledá k zastávce odjezdu trasu (všechny navštívené zastávky) k zastávce příjezdu. OKOLÍ Kdokoli, kdo se k aplikaci dostane, může v aplikaci vyhledávat spoje. Pracovníci městské hromadné dopravy pak používají aplikaci pro vnitřní účely.
Jiří Znoj – zno0011
3
2. Use Case diagram Úplný Use case diagram
Odlehčená – přehlednější verze Use – case diagramu
Jiří Znoj – zno0011
4
3. Tabulka událostí a reakcí Událost Přidat zastávku Odebrat zastávku Přidat dopravní prostředek + přidat řidiče Odebrat dopravní prostředek Přidat linku Odeber linku Vyhledej spoj
Reakce Zapiš do seznamu zastávek, přiděl idZastavky Odebrat ze seznamu zastávek Zapiš dopravní prostředek do seznamu dopravních prostředků, přiděl idVozidla, vyber řidiče, který se bude o vozidlo starat Odeber dopravní prostředek ze seznamu dopravních prostředků Zapiš do seznamu linek, přiděl idLinky Odeber ze seznamu linek, odeber zastávky, které leží jen na této lince Vyhledat trasu od zastávky odjezdu po zastávku příjezdu
Aktér
4. Kontextový diagram
III.
Datová Analýza 1. Lineární zápis seznamu typů entit a jejich atributů Entity: Ridic (rc, jmeno, prijmenu, bydliste, tel, pohlavi, heslo, plat) Vozidlo (idVozidla, tyo, znacka, maxPocet, barierove, rc, rc_ridi) Linka (cisloLinky, typLinky) Zastavka (idZastavky, nazev, barierova, cisloZony) Zona (cisloZony, mesto) Smena (typSmeny, začátek, konec, hodin)
Jiří Znoj – zno0011
Vztahy: stara_se_o (Ridic, Vozdilo) 1:1 ridi(Ridic, Vozidlo) N:M jezdi (Vozdilo, Linka) N:M se sklada (Linka, Zastavka) N:M obsahuje (Zona, Zastavka) 1:N chodi (Ridic, RozpisSmen) N:M
5
Nahrazení vztahů M:N Entity: Ridic (rc, jmeno, prijmenu, bydliste, tel, pohlavi, heslo, plat) Vozidlo (idVozidla, tyo, znacka, maxPocet, barierove, rc) Linka (cisloLinky, typLinky) Zastavka (idZastavky, nazev, barierova, cisloZony) Zona (cisloZony, mesto) Smena (typSmeny, začátek, konec, hodin) VozidloLinka (od, do, idVozidla, cisloLinky) ZastavkaLinkaCas (cas, cisloLinky, idZastavky) RozpisSmen (datum, jmenoSmeny, rc, typSmeny) RidicVozidlo (rc, idVozidla)
Vztahy: stara_se_o (Ridic, Vozdilo) 1:1 ridi_Ridic (Ridic, RidicVozidlo) 1:N ridi_Vozidlo (Vozidlo, RidicVozidlo) 1:N jezdi (Vozdilo, VozidloLinka) 1:N ma (Linka, VozidloLinka) 1:N se sklada (Linka, ZastavkaLinkaCas) 1:N zastavuje (Zastavka, zastavkaLinkaCas) 1:N obsahuje (Zona, Zastavka) 1:N chodi (Ridic, RozpisSmen) 1:N je v (Smena, RozpisSmen) 1:N
vysvětlivky: primární klíč (PK), cizí klíč (FK), cizí klíč jako část primárního klíče (PFK)
2. Grafický tvar konceptuálního modelu (ERD, UML)
Jiří Znoj – zno0011
6
3. Grafický tvar logického modelu
4. Grafický tvar relačního datového modelu
Jiří Znoj – zno0011
7
5. Úplné tabulky atributů (tj. datový slovník) a integritní omezení
Ridic jméno atributu rc jmeno prijmeni bydliste
datový typ Int Varchar(30) Varchar(30) Text
typ klíče PK
unikátní UNIQUE
povinnost NN NN NN NN
tel
Bigint
NN
pohlavi heslo plat
Varchar(4) Varchar(20) Int
N NN NN
poznámka, IO rodné číslo bez „/“
s předvolbou bez „+“ CHECK(tel > 99 999 999 999) „muz“, „zena“
Vozidlo jméno atributu idVozidla
datový typ Int
typ klíče PK
unikátní UNIQUE
typVozidla
Varchar(30)
NN
znacka
Text
NN
maxPocet
Int
NN
barierove
Bit
N
rc
Int
FK
povinnost NN
poznámka, IO tramvaj, autobus, metro, trolejbus, vlak maximální počet přepravovaných osob
NN
rodné číslo bez „/“ REFERENCES Ridic
povinnost NN NN
poznámka, IO REFERENCES Ridic REFERENCES Vozidlo
povinnost NN NN NN NN
poznámka, IO
RidicVozidlo jméno atributu rc idVozidla
datový typ Int Int
typ klíče PFK PFK
unikátní
VozidloLinka jméno atributu od do idVozidla cisloLinky
datový typ Time Time Int Int
typ klíče
unikátní
PFK PFK
REFERENCES Vozidlo REFERENCES Linka
Linka jméno atributu cisloLinky
datový typ Int
typLinky
Text
Jiří Znoj – zno0011
typ klíče PK
unikátní UNIQUE
povinnost NN NN
poznámka, IO tramvaj, autobus, metro, trolejbus, vlak
8
ZastavkaLinkaCas jméno atributu
datový typ
cas
Time
cisloLinky idZastavky
Int Int
typ klíče
unikátní
povinnost NN
PFK PFK
NN NN
poznámka, IO čas výjezdu vozidla dané linky ze zastávky REFERENCES Linka REFERENCES Zastavka
Zastavka jméno atributu idZastavky nazev barierova cisloZony
datový typ Int Varchar(30) Bit Int
typ klíče PK
unikátní UNIQUE UNIQUE
FK
povinnost NN NN N NN
poznámka, IO
REFERENCES Zona
Zona jméno atributu cisloZony
datový typ Int
mesto
Bit
typ klíče PK
unikátní UNIQUE
povinnost NN NN
poznámka, IO městská (1) nebo mimoměstská (0) zóna
RozpisSmen jméno atributu datum jmenoSmeny rc typSmeny
datový typ Date Char(256) Int Text
typ klíče
unikátní
PFK PFK
povinnost NN NN NN NN
poznámka, IO směna A, B, C, D REFERENCES Ridic REFERENCES Smena
Smena jméno atributu
datový typ
typ klíče
unikátní
povinnost
typSmeny
Text
PK
UNIQUE
NN
zacatek konec hodin
Time Time Int
NN NN N
poznámka, IO ranní, odpolední, celodenní, noční směna A, B, C, D
Vysvětlivky: NN = not null, N = null, PK = primární klíč, FK = cizí klíč, PFK = cizí klíč je součást primárního klíče
IV.
Funkční závislosti a normální formy 1. Sestavení množiny funkčních závislostí Universální schéma U (rc, jméno, prijmeni, bydliste, tel, pohlavi, heslo, plat, idVozidla, typVozidla, znacka, maxPocet, barierove, od, do, cisloLinky, typLinky, cas, IdZastavky, nazev, barierova, cisloZony, mesto, datum, jmenoSmeny, typSmeny, zacatek, konec, hodin) Jiří Znoj – zno0011
9
přejmenování pro rychlejší a přehlednější zpracování: U (rc, jm, pr, bydl, tel, pohl, hes, plat, idV, typV, zn, maxP, barV, od, do, cisL, typL, cas, idZ, naz, barZ, cisZ, met, dat, jmS, typS, zac, kon, hod)
F={
Množina všech funkčních závislostí rc -> jm pr bydl tel pohl hes plat idV -> typV zn maxP barV rc idV cisL -> od do cisL -> typL cisL idZ -> cas idZ -> naz barZ cisZ cisZ -> met rc typS -> dat, jmS typS -> zac, kon, hod
} Klíč univerzálního schématu rc += { rc jm pr bydl tel pohl hes plat } idV += { idV typV zn maxP barV rc jm pr bydl tel pohl hes plat } idV cisL += { idV typV zn maxP barV rc jm pr bydl tel pohl hes plat cisL typL od do } cisL += { cisL typL } cisL idZ += { cisL typL idZ naz barZ cisZ met cas} idZ += { idZ naz barZ cisZ met } cisZ += { cisZ met } rc typS += { rc jm pr bydl tel pohl hes plat typS zac kon hod dat jmS} typS += { typS zac kon hod } Klíč universálního schématu K = {idV cisL idZ typS}
2. Minimalizace množiny funkčních závislostí algoritmem pro minimální neredundantní pokrytí Ve funkčních závislostech se žádné redundantní závislosti ani atributy nevyskytují, tudíž F = Fmin.
Jiří Znoj – zno0011
10
3. Sestavení relačního datového modelu v BCNF rozklad pomocí dekompozice
rozklad pomocí syntézy
4. Porovnání původního relačního modelu získaného z konceptuálního modelu a modelu v BCNF Oba rozklady se od konceptuálního modelu výrazně neliší. Liší se jen tím, že tabulka RidicVozidlo, která reprezentuje m:n vztah mezi řidiči a vozidly, je identifikována pomocí klíče univerzálního schématu – tedy atributy idVozidla, cisloLinky, idZastavky, TypSmeny.
Jiří Znoj – zno0011
11