Skip navigation

2. példa

Taxis adatbázis

Készítsünk egy taxis adatbázist! Az adatbázisban szeretnénk eltárolni a sofőröket nevükkel, születési dátumukkal, lakcímükkel, valamint gépkocsijaikkal, amelynek típusát, rendszámát, és a műszaki vizsgálat érvényességét tartják nyilván. Minden sofőrnek egy gépkocsija van. A taxitársaság több tarifakategóriát határoz meg, amelyek egyedi elnevezés mellett a kilométerenkénti egységárakat tartalmazzák. A társaság nyilvántartja a törzsutasokat, akiknek törzsutaskártyát ad, és ők kedvezményes tarifával utazhatnak. A törzsutasokról csupán a törzsutas számot, a nevet, és a születési évet tárolják. Nyilvántartják az egyes fuvarok esetén azt is, hogy melyik sofőr, mikor, honnan, hová szállított utast, és milyen tarifakategóriát állított be az útjuk során. A viteldíjat is eltárolhatjuk egy fuvarhoz, így könnyebb lesz az elszámolást elkészíteni. (Megjegyezzük, hogy a viteldíj az út hosszától és a beállított tarifa egységárától függ. Ha nem tárolnánk el a viteldíjat, akkor az a későbbiekben is kiszámolható.) A gyakorlatban, amikor egy taxis több törzsutast visz, akkor csak az egyik diktálja be a törzsutas számát. Ezt figyelembe vesszük az adatbázis tervezésénél.

Képezzük le az egyedeket! Jelen példában ez egyszerű.

TarifaKategória(megnevezés, egységár)
Törzsutas(törzsutasszám, név, születési év)
Gépkocsi(rendszám, típus, műszaki lejár)
Sofőr(név, születési dátum, lakcím)

Képezzük le a gyenge egyedet! Figyeljünk arra, hogy vezetett meghatározó kapcsolaton keresztül a Sofőr egyed kulcsát is hozzá kell vennünk! Ebben az esetben a {név, születési dátum, mikor} attribútumhalmazt lehet kijelölni elsődleges kulcsnak.

Fuvar(név, születési dátum, mikor, honnan, hová, km, viteldíj)

Képezzük le a kapcsolatokat! A gépkocsija kapcsolat egy 1:1 kapcsolat, a leképezése egyszerű, hiszen attribútumként felvesszük a kapcsolódó egyedek kulcsait, és a séma kulcsának ezen egyedek kulcsai közül bármelyiket választhatjuk. Most a Sofőr egyed kulcsát választjuk.

Gépkocsija(név, születési dátum, rendszám)

A kategóriája kapcsolat leképezése sem nehéz, csak arra kell figyelni, hogy gyenge egyedet a Sofőr egyed határozza meg, így az ő kulcsát is fel kell tüntetni. Ilyenkor a gyenge egyedből leképezett relációséma kulcsát kell figyelembe venni. 1:N kapcsolat és nincsenek kapcsolati attribútumok, ezért az N-oldali séma attribútumai alkotják a kulcsot.

Kategóriája(név, születési dátum, mikor, TarifaKategoria.megnevezés)

Hasonlóképpen történik a vitte kapcsolat leképezése is.

Vitte(név, születési dátum, mikor, törzsutasszám)

Konszolidáció

Következő lépésként azokat a relációsémákat, amelyeknek megegyeznek a kulcsai, összevonhatjuk. Az összevonás után az alábbi sémákat kapjuk:

TarifaKategória(megnevezés, egységár)
Törzsutas(törzsutasszám, név, születési év)
Gépkocsi(rendszám, típus, műszaki lejár)
Sofőr(név, születési dátum, lakcím, rendszám)
Fuvar(név, születési dátum, mikor, honnan, hová, km, viteldíj, TarifaKategória.megnevezés, törzsutasszám)