Begleitmaterial zum Unterricht M104 «Modellierung»

Tabellen normalisieren und Formulare erstellen

1. Motivation zum Thema - Das «Negativbeispiel einer Tabelle/Datenbestand»

Sehr häufig haben Systeme, die aus einer Anforderung heraus gewachsen sind und nicht konzeptionell entwickelt wurden, eine vergleichbare Struktur wie diese Tabelle:

Was kann schief gehen, wenn…

  • … sie die Adresse von Gustav Meier-Senn auf «Im Tobel 18» korrigieren
  • … Walter Morani aus La Cure per heutigem Datum eine neue Rechnung bekommt, weil er die Artikel 4, 6, 2 und 9 gekauft hat
  • … Ida Kuhler alle Artikel der Rechnung Nr. 002 zurückgegeben hat
  • … Walter Morani den Artikel Nummer 9 von der Rechnung Nummer 009 zurückgibt

Notieren sie mögliche Fehlerquellen im Datenbestand, die bei diesen Änderungen entstehen können.

2. Theorie zu Modellierung erarbeiten

Lernziele:

  • Sie können eine Tabelle so zerlegen, dass das Resultat der 3. Normalform genügt
  • Sie können in OpenOffice Base Tabellen erzeugen und in Beziehung zueinander setzten
  • Sie können in OpenOffice Base Abfragen erzeugen
  • Sie kennen die wichtigsten Formularelemente in OpenOfficeBase und können sie anwenden

Erarbeiten sie die Theorie zu folgenden Themen:

  • Primärschlüssel und Fremdschlüssel
  • Normalisierungsprozess (1,2 und 3 Normalform
  • Abfragen und Formulare erstellen

und erstellen sie eine Zusammenfassung. (Sie finden z.B. auf dieser Webseite die entsprechenden Fachbeiträge)

3. Aufgaben zu Modellierung

3.1 Das «Negativbeispiel einer Tabelle/Datenbestand» verbessern

Teilen Sie die Tabelle aus «Negativbeispiel einer Tabelle/Datenbestand» (siehe 1. Motivation zum Thema - Das «Negativbeispiel einer Tabelle/Datenbestand») so auf, dass keine redundanten Daten mehr abgespeichert sind. Zeichnen sie für ihre Lösung das entsprechende ERD auf und erstellen sie eine Tabellenbeschreibung. Das Excel-Sheet «Negativbeispiel.xlsx» können sie hier herunterladen.

3.2 Autohandel

Ein Autohändler hat seine Verkäufe bisher in einer Excel-Tabelle erfasst. Führen sie in dieser Tabelle eine Normalisierung durch und erstellen sie das ERD und die Tabellenbeschreibung. Das Excel-Sheet «Autohandel.xlsx» können sie hier herunterladen.

(Beachten sie, dass der Opel Manta noch unverkauft im Showroom des Autohändlers steht und der Verkäufer Schenk bisher noch kein Auto verkauft hat. Auch ist nicht klar, ob es sich bei den Verkäufern Schmid und bei den Kunden Meier und Steffen um ein und dieselben Personen handelt)

3.3 Reisebüro

Führen sie in dieser Tabelle eine Normalisierung durch und erstellen sie das ERD und die Tabellenbeschreibung. Beachten sie, dass es möglich ist, Hinflüge ohne Rückflüge zu buchen. Ein Hin- bzw. Rückflug kann sich aus mehreren Teilflügen zusammensetzen. Das Excel-Sheet «Reisebuero.xlsx» können sie hier herunterladen.

(Es sollen später auch noch spezifische Daten zu den einzelnen Flügen verwaltet werden können, wie z.B. Flugzeugtyp, maximale Passagieranzahl etc.)

3.4 Schulbibliothek

Eine Schulbibliothek hat den Wunsch, alle Bücher über eine Datenbank zu verwalten. Dabei interessiert folgendes:

  • Vom Kunden, das ist die Person, die Bücher ausleiht, seinen Name, Vorname, Adresse, PLZ, und Wohnort
  • Bei den Büchern der/die Buchautor(en), Buchtitel, Genre (Themen), ISBN-Nummer, Jahrgang und den Bücherstandort
  • Von den ausgeliehenen Bücher das Ausleihdatum, Rückgabedatum und die Leihgebühr

Jedes Buch wird einem «Genre» (Buchgattung, Thema) zugeordnet, wobei auch Genres erfasst werden können, von welchen noch keine entsprechenden Bücher vorhanden sind. Ein Autor kann mehrere Bücher schreiben, ein Buch aber auch mehrere Autoren haben. Jeder Kunde wird beim Ausleihen und der Rückgabe im System mutiert. Es können vom gleichen Titel mehrere Bücher vorhanden sein.

Auftrag: Entwerfen sie eine geeignete Datenbasis. Zeichnen sie das entsprechende ERD und erstellen sie die Tabellenbeschreibungen. Es dürfen übrigens zu keinem Zeitpunkt Mehrfacheinträge oder Nullwerte vorkommen.

3.5 Abfragen und Formulare erstellen

(Voraussetzung: Sie haben sich mit der Erstellung von Formularen in OpenOfficeBase etwas vertraut gemacht)

Sowohl in Microsoft's Access als auch in OpenOffice Base finden sich:

  • Formulare entsprechen den Benutzermasken und beziehen sich auf eine Tabelle
  • Abfragen dienen als Basis für den Reportgenerator und erzeugen SQL-Code, den man übrigens auch einsehen kann
  • Berichte ist der eigentliche Reportgenerator, der formatierte Listen erstellen kann

Auftrag-A: In der Datenbank Autobesitzer1 (AutobesitzerA.odb hier herunterladen) werden in der einen Tabelle Automarken und in der anderen Personen und deren bevorzugte Automarke verwaltet. Es handelt sich hierbei um eine c-mc Beziehung. Probieren sie zuerst die Datenbank aus, indem sie Datensätze mutieren, löschen oder ergänzen. Begutachten sie auch das Resultat der Abfrage. Analysieren sie anschliessend die Tabellen, die Abfrage und das Formular.

  • Untersuchen sie die Abfrage A_Person, indem sie mit Rechtsklick unter «In SQL-Ansicht bearbeiten…», der SQL-Befehl anschauen und in Bearbeiten die Designansicht
  • Öffnen sie das Formular im Entwurfsmodus und lassen sie sich in den Formulareigenschaften die Datenquelle (verwendete Tabelle) anzeigen
  • Selektieren sie mit einem Rechtsklick die Textfelder und untersuchen sie im Kontrollfeld unter Allgemein die Textformatierung und unter Daten das verknüpfte Tabellenfeld
  • Wählen sie mit einem Rechtsklick die Schaltflächen und überprüfen sie unter Allgemein die Aktion des Buttons
  • Beim Listenfeld wird es etwas komplizierter. Im Kontrollfeld unter Daten kann man beim Listeninhalt sehen, welche Daten die Basis der Liste bilden. Nämlich eine Abfrage in SQL-Form:
    «SELECT Automarke, P_Auto FROM T_Auto»
  • Im Kontrollfeld unter Daten kann man beim Datenfeld erkennen, in welches Tabellenfeld der im Listenfeld gewählte Wert hingeschrieben wird. Hier F_Auto und dies ist ja bekanntlich der Automarken-Fremdschlüssel in der Tabelle T_Person.

Auftrag-B: Dieser Auftrag ist in OpenofficeBase oder LibreOfficeBase zu erstellen. Nachdem sie die Datenbank gründlich untersucht haben, soll sie modifiziert werden. Bei der jetzigen Datenbank kann pro Person nur immer eine Automarke angegeben werden. Neu soll es der Person möglich sein, alle ihre Lieblingsautomarken zu nennen. Der Beziehungsstatus ändert sich von c-mc auf mc-mc. Modifizieren sie die Personentabelle und erstellen sie die erforderliche dritte Tabelle. Passen sie das Formular entsprechend an.

Abgabe: Erstellen sie zum Auftrag-A einen Bericht, wo sie ihre Erkenntnisse stichwortartig zusammenfassen. Den Auftrag-B geben sie als komplette Datenbank ab.

3.6 Formulare entwerfen

Entwerfen sie mit einem Zeichenprogramm ihrer Wahl die Benutzerschnittstellen bzw. die Formulare für die beiden vorangegangenen Übungen «3.3 Reisebüro» und «3.4 Schulbibliothek». Unterscheiden sie dabei die Stammdaten von den Bestands- und Bewegungsdaten und skizzieren sie benutzerfreundliche und thematisch korrekt aufgebaute Benutzerformulare. Geben sie ihre Formularentwürfe als JPG-Bild oder PDF-Datei dem Dozenten zur Durchsicht ab.

3.7 Practice creates masters

Realisieren bzw. Implementieren sie die in Aufgabe «3.6 Formulare entwerfen» erstellten Benutzerschnittstellen bzw. Formulare und Abfragen zu «Reisebüro» und «Schulbibliothek» in OpenofficeBase oder LibreOfficeBase und geben sie ihre Arbeiten als komplette Datenbankfiles dem Dozenten zur Kontrolle ab.

4. Musterlösungen

4.1 Musterlösung «Negativbeispiel einer Tabelle/Datenbestand» verbessern

4.2 Musterlösung «Autohandel»

4.3 Musterlösung «Reisebüro»

4.4 Musterlösung «Schulbibliothek»

4.5 Musterlösung «Abfragen und Formulare erstellen - Auftrag B»

Eine Musterlösung kann hier heruntergeladen werden: LSGAutomarken.odb