Skip navigation

Példa: Taxis adatbázis

Taxis adatbázis

Egy taxitársaság az alábbi táblázatban tartja nyilván a fuvarokat. A gépkocsikat mindig ugyanaz a sofőr vezeti, nincs olyan, hogy átadják egymásnak a járműveket, azt is feltesszük, hogy egy soförnek egy telefonszáma van.
Határozzuk meg a kulcsokat az alábbi relációsémában és hozzuk 1NF, 2NF és 3NF normálformákra!

Fuvar ( rendszám, gépkocsiTipus, műszakiLejár, sofőrNév, sofőrLakcím, sofőrTelefon, indulásiIdő, indulásiCím, megtettKm)

{rendszám} → {gépkocsiTípus, műszakiLejár, sofőrNév, sofőrLakcím, sofőrTelefon}
{rendszám, indulásiIdő} → {indulásiCím, megtettKm}
{sofőrTelefon} → {sofőrNév, sofőrLakcím, rendszám}

Kulcsok meghatározása

{rendszám}+ = {gépkocsiTípus, műszakiLejár, sofőrNév, sofőrLakcím, sofőrTelefon}
{rendszám, indulásiIdő}+ = {gépkocsiTípus, műszakiLejár, sofőrNév, sofőrLakcím, sofőrTelefon, indulásiCím, meggtettKm}
{sofőrTelefon}+ = {rendszám, gépkocsiTípus, műszakiLejár, sofőrNév, sofőrLakcím}
{sofőrTelefon, indulásiIdő}+ = {gépkocsiTípus, műszakiLejár, sofőrNév, sofőrLakcím, rendszám, indulásiCím, meggtettKm}

Láthatjuk, hogy a {rendszám, indulásiIdő}, {sofőrTelefon, indulásiIdő} halmazok tranzitív lezártjai visszaadják a teljes attribútumhalmazt, így azok megfelelő kulcsok lesznek. Ezen halmazok közül bármelyiket választhatjuk elsődleges kulcsnak:

Fuvar ( rendszám, gépkocsiTipus, műszakiLejár, sofőrNév, sofőrLakcím, sofőrTelefon, indulásiIdő, indulásiCím, megtettKm)

1NF

Minden attribútum atomi, nincs a sémában sem többértékű, sem pedig összetett attribútum, így a séma 1NF-ben van.

2NF

A kulcs attribútumok a {rendszám,indulásiIdő}, {sofőrTelefon,indulásiIdő}, így ezek az elsődleges attribútumok.

A másodlagos attribútumokat vizsgálva meg kell nézni, hogy egy másodlagos attribútum tényleg ezektől a halmazoktól függ, vagy ezeknek a halmazoknak egy valódi részhalmazától. Az autóra vonatkozó adatok és a sofőr személyes adatai nem függnek például az indulási időponttól.

Tehát, a {rendszám} → {gépkocsiTípus, forgalmiLejár} valamit{sofőrTelefon} → { sofőrNév, sofőrLakcím} függés mentén fel lehet bontani a sémát.

Gépkocsi(rendszám, gépkocsiTípus, forgalmiLejár,
Sofőr(sofőrTelefon, sofőrNév, sofőrLakcím)
Fuvar2( rendszám, indulásiIdő, indulásiCím, megtettKm, sofőrTelefon)

3NF

A sémák 3NF-ben vannak.

BCNF

A sémák már BCNF-ben is vanna, de ha egy lépés visszalépünk, akkor a BCNF-re is hozhatjuk a sémákat.
A Sofőr séma BCNF-ben van, mert a {sofőrTelefon} →{sofőrNév, sofőrLakcím} függés nemtriviális és a sofőrTelefon szuperkulcs.

A Gépkocsi séma BCNF-ben van, mert a {rendszám} →{gépkocsiTípus, forgalmiLejár, sofőrTelefon} függés nemtriviális és a rendszám szuperkulcs.

A Fuvar2 séma BCNF-ben van, mert a {rendszám, indulásiIdőpont} →{indulásiCím, megtettKm} függés nemtriviális és a {rendszám, indulásiIdőpont} szuperkulcs.