Angabe zum ersten Beispiel des Laborübungsteils aus Datenmodellierung SS09

Michael Morak, Markus Pichlmair, Katrin Seyr

dm@dbai.tuwien.ac.at




Allgemeines

In diesem Übungsteil sollten Sie den Entwurf einer kleinen Datenbank üben. Sie müssen im ersten Schritt aus den unten stehenden Texten, die einen Ausschnitt der realen Welt beschreiben, ein ER-Modell erstellen. [In Ihrer beruflichen Praxis werden Sie solche Texte gemeinsam mit dem Kunden in mehreren Gesprächen erstellen müssen.]

Nach der Erstellung des ER-Modells führen Sie dieses in ein Relationenmodell über. Das Relationenmodell stellt dann die Grundlage für die Generierung der Datenbank dar.

Bitte versuchen Sie nach Möglichkeit, die Beispiele eigenständig zu lösen, denn in der Praxis (und bei der Prüfung) sind Sie auch auf sich alleine gestellt.

Zeichnen Sie für die folgenden Angaben jeweils das ER-Diagramm in der (MIN, MAX)-Notation. Eine Unterstützung bei der Erstellung von ER- Diagrammen bietet das Tool dia (Verfügbar unter http://live.gnome.org/Dia Achtung: im Diagramm-Editor ER auswählen!). Bei der Umwandlung in das Relationenmodell beachten Sie bitte, dass Sie möglichst wenig Relationen verwenden. Unterstreichen Sie sämtliche Primärschlüssel, schreiben Sie die Fremdschlüssel kursiv und stellen Sie sicher, dass ein Fremdschlüssel eindeutig der passenden Relation zugeordnet werden kann.



Ein Beispiel zur Notation

Ein Institut hat einen eindeutige Nummer, einen Namen und eine Adresse. Ein Lektor identifiziert sich anhand seiner Sozialversicherungsnummer, und hat einen Namen. Er ist genau einem Institut zugeordnet, ein Institut kann keine oder mehrere Lektoren haben. Weiters gibt es Lehrveranstaltungen, wobei diese eine eindeutige Nummer haben und einen Titel. Ein Lektor kann mehrere Lehrveranstaltungen leiten, eine Lehrveranstaltung kann von mehreren Lektoren geleitet werden, hat aber mindestens einen Leiter.

ER Beispiel

Das obige ER-Diagramm wird wie folgt im Relationenmodell dargestellt:

Institut (Nr, Name, Adresse)
Lektor (SVNr, Name, Institut.Nr)
LVA (Nr, Titel)
geleitet (LVA.Nr, Lektor.SVNr)



Das Abgabegespräch

  1. Sie müssen sich über den LVAManager zu einem Abgabegespräch anmelden. Bitte machen Sie das rechtzeitig, je später Sie sich anmelden, umso eingeschränkter ist das Terminangebot.

  2. Sie müssen das erste und eines der zwei anderen untenstehenden Beispiele vollständig ausgearbeitet haben (ER-Modell, Relationenmodell und alle in den Aufgaben beschriebenen Varianten).

  3. Sie müssen rechtzeitig innerhalb der Upload-Frist Ihre Lösung über den LVAManager abgeben (in .pdf Format). Sollten Sie sich zu einem Abgabegespräch angemeldet haben, allerdings bis zum Ende der Upload-Frist keine Datei hochgeladen haben, so wird Ihre Anmeldung für das Abgabegespräch gelöscht und es ist auch keine Abgabe möglich. Beachten Sie beim Upload Ihrer Lösung die im LVAManager angezeigten Hinweise.

  4. Sie kommen im Informatiklabor (http://www.inflab.tuwien.ac.at/) mit Studentenausweis zu der von Ihnen reservierten Zeit vorbei, und absolvieren das Abgabegespräch. Grundlage ist das im LVA Manager vorhandene File.

  5. Sie haben maximal 20 Minuten für Ihre Abgabe.
  6. Sie können maximal 15 Punkte bei der Abgabe erreichen. Diese setzen sich wie folgt zusammen:
    6 Punkte:
    Zwei ER-Modelle vollständig gelöst und eines davon genau erklärt.
    5 Punkte:
    Die zwei dazugehörigen Relationenmodelle vollständig gelöst und eines davon genau erklärt.
    4 Punkte:
    Zwei Theoriefragen richtig beantwortet.
  7. Die Tutoren tragen ein Protokoll des Abgabegesprächs in den LVAManager ein und Sie ersehen ebendort, wieviele Punkte Sie bekommen haben.


Beispiel: Tankstelle

Eine Tankstellenkette möchte ihre Tankstellen in Zukunft mit Hilfe einer Datenbank verwalten. Modellieren Sie die Datenbank gemäß folgenden Informationen:

Jede Tankstelle hat eine eindeutige ID, eine Adresse, ein Eröffnungsdatum sowie die täglichen Öffnungszeiten (von, bis). Gehen Sie davon aus, dass die Tankstelle jeden Tag die gleichen Öffnungszeiten hat. Außerdem besitzt sie mehrere Zapfsäulen (maximal zwölf), die jeweils durch eine Nummer eindeutig für eine Tankstelle identifiziert werden. Des Weiteren wird für jede Zapfsäule ein Typ und der Hersteller vermerkt und ob es sich um eine Selbstbedienungs-Zapfsäule handelt oder nicht. Für jede Zapfsäule ist bekannt, welche Kraftstoffe (mindestens einer, maximal sechs) bei ihr angeboten werden. Ein Kraftstoff wird eindeutig durch seinen Namen bestimmt, weiters wird optional die Oktanzahl vermerkt.

Für den Verkauf der Kraftstoffe führt jede Tankstelle eine Liste von Tagespreisen. Ein Tagespreis wird eindeutig identifiziert durch ein Datum, den Kraftstoff, für den er gilt und durch die Tankstelle. Außerdem wird der Preis pro Liter vermerkt.

In der Datenbank werden neben den Tankstellen auch auch Waschstraßen verwaltet, die ebenfalls eine eindeutige ID besitzen, eine Adresse haben, sowie tägliche Öffnungszeiten (von, bis). Gehen Sie davon aus, dass die Waschstraße jeden Tag die gleichen Öffnungszeiten hat. Außerdem sind zu jeder Waschstraße das Baujahr und die maximal zulässige Autolänge gespeichert. Jede Waschstraße bietet eine Reihe von Waschprogrammen an. Diese besitzen einen eindeutigen Namen, sowie eine Dauer und einen Preis.

Kunden können nun sowohl zum Tanken als auch zum Autowaschen zu einer tankstelle bzw. Waschstraße kommen. Ein Kraftstoff-Kauf wird eindeutig identifiziert durch eine ID, und es wird vermerkt, an welcher Zapfsäule getankt wurde und welcher Kraftstoff zu welchem Tagespreis gekauft wurde. Außerdem wird noch der genaue Zeitpunkt des Kaufs gespeichert und wie viele Liter Kraftstoff abgegeben wurden.

Ein Kauf eines Waschprogramms besitzt ebenfalls eine eindeutige ID und den genauen Zeitpunkt des Kaufs. Es ist ebenfalls bekannt, welches Waschprogramm gekauft wurde und bei welcher Waschstraße es in Anspruch genommen wurde.


Beispiel: Bank

Die Managerin einer neu gegründeten Bank beauftragt Sie mit der Erstellung eines Datenmodells. Ihnen liegt folgender Ausschnitt aus der Besprechung mit der Managerin vor:

``In meiner Bank gibt es mehrere Filialen, von denen ich das Eröffnungsdatum, Telefonnummer und die Adresse wissen will. Jede Filiale hat eine Bankleitzahl, einen Filialleiter und mehrere andere Mitarbeiter, von denen die üblichen Daten inklusive Sozialversicherungsnummer gespeichert werden sollen. Mitarbeiter sind immer einem anderen Mitarbeiter unterstellt, Ausnahme bin nur ich selbst, ich habe keinen Vorgesetzten.

Des Weiteren müssen alle Kunden in der Datenbank gespeichert werden. Kunden können entweder Personen oder Firmen sein. Neben dem Namen muss ich hier unbedingt die Rechnungsadresse kennen. Auch eine Telefonnummer und ggf. das Geburtsdatum sind nötig, sowie bei Firmen die Ansprechperson.

Kunden können in einer Filiale entweder Giro- oder Sparkonten eröffnen. Diese bekommen dann eine neue Kontonummer und werden ab diesem Zeitpunkt von einem Mitarbeiter der Filiale betreut. Für jedes Konto gibt es einen Habens- und Sollzinssatz. Außerdem möchte ich sofort erkennen, wie hoch der Guthabensstand eines Kontos ist. Für Girokonten verlangen wir eine Kontoführungsgebühr.

Auf den Konten können nun Buchungen durchgeführt werden. Hier ist wichtig, dass zwischen Auftragsdatum und Buchungsdatum - das ist der zweite Werktag nach dem Auftragsdatum - unterschieden wird. Auch muss natürlich der Betrag der Buchung sofort ersichtlich sein. Es gibt verschiedene Arten von Buchungen: Überweisungen, bei denen der Betrag von einem Konto auf ein anderes überwiesen wird - entweder innerhalb unserer Bank oder zu einer anderen Bank. Wird an eine andere Bank überwiesen, so verlangen wir eine Bearbeitungsgebühr. Weiters gibt es Bareinzahlungen und Barbehebungen, die entweder am Bankschalter oder am Bankomat durchgeführt werden. Und schlussendlich gibt es noch die Zinsbuchungen, bei denen die Habenszinsen gutgeschrieben bzw. die Sollzinsen abgebucht werden. Wichtig ist, dass für Sparkonten nur Buchungen mit positivem Betrag bzw. Barbehebungen erlaubt sind. Es darf nie mehr behoben werden, als am Konto verfügbar ist.

Zusätzlich zu den Buchungen sollen Kunden auch Daueraufträge anlegen können. Diese sind im Wesentlichen gleich wie normale Überweisungen, sie treten allerdings in gewissen Intervallen immer wieder auf und enden erst zu einem bestimmten Datum.''


Beispiel: Transportunternehmen

Ein Transportunternehmer will die Abläufe in seinem Betrieb modernisieren und auf eine EDV-Lösung mit Datenbank umstellen. Hierzu wurden in einer Besprechung mit dem Geschäftsführer der Aufbau und die Organisation des Unternehmens besprochen. Folgendes Protokoll steht Ihnen zur Verfügung:

``Ich beschäftige in meinem Betrieb derzeit rund 60 Fahrer und 6-7 andere Mitarbeiter (Planer und Verwaltungspersonal). Von diesen muss ich die Stammdaten und die Sozialversicherungsnummer speichern können. Planer sollen sich mit einen Benutzernamen und Passwort am System anmelden können. Dann muss ich auch meine Kunden abspeichern. Wichtig sind eine Telefonnummer, Bankdaten und die Rechnungsanschrift des Kunden. Kunden können dann noch mehrere Adressen besitzen, die später in den Aufträgen verwendet werden.

Neben Kunden und Mitarbeiter will ich auch meine Fahrzeuge verwalten. Ich unterscheide zwischen verschiedenen Fahrzeugtypen wie etwa Kühlwägen, Kleintransporter, Ladebühnen oder Kastenwägen. Für die Fahrzeuge möchte ich das Kennzeichen, Kilometerstand und Baujahr speichern, außerdem wie groß das maximale Ladevolumen ist, und bei Kühlwägen, wie groß die Vorlaufzeit bis zum Erreichen der Betriebstemperatur ist. Ganz wichtig ist für mich, dass ich die Fahrten meiner Lieferanten nachprüfen kann und daher möchte ich immer wissen, wo sich meine Fahrzeuge befinden. Aus diesem Grund hat jedes Fahrzeug einen GPS-Empfänger eingebaut, mittels dem für jedes Fahrzeug jede Minute die aktuelle Position gespeichert werden soll. Ich möchte auch wissen, von wann bis wann Fahrzeuge in Reparatur sind und wo - also in welcher Werkstatt - sie repariert werden.

Jedem Fahrer können Aufträge zugeteilt werden. Meist ruft dafür ein Kunde an und gibt uns bekannt, wann er ein Transportfahrzeug benötigt und wie groß das Paket ist. Aufgrund dessen weiß der Planer, welcher Fahrzeugtyp für den Auftrag mindestens benötigt wird. Ich möchte immer wissen, welcher Planer einen Auftrag erstellt hat. Außerdem muss ein Kommentar mit zusätzlichen Informationen zum Auftrag gespeichert werden können und ich muss wissen, wann der Fahrer den Auftrag beginnt und beendet. Wichtig ist auch, dass ich immer weiß, welcher Fahrer mit welchem Fahrzeug welchen Auftrag erledigt hat.

Bei einem Auftrag ist immer ein Kunde Auftraggeber und es gibt pro Auftrag zwei Adressen, die Liefer- und Abholadressen. Diese Adressen können entweder zu einem Kunden gehören oder auch nicht.''


2009-03-19