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