Vraag Normaliseren
Ik moet voor school een opdracht normaliseren maken. Nu ben ik benieuwd of jullie nog fouten zien?
Met vriendelijke groeten,
Jan Brink
De opdracht
Een vliegtuigmaatschappij hanteert o.a. de onderstaande overzichten.
Vliegschema 12 april 2005
Vluchtnummer : KL569
Vliegtuignummer : 143-R6
Plaats van vertrek: Schiphol
Plaats van aankomst: Heathrow
Vertrektijd : 12.46
Passagier Geb.datum Stoelnr Boekingnr
3242HJ35 12-1-56 12 2005775439
9477JK29 3-6-68 2 2005876541
…. etc ….
Aantal passagiers : 245
Vluchtnummer : KL731
Vliegtuignummer : 838-A4
Plaats van vertrek: Schiphol
Plaats van aankomst: New York
Vertrektijd : 13.01
etc.
figuur 1
Hierbij geldt dat een vlucht altijd gaat van een plaats van vertrek, naar een plaats van aankomst. Deze vlucht heeft één nummer, ongeacht de vluchtdatum en/of vertrektijd. Verder geldt dat iedere boeking voor een vlucht een uniek boekingnummer oplevert.
Passagierlijst vlucht KL569, 12-4-05, 12.46, Schiphol
Nr Naam Adres Postcode Plaats Boekingnr
3242HJ35 Jansen P.J. Kerkstraat 3 3242 HJ Spijkenisse 2005775439
9477JK29 Klovenier Doorkijkje 45 9477 JK Gorinchem 2005876541
… etc ……
figuur 2
De opdracht is
Normaliseer de bijgaande figuren. Licht de normalisaties toe, denk daarbij aan het toelichten van proces-, samengestelde- en constante gegevens.
Licht ook uw sleutelkeuze toe. (normaalvorm 0 t/m 3 gebruiken)
Mijn uitwerking
Opgave 10 – vliegtuigmaatschappij
Bij deze opdracht gaat het erom om gegevens van de vluchten en de passagiers te normaliseren tot 1 database. Daarom normaliseer ik hier eerst het vliegschema en daarna de passagierslijst. Als laatste worden het vliegschema en het passagierslijst samengevoegd tot 1 database ontwerp.
Vliegschema
0NV
VLIEGSCHEMA
Datum
Vlucht_nr
Vliegtuig_nr
Plaats_vertrek
Plaats_aankomst
Vertrektijd
Passagier
Geb
Stoel_nr
Boeking_nr
Aantal_passagiers
Nu geef ik een sleutel aan, omdat er het beste een vlucht id kan zijn heb ik deze erbij gemaakt. Er zijn nooit 2 dezelfde vlucht id’s. Verder geef ik de repeterende groepen en procesgegevens aan.
Dit geeft het volgende resultaat:
0NV
VLIEGSCHEMA
Vlucht_id
Datum
Vlucht_nr (RG)
Vliegtuig_nr (RG)
Plaats_vertrek (RG)
Plaats_aankomst (RG)
Vertrektijd (RG)
Passagier (RG)
Geb (RG)
Stoel_nr (RG)
Boeking_nr (RG)
X Aantal_passagiers (PG) (RG)
Nu worden de repeterende groepen samen met de sleutel naar een nieuwe tabel overgezet en de proces gegevens verwijderd om de 1ste nv over te houden.
1NV
VLIEGSCHEMA
Vlucht_id
Datum
VLUCHT
Vlucht_id
Vlucht_nr
Vliegtuig_nr
Plaats_vertrek
Plaats_aankomst
Vertrektijd
Passagier (RG)
Geb (RG)
Stoel_nr (RG)
Boeking_nr (RG)
Zoals hierboven te zien is, staan er opnieuw een aantal repeterende groepen in.
Deze moeten er opnieuw uitgehaald worden.
1NV
VLIEGSCHEMA
Vlucht_id
Datum
VLUCHT
Vlucht_id
Vlucht_nr
Vliegtuig_nr
Plaats_vertrek
Plaats_aankomst
Vertrektijd
PASSAGIER
Vlucht_id
Boeking_nr
Passagier
Geb
Stoel_nr
Om tot de 2de NV te komen geef ik alle attributen aan die niet functioneel afhankelijk is van de volledige sleutel.
1NV
VLIEGSCHEMA
Vlucht_id
Datum
VLUCHT
Vlucht_id
Vlucht_nr
> Vliegtuig_nr
> Plaats_vertrek
> Plaats_aankomst
> Vertrektijd
PASSAGIER
Vlucht_id
Boeking_nr
Passagier
Geb
Stoel_nr
De attributen die niet functioneel afhankelijk zijn van de volledige sleutel komen in een nieuwe tabel. Dit geeft de 2de NV als resultaat.
2NV
VLIEGSCHEMA
Vlucht_id
Datum
VLUCHT
Vlucht_id
Vlucht_nr
PASSAGIER
Vlucht_id
Boeking_nr
Passagier
Geb
Stoel_nr
VLUCHTGEGEVENS
Vlucht_id
Vliegtuig_nr
Plaats_vertrek
Plaats_aankomst
Vertrektijd
2NV = 3 NV
Passagierslijst
0NV
PASSAGIERSLIJST
Passagier
Datum
Plaats_vertrek
Vertrektijd
Voornaam
Achternaam
Adres
Postcode
Plaats
Boeking_nr
Vlucht_nr
Nu geef ik een sleutel aan, omdat er het beste een vlucht id kan zijn i.v.m de tabellen voor het vliegschema waarmeer deze tabellen later samengevoegd moeten worden, heb ik deze aangemaakt. Er zijn nooit 2 dezelfde vlucht id’s. Verder geef ik de repeterende groepen en procesgegevens aan.
Dit geeft het volgende resultaat:
0NV
PASSAGIERSLIJST
Vlucht_id
Passagier (RG)
Datum
Plaats_vertrek
Vertrektijd
Voornaam (RG)
Achternaam (RG)
Adres (RG)
Postcode (RG)
Plaats (RG)
Boeking_nr (RG)
Vlucht_nr
Nu worden de repeterende groepen samen met de sleutel naar een nieuwe tabel overgezet en de proces gegevens verwijderd om de 1ste nv over te houden.
1NV
PASSAGIERSLIJST
Vlucht_id
Datum
Plaats_vertrek
Vertrektijd
Vlucht_nr
PASSAGIER_GEGEVENS
Vlucht_id
Boeking_nr
Passagier
Voornaam
Achternaam
Adres
Postcode
Plaats
Om tot de 2de NV te komen geef ik alle attributen aan die niet functioneel afhankelijk is van de volledige sleutel.
1NV
PASSAGIERSLIJST
Vlucht_id
Datum
Plaats_vertrek
Vertrektijd
Vlucht_nr
PASSAGIER_GEGEVENS
Vlucht_id
> Boeking_nr
> Passagier
> Voornaam
> Achternaam
> Adres
> Postcode
> Plaats
De attributen die niet functioneel afhankelijk zijn van de volledige sleutel komen in een nieuwe tabel. Dit geeft de 2de NV als resultaat.
2NV
PASSAGIERSLIJST
Vlucht_id
Datum
Plaats_vertrek
Vertrektijd
Vlucht_nr
VLUCHT_GEGEVENS
Vlucht_id
Boeking_nr
PASSAGIER_GEGEVENS
Boeking_nr
Passagier
Voornaam
Achternaam
Adres
Postcode
Plaats
2NV = 3NV
Samenvoegen vliegschema en passagierslijst
Eerst zet ik de eindresultaten van beide opdrachten onder elkaar voor een goed overzicht zodat problemen makkelijk gevonden kunnen worden. (Dubbele tabellen, gegevens linken)
Vliegschema
VLIEGSCHEMA
Vlucht_id
Datum
VLUCHT
Vlucht_id
Vlucht_nr
PASSAGIER
Vlucht_id
Boeking_nr
Passagier
Geb
Stoel_nr
VLUCHTGEGEVENS
Vlucht_id
Vliegtuig_nr
Plaats_vertrek
Plaats_aankomst
Vertrektijd
Passagierslijst
PASSAGIERSLIJST
Vlucht_id
Datum
Plaats_vertrek
Vertrektijd
Vlucht_nr
VLUCHT_GEGEVENS
Vlucht_id
Boeking_nr
PASSAGIER_GEGEVENS
Boeking_nr
Passagier
Voornaam
Achternaam
Adres
Postcode
Plaats
Hieruit kunnen we opmaken dat PASSAGIERSLIJST niet nodig is aangezien deze gegevens al eerder staan opgeslagen. Hetzelfde geld voor VLUCHT_GEGEVENS. Als we deze tabellen weg halen dan komen we tot het volgende eindresultaat:
Eindresultaat
VLIEGSCHEMA
Vlucht_id
Datum
VLUCHT
Vlucht_id
Vlucht_nr
PASSAGIER
Vlucht_id
Boeking_nr
Passagier
Geb
Stoel_nr
VLUCHTGEGEVENS
Vlucht_id
Vliegtuig_nr
Plaats_vertrek
Plaats_aankomst
Vertrektijd
PASSAGIER_GEGEVENS
Boeking_nr
Passagier
Voornaam
Achternaam
Adres
Postcode
Plaats
Gewijzigd op 07/06/2012 11:40:09 door Jan Brink
ziet er op het eerste gezicht wel goed uit, al moet ik bekennen dat ik niet alles gelezen heb maar alleen je inventarisatie en je eindresultaat. alleen vond ik het wel raar dat er maar 1 vlucht_nr is ongeacht datum o.i.d. is dat normaal in het echt ook zo? volgens mij niet maar dat moet je even uitzoeken :)
Yep, de KL1422 vliegt elke dag tussen Birmingham en Schiphol. Zou je elke dag andere vluchtnummers hebben dan zou dat nu waarschijnlijk KL12187743726476130 of iets dergelijks zijn. Niet echt werkbaar.
nee wat ik meer bedoelde je kan op een traject ( newyork-schiphol ) meerdere vliegtuigen hebben op een dag die bijv 3 uur na elkaar vertrekken. dus dan heb je daar verschillende nummers voor nodig. maar daar heb je natuurlijk de id danwel de vliegtuig nummer voor besef ik nu :)
Voor verschillende vluchten per dag heb je wel verschillende vluchtnummers. In principe kan elk vluchtnummer maar 1 keer per dag gebruikt worden (er zijn uitzonderingen, maar die doen niet zo terzake).