Übung zu Normalisierung

Werbung
SQL
Normalisierung
Juni 2012
E2A
Beispiele zu Normalisierung
Zeichne für jede Aufgabe ein ER-Modell. Führe eine Überprüfung mittels Dummydaten durch.
M : N -Beziehungen sind aufzulösen.
1. Es soll eine Datenbank für eine Flughafenverwaltung entworfen werden.
• Jeder Flug wird über eine Flugnummer identifiziert, jeder Flug besteht aus einem
oder mehreren Flugabschnitten (zum Beispiel der Flug OZ 771 von Wien nach
Seoul führt von Wien nach Göteborg und von Göteborg nach Seoul)
• Jeder Flugabschnitt hat vorgesehene Abflugs- und Ankunftszeiten sowie Flughäfen.
• Jeder Flugabschnitt hat mehrere stattfindende Instanzen, einen je Datum jeweils
an dem der Flug tatsächlich durchgeführt wird; zum Beispiel OZ 771 Instanz 1
am 13. Juni 09:30). Grund dafür ist, dass eine Flugnummer an mehreren Tagen
vorkommen kann.
• Gebühren fallen für jeden Flug an, wobei für einen Flug mehrere Gebühren anfallen
können. Eine Gebühr wird aber individuell für jeden Flug errechnet.
• Ein Flugzeug kann mehreren Instanzen zugeordnet werden, pro Instanz kann aber
nur ein Flugzeug eingesetzt werden.
• Die tatsächlichen Zeiten für Abflug und Ankunft werden gespeichert.
• Ein Flugzeug, zum Beispiel eine Boeing 747, wird über eine ID identifiziert und hat
jeweils einen speziellen Typ (zum Beispiel Boeing). Jeder Typ weist eine maximale
Sitzanzahl auf, ebenso jedes Flugzeug.
• Lande_möglich stellt eine Relation zwischen Typ und Flughafen her, das bedeutet,
wo welcher Flugzeugtyp landen kann.
• Ein Flughafen wird mit einer ID identifiziert, zusätzlich wird noch der Ort und der
Ländercode gespeichert..
1
SQL
Normalisierung
Juni 2012
E2A
2. Ein Laden für Computerzubehör will seine Daten in einer SQL-Datenbank verwalten.
• Die Firma hat mehrere Filialen, sowohl physische, die als Läden in einem Ort
angesiedelt sind, als auch virtuelle - nämlich einen Onlineshop.
• Jede Filiale verkauft Artikel, jeder Artikel muss eindeutig identifiziert werden und
weist einen Preis sowie eine Beschreibung auf.
• Die Firma hat Kunden zugeordnet, wobei ein Kunde mit der gleichen ID bei allen
Filialen einkaufen kann..
• Ein Kunde kann Bestellungen durchführen, wobei eine Bestellung immer nur einem
Kunden zugeordnet ist.
• Auf einer Bestellung ist vermerkt,
– durch welchen Versand (Post, DHL, GLS, Selbstabholung, . . . ) sie verschickt
wurde
– welcher Kunde
– wann
– welchen Artikel in welcher Menge
bestellt hat. Jede Bestellung braucht eine eindeutige Nummer.
• Zusätzlich speichert die Firma am Tagesende Umsatzdaten pro Filiale (wie viel von
einem Artikel zu welchem Gesamtwert in einer Filiale an einem bestimmten Tag
verkauft wurde)
3. Es soll eine Datenbank eines Versandes für Drachen, Windspiele und Zubehör erstellt
werden.
Dazu werden folgende Informationen gespeichert.
• Zu jedem Produkt werden folgende Eigenschaften gespeichert: die eindeutige Produktnummer, Bezeichnung, Bestand (Menge auf Lager) und Preis.
• Ein Hersteller trägt einen Namen, eine eindeutige Nummer und weist eine Adresse
auf.
• Drachen sind spezielle Produkte, die zusätzlich durch spezielles Material, Spannweite, Anzahl der Leinen, Einsatzzweck (Trickflug, Leichtflug, Fun) und Eignung
(Anfänger, Fortgeschrittene, Profis) gekennzeichnet sind.
• Windspiele sind spezielle Produkte mit einer zusätzlichen Eigenschaft (wie Windrad, Windsack).
• Kunden haben eine eindeutige Kundennummer, einen Namen und eine Wohnadresse.
• Eine Bestellung umfasst Produkte mit einer Stückzahl, die an einen bestimmten
Kunden geliefert werden.
• Der Versand legt die Art der Zustellung fest (Name und Adresse des Transportunternehmens).
Die Beziehungen zueinander sehen wie folgend aus:
2
SQL
Normalisierung
Juni 2012
E2A
• Ein Hersteller produziert eines oder mehrere Produkte. Ein Produkt wird aber
nur von einem Hersteller erzeugt.
• Alle Produkte haben die gleichen Eigenschaften, nur Windspiele und Drachen
weisen zusätzliche Eigenschaften auf (siehe oben).
• Eine Bestellung ist genau einem Kunden zugeordnet, ein Kunde kann aber öfters
bestellen. Eine Bestellung wird weiters durch genau einen Spediteur (Versand)
versendet. Klarerweise kann eine Spedition mehrere Bestellungen ausliefern.
• Eine Bestellung trägt mindestens einen Artikel, ein Artikel ist aber eventuell auf
mehreren Bestellungen vorhanden.
4. Universitäts-Verwaltung: Es werden Daten über Professoren, Studenten und Vorlesungen gespeichert. Die Beziehungen sind folgende.
• Ein Student kann mehrere Module belegen, ein Modul jedoch nur einmal. Es kann
sich aber auch um einen Bummelstudenten handeln, der keine Module belegt.
• Ein Student hat eine eindeutige Nummer (MatrikelNr), einen Namen, eine eindeutige E-Mail-Adresse und ein Geburtsjahr.
• Ein Professor wird durch eine eindeutige Nummer (ProfNr) gekennzeichnet. Zusätzlich wird dem Professor neben seinem Namen ein Gehalt zugewiesen.
• Ein Modul hat eine eindeutige Nummer (ModulNr) und einen nicht unbedingt eindeutigen Namen. Es kann zum Beispiel ein Modul namens »Informatik« geben, das
jedoch unterschiedliche Nummern aufweist – weil es vielleicht in unterschiedlichen
Semestern angeboten wird.
• Die Note besagt, welches Ergebnis ein Student bei einer bestimmten Prüfung (Modul) erzielt hat, pro Modul und Student gibt es nur eine Note (nur eine Prüfung).
• Ein Modul wird von 0 oder mehreren Studenten belegt.
• Ein Professor kann mehrere Module lesen (muss aber nicht), ein Modul wird nur
von einem Professor gelesen. Es kann aber auch sein, dass zu einem Modul noch
kein Professor eingetragen ist.
MatNr
Name
E-Mail
GebJahr
ModulNr
Note
ProfNr
Prof
Gehalt
2000
Schneider
[email protected]
1976
20
PHP
3
200
Hase
3300
2000
Schneider
[email protected]
1976
30
Internet
4
300
Fuchs
4100
3000
Müller
mü[email protected]
1967
30
Internet
5
300
Fuchs
4100
1000
Fiedler
[email protected]
1966
10
SQL
1
100
Specht
2500
1000
Fiedler
[email protected]
1966
20
PHP
2
200
Hase
3300
1000
Fiedler
[email protected]
1966
40
Recht
4
200
Hase
3300
400
Bär
9000
4000
Gruber
[email protected]
Modul
1980
50
Java
Tabelle 1: Uni-Verwaltung
3
Herunterladen