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. Datová Analýza... 5 1. 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. Funkční závislosti a normální formy... 9 1. 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 Reakce Aktér Přidat zastávku Zapiš do seznamu zastávek, přiděl idzastavky Odebrat zastávku Odebrat ze seznamu zastávek Zapiš dopravní prostředek do seznamu dopravních Přidat dopravní prostředek + prostředků, přiděl idvozidla, vyber řidiče, který se bude o přidat řidiče vozidlo starat Odebrat dopravní prostředek Odeber dopravní prostředek ze seznamu dopravních prostředků Přidat linku Zapiš do seznamu linek, přiděl idlinky Odeber linku Odeber ze seznamu linek, odeber zastávky, které leží jen na této lince Vyhledej spoj Vyhledat trasu od zastávky odjezdu po zastávku příjezdu 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) 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 Jiří Znoj zno0011 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 rc Int PK UNIQUE NN rodné číslo bez / jmeno Varchar(30) NN prijmeni Varchar(30) NN bydliste Text NN tel Bigint NN s předvolbou bez + CHECK(tel > 99 999 999 999) pohlavi Varchar(4) N muz, zena heslo Varchar(20) NN plat Int NN Vozidlo idvozidla Int PK UNIQUE NN typvozidla Varchar(30) NN tramvaj, autobus, metro, trolejbus, vlak znacka Text NN maxpocet Int NN maximální počet přepravovaných osob barierove Bit N rc Int FK NN rodné číslo bez / REFERENCES Ridic RidicVozidlo rc Int PFK NN REFERENCES Ridic idvozidla Int PFK NN REFERENCES Vozidlo VozidloLinka od Time NN do Time NN idvozidla Int PFK NN REFERENCES Vozidlo cislolinky Int PFK NN REFERENCES Linka Linka cislolinky Int PK UNIQUE NN typlinky Text NN tramvaj, autobus, metro, trolejbus, vlak Jiří Znoj zno0011 8
ZastavkaLinkaCas cas Time NN čas výjezdu vozidla dané linky ze zastávky cislolinky Int PFK NN REFERENCES Linka idzastavky Int PFK NN REFERENCES Zastavka Zastavka idzastavky Int PK UNIQUE NN nazev Varchar(30) UNIQUE NN barierova Bit N cislozony Int FK NN REFERENCES Zona Zona cislozony Int PK UNIQUE NN mesto Bit NN městská (1) nebo mimoměstská (0) zóna RozpisSmen datum Date NN jmenosmeny Char(256) NN směna A, B, C, D rc Int PFK NN REFERENCES Ridic typsmeny Text PFK NN REFERENCES Smena Smena typsmeny Text PK UNIQUE NN ranní, odpolední, celodenní, noční zacatek Time NN směna A, B, C, D konec Time NN hodin Int N 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 = F min. 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