Informatikaufgabe 27

Viele Kinder gehen gerne zum Reiten. Auch meine Tochter. Beim letzten Mal kam es dabei etwas zum Chaos, da ein Pferd an zwei verschiedene Schüler bei verschiedenen Lehrern gleichzeitig vergeben war. Das schreit, im Rahmen der Möglichkeiten, nach einer Umsetzung mit Hilfe einer Datenbank.

Aufgabe

Ein Reiterhof hat zwei/mehrere Reitlehrer und zehn/mehrere Pferde. Es steht ein großer Hallenplatz, ein kleiner Hallenplatz und eine Außenanlage zur Verfügung. Eine Unterrichtsstunde ist entweder dreißig Minuten oder ein Vielfaches davon lang. Ein Schüler kann eine Unterrichtsstunde bei einem Lehrer buchen, der dann auch Pferd und Ort festlegt.

 

a) Gib alle Entitäten / Objekte an ohne auf deren Beziehung
einzugehen!
Beispiel: Pferd = {ID, Name}

b) Zeichne ein Relationendiagramm mit Angabe der
Assoziationen und deren Kardinalität (1:1, 1:n, n:m).

c) Entwirf das relationale Modell mit allen zugehörigen
Attributen, Assoziationen sowie Primär- und
Fremdschlüsseln.

Der Entwurf kann nun in einer beliebigen Datenbank versucht werden umzusetzen. Erfahrungsgemäß ist das meist recht schwer, da viel Arbeit in die Oberfläche und investiert werden muss. Und zumindest mit OpenOffice eine Umsetzung wahrscheinlich recht mühsam ist. Aber am Ende der elften kann es vielleicht als gemeinsames Projekt umgesetzt werden.

Interessant wäre auch eine Zusammenarbeit der Neunt- und Elftklässler an dieser Stelle. Oder auch noch der Zehntklässler. Die Neuntklässler machen die Datenbank (Modell), die Zehntklässler erstellen die Oberfläche (View) mit NetBeans oder dem JavaEditor und die Elftklässler programmieren die Schnittstelle (Control).

Beteilige dich an der Unterhaltung

4 Kommentare

  1. Hervorragend! Ich brauche nämlich gerade eine Aufgabe, die ich öffentlich für eine Art Videocast verwenden darf… uhm, sehe gerade, dass ich gar nicht darf. Darf ich?

    Nitpickerei: Das Pferd oben ist eher ein Entity-Typ als eine Entity. Ich weiß noch nicht, wie das die Schulbücher sehen, komme eben erst in der 9. dazu.

    1. Klar kannst du die Aufgabe verwenden.

      Das mit dem Entity-Typ und Entity ist für die Schüler ein bisschen tricky. Deswegen habe ich mich auch ein bisschen unscharf ausgedrückt. Sagen wir mal so: Entity verhält ich zu Entity-Typ wie Objekt zu Klasse. Das bringt den meisten Schülern dann doch weniger in der neunten Klasse, da ihnen die Erfahrung aus der zehnten Klasse fehlt, was das genau bedeutet. Und das Wissen aus der sechsten Klasse ist lang her und war eher unverständlich für die Schüler. Deswegen gehe ich in der sechsten Klasse da auch wenig drauf ein.

      Ansonsten ist der ganze Datenbankbereich gespickt mit Fachbegreifen, die man alle schön unterscheiden muss: Entity, Entity-Typ, Relation, Selektion, Projektion, Primärschlüssel, Fremdschlüssel, Schlüssel, 1.-3. Normalform, atomar, tranisitiv, Schema eventuell noch Entity-Relationship-Diagram, Relationen-Diagramm, Klassendiagramm und bestimmt noch ein paar mehr. Da verliert man recht schnell den Überblick und man fragt sich, ob das wirklich alles in dieser Ausprägung wichtig ist.

  2. Samma, gibt es dafür auch eine Musterlösung? Ich komme nämlich nicht so weit, wie ich möchte. Schüler, Lehrer, Ort, Pferd sind einfach. (Ich gehe außerdem auch davon aus, dass pro Ort zu jedem Zeitpunkt nur eine Lehrer-Schüler-Pferd-Kombination möglich ist, oder teilt man sich die Halle? Dazu kenne ich mich zu wenig bei Reiterhöfen aus.)
    Aber beim Einsatz wird es schwierig. Machen kann ich eine Relation Buchung = {Stunden-ID, Ort, Schüler-ID, Lehrer-ID, Pferd-ID}. Dann sind wenigstens die Räume kontrolliert – zu einem gegebenen Zeitpunkt kann ein Ort nur einmal belegt sein. Allerdings kann ich in diesem Fall zur gleichen Zeit dasselbe Pferd an zwei Orten einsetzen (und denselben Lehrer und Schüler ebenso).
    Nehme ich stattdessen Lehrer und Zeit als Schlüssel, können Ort, Pferd und Schüler mehrfach gebucht werden, nehme ich Lehrer+Zeit+Schüler, kann der Leher mehrfach zu einem Zeitpunkt gebucht werden.

    Zefix.

    Klar kann man sagen, man entscheidet sich für eine dieser Lösungen, und der eintragende Reitlehrer passt halt ein bisschen auf bei der Eintragung. Aber gibt es eine halbwegs einfache Möglichkeit, alle Arten von Doppelbuchung zu verhindern, auf die ich einfach nicht komme, oder wird das dann tatsächlich schwierig?

    1. Jetzt hast du mich kalt erwischt. Keine Ahnung wie man die Aufgabe lösen kann, aber irgendwie muss man sie lösen können. Es war halt wirklich eine Aufgabe aus meinem Leben, daher kann ich dir auch keine Musterlösung. Aber mal schauen…..(Ich denke jetzt beim Schreiben)

      Zunächst die Entitiies – immer hinten dran der Gedanke:

      1.) Pferd = {ID, Name} – Jedes Pferd hat einen Namen, andere Eigenschaften wie Futter etc. sind möglich
      2.) Schüler = {ID, Name} – Jeder Schüler hat wenigestens einen Namen, eventuell kann man noch die Bezahlart (bar, Überweisung) aufnehmen
      3.) Ort = {ID, Name} – Bei uns gibt es zwei Hallen, einen Platz und Ausreiten könnte auch auch ein Ort sein.
      4.) Zeit = {ID, Von, Bis} – Die Zeiten sind mehr oder weniger fest: 11.00-11.30, 11.30-12.00,….eventuell mit Preis
      5.) Lehrer = {ID, Name} – alle Lehrer

      Jetzt der Zusammenhang:

      6.) reitet_auf = {ID, PferdID, SchülerID}
      7.) belegt = {ID, LehrerID, OrtID, ZeitID} – braucht man vielleicht nicht

      8.) Buchung = {belegtID, reitet_aufID, Art, Preis} – bei Art ist Longe, Dressur, Springen, etc

      Es können mehrere Pferde mit Reitern an einem Ort sein (Gruppenunterricht), es ist nur ein Lehrer pro Ort.
      Mmmmmhhhh…Jetzt kann ich trotzdem den Lehrer mehrfach vergeben und den Schüler ….. und das Pferd…..

      Vielleicht sollte man an der Stelle das MVC-Modell ansprechen. So würde ich das lösen: Ich habe eine Eingabemaske (View),
      eine Datenbank, die die Daten speichert (Modell) und ein paar Routinen, die die Eingaben prüfen (Control). Das wär
      dann auch die Motivation für die nächste Klasse und warum man Java oä. lernen muss.

      Soweit also meine Gedanken. Man kann die Aufgabe aber vielleicht einfach noch weiter einschränken, um sie für Schüler handhabbarer zu machen. Aber so ist es vielleicht auch mal interessant.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Durch die weitere Nutzung der Seite (Scrollen, Navigieren) stimmen Sie der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen