Aus dem Kurs: Tabellendesign für relationale Datenbanken

Aufgabenstellung: Beispieldatenbank zur Bereitstellung und Buchung von Yachten

Aus dem Kurs: Tabellendesign für relationale Datenbanken

Aufgabenstellung: Beispieldatenbank zur Bereitstellung und Buchung von Yachten

Damit sind wir bei dem letzten Beispiel der großen Datenbank, die sich mit Boot und Float, also mit dem Chartern von Booten, beschäftigt, wobei man dazusagen muss, groß ist relativ, sie hat knappe 20 Tabellen, das ist nicht wirklich groß. Wenn Sie mit Datenbanken arbeiten, werden Sie feststellen, dass so kleine Nachschlagetabellen dauernd benötigt werden, da kommen Sie locker auf 20, ohne noch besondere Anforderungen zu haben. Aber gucken wir uns mal diese Anforderungen an, also erst mal in der allgemeinen Variante. Die Grundidee ist, es gibt Boote, die gechartert werden können, und zwar über eine Firma, die das Ganze verwaltet, also die Bootseigner bieten ihre Boote an und Kund:innen können diese Boote chartern. Und damit das nicht jeder selbst machen muss oder gar vor Ort die entsprechende Pflege und Reparatur übernehmen muss, gibt es eine Charterfirma, die diese ganze Verwaltung, Ausgaben und Pflege der Boote übernimmt. Etwas detaillierter bedeutet das: Ich muss Termine für das Chartern der Boote genauso speichern können wie beispielsweise Reparaturen, das muss ja von irgendwem bezahlt werden, oder die zusätzliche Ausstattung der Boote, wenn jemand noch mehr mieten will, als in der Normalausstattung dabei wäre. Und es gibt Saisonpreise und diese Kosten für zusätzliche Ausstattungen muss ich natürlich auch berücksichtigen. Daraufhin stellen sich weitere Fragen, nämlich: Haben alle Boote eigentlich zu jeder Saison die gleichen Zeiten? Es sind ja häufig Bootstypen, die sich also im Wesentlichen im Namen und dem Besitzer unterscheiden, aber sonst identisch wären, aber jeder Eigner kann selber festlegen, zu welcher Zeit er welchen Saisonpreis nehmen will. Und was passiert, wenn Eigner:innen ihr eigenes Boot mieten wollen? Denn es ist ja bei dieser Firma verwaltet, die müssen also selber mieten sozusagen. Das können Sie, dafür wird es preiswerter, denn der Person kann die Datenbank ansehen, dass sie die Besitzerin dieses Boots ist. Eine sehr häufige Frage ist: Muss, wenn ich das Boot irgendwo gechartert habe, das Boot wieder im gleichen Hafen zurückgegeben werden? Nein, muss es nicht, es wird zur Not zurückgeholt oder vielleicht kann man es dort noch mal vermieten. Ich muss also verschiedene Häfen unterscheiden, von wo nach wo das Boot fährt. Und was ist, wenn ich einen Törn buchen möchte als Kunde, muss ich den sofort fest buchen? Nein, ich muss auch in der Datenbank unterscheiden können, dass es anfangs nur eine Option ist mit 14 Tage Frist und erst danach wird dieser Törn wieder freigegeben oder eben fest gebucht. Und gerade bei solchen Datenbanken kommen noch viele weitere Fragen dazu, zum Beispiel: Wer bucht das eigentlich? Das sind nämlich Agenturen. Und wie viele Kontakte hat diese Agentur, gibt es da genau einen Ansprechpartner? Nein, da gibt es ganz viele Kontaktangaben, Ich kann also nicht einfach zu einer Agentur eine Telefonnummer speichern, sondern, Sie ahnen es schon, eine 1:n-Tabelle, in der mehrere Personen stehen können. Und mehrere Personen ist auch die Frage, wenn ich den Törn selber buchen will: Können da z.B. so was wie Kegelgruppen gemeinsam auftreten? Das ist nicht möglich; es muss exakt eine Person hauptverantwortlich sein und das kann eben nur genau eine sein. Und entsprechend, wenn es nun einer namentlich anmeldet, was ist mit dem Rest, muss ich dann nur noch die Anzahl angeben und zum Schluss kommen alle Leute mit, die gerade Lust haben, Hauptsache die Menge stimmt? Nein, auch das nicht, das hat was mit den Häfen zu tun, die verlangen, dass sie namentlich angemeldet werden. Das bedeutet also, ich muss beim Auslaufen eine Namensliste für jedes Boot und für jeden Törn haben. Sehr unbeliebt, aber leider nicht zu vermeiden, ist die Tatsache, dass Rechnungen auch in Teilbeträgen gezahlt werden, und z.B. eine Anzahlung vorneweg oder noch irgendein Nachschlag, wenn am Boot was kaputt gegangen ist. Ich muss also in irgendeiner Form wegen solcher Sonderfälle dafür sorgen können, dass eine Rechnung in Teilbeträgen bezahlt werden kann. Das muss die Datenbank abbilden können, sodass ich prüfen kann, ob die eigentlich schon komplett bezahlt ist. Und da das ja eine größere Datenbank ist, gibt es noch mehr Fragen, zum Beispiel: Was ist mit zusätzlichen Ausstattungen der Boote? Ja, die gibt es und die Nutzer:innen erhalten jeweils eine Checkliste, dass sie also beim Auslaufen prüfen können, ob auch wirklich alles da ist. Und das kann sich auf jedem Törn unterscheiden, deswegen ist das keine Checkliste für ein Boot, sondern eine Checkliste für einen Törn von einem Boot. Rabatte gibt es tatsächlich, aber sie werden manuell vergeben, also nicht aufgrund irgendwelcher, beispielsweise, Mindestens-10-Personen-Erkenntnisse oder so was, sondern da kann man ein Feld vorsehen, wo ein Rabatt zu Fuß eingetragen wird, was immer da verhandelt worden ist. Wenn Sie mehrere Boote gleichzeitig mieten wollen, beispielsweise für größere Gruppen, wenn Sie 20 Personen haben, aber die Boote nur fünf Personen fassen, müssen Sie eben vier Boote buchen. Ja, das geht, aber formal gesehen, ist jedes Boot ein eigener Törn, das heißt, Sie müssen die nicht irgendwie in Gruppen zusammenfassen können. Das gibt im Ergebnis dann eben vier Rechnungen an die gleiche Person zum gleichen Datum, aber das ist in Ordnung so. Und viele der Boote gehören zu sogenannten Bootsklassen, das bedeutet, dass Sie eigentlich immer das gleiche Boot haben, nur mit einem anderen Namen und einem anderen Eigner. Sie können die also in Gruppen zusammenfassen und müssen nur sagen, das ist ein Boot dieser Klasse, gehört dieser Person und hat daher diese Preise. Das vereinfacht die Angaben, denn so ein Boot hat eine ganze Menge Angaben, von Länge, Breite und ähnlichen Details, die Sie sonst immer wieder neu eingeben müssen. Die Kunden und Kundinnen buchen allerdings nicht direkt, sondern es gibt sogenannte Agenturen, sodass da also ein bisschen der Vorarbeit gebündelt wird. Sie müssen also nicht da vorsehen, dass da Einzelpersonen immer wieder Anfragen machen, sondern das läuft über Agenturen bzw. entsprechend Referenzen auf eine Tabelle, wo Sie nur noch auswählen müssen, die Agentur hatte ich jetzt schon mal, und Sie müssen nicht jede Person sofort neu eintragen. Und ich kann Ihnen versprechen: Bei so einer Datenbank werden noch viel, viel mehr Fragen auftauchen, nur dass Sie schon mal ein Gefühl dafür kriegen, was man eigentlich so fragen müsste. Und dann können wir uns jetzt mal drum kümmern, wie das in Tabellen umgesetzt aussieht.

Inhalt