Aus dem Kurs: Tabellendesign für relationale Datenbanken

Aufgabenstellung: einfaches Datenmodell

Das Beispiel A mit der minimalen Datenbank steht ja dafür, in Vin & Vinaigre einen Laden zu unterstützen, der Wein und Essig verkauft. Deswegen gibt es dort Anforderungen, die meistens sehr lose formuliert sind, also so allgemeine Anforderungen, die beschreiben, was die Datenbank im Kern machen soll. Die dient zur Unterstützung für ein Geschäft, für lose abgegebenen Wein und Essig und später kommt da vielleicht auch noch Öl oder Honig dazu oder Ähnliches. Und dazu braucht es den Überblick über die Finanzen. Das ist nett aber noch zu unverbindlich. Wir müssen also, wenn ich das mal so formulieren darf, Butter bei den Fischen liefern. Die Anforderungen müssen schon ein klein bisschen detailliert werden, also, es sollen Einnahmen und Ausgaben verwaltet werden. Diese sollen vielleicht in Summen nach Monat, Quartal oder Jahr zusammengefasst werden. Dann müssen die Anzahl der verkauften Artikel wiedergegeben werden können, um beispielsweise den Lagerbestand prüfen zu können, und im Nebensatz fällt plötzlich auf, es soll auch so etwas wie ein Weihnachtsanschreiben geben für Kunden oder Kundinnen. Das bedeutet, Sie müssen zum Beispiel zu den Rechnungen auch Adressen hinterlegt haben. Deswegen müssen Sie die Ohren spitzen, was der Kunde oder die Kundin Ihnen jeweils sagt zu der Datenbank. Manche Sachen verstecken sich wirklich im Nebensatz. Und wenn Sie von den allgemeinen Anforderungen zu diesen scheinbar detaillierten gewechselt haben, sind Sie noch lange nicht fertig. Denn jetzt geht es erst mal los mit den Fragen. Während Sie sich das angucken oder vielleicht sich ein bisschen Zeit nehmen, ergeben sich neue Fragen. Zum Beispiel: Gibt es häufig Sonderangebote oder wechselnde Preise? Das kann ich so schon mit Ja beantworten, allein wegen der wechselnden Preise, denn ansonsten wäre dieser Laden gezwungen, die gesamte Zeit seines Bestehens immer die gleichen Preise zu nehmen oder dauernd die Artikelnummern zu wechseln. Also die wechselnden Preise können Sie sicher bejahen, aber wie häufig gibt es Sonderangebote? Das hat so ein bisschen etwas mit Performing zu tun, ob Sie das vielleicht anders speichern und damit die Menge an Daten ein bisschen reduzieren. Aber es gibt auch andere Fragen, zum Beispiel unterscheiden sich die Artikel minimal in Eigenschaften. Hier zum Beispiel gibt es Flaschen zum Abfüllen, 100-ml-Flaschen zum Beispiel und die können rund oder rechteckig sein. Für den Kunden ist das eine interessante Frage, der also dort einkauft und eine hübsche Flasche haben will, aber für den Lagerbestand ist es relativ egal und die unterscheiden sich weder preislich noch beim Hersteller, die haben einfach nur ein bisschen eine andere Form. Das typische Beispiel, wo es solche, ich nenne die mal Nicht-Unterschiede, gibt, ist ein Farbbuntstift. Das ist es der gleiche Stift, ob er nun rot, gelb, blau oder grün malt, für den eigentlichen Artikel macht das keinen wirklichen Unterschied. Also an dieser Stelle, wenn sich die Artikel in minimalen Eigenschaften unterscheiden und die uninteressant sind, dann wird trotz der Antwort Ja keine weitere Konsequenz erst mal folgen. Dann könnte auffallen, dass die Artikel nach Kategorien zusammengefasst werden sollen, bestimmte Öle, Nussöle getrennt von anderen Ölen zum Beispiel oder bestimmte Essigsorten oder überhaupt Essig und Öl getrennt in eigenen Kategorien. Aber das interessiert den im Laden nicht, deswegen lautet die Antwort von denjenigen, für die ich da arbeite, einfach nein. Das vereinfacht das Ganze und entsprechend auch die Frage nach den Gebindegrößen. Die würde das sehr kompliziert machen und deswegen ist es schön, wenn die Antwort lautet: Nein, es wird alles lose verkauft. Dann muss ich also nur die Einheit Milliliter haben oder Liter oder sonst was und komme damit durch. Auch jetzt bin ich immer noch nicht fertig, denn meistens ergeben sich aus diesen Fragen weitere Fragen. Also zum Beispiel: Wenn es Kategorien gibt, sind die überhaupt eindeutig? In diesem Fall wären sie, ja, eindeutig, denn es handelt sich entweder um Essig oder um einen Wein oder um ein Öl oder sonst was. Auch das muss nicht so sein. Es gibt auch Möglichkeiten, einen Artikel mehreren Kategorien zuzuordnen. Zum Beispiel könnte er sowohl zu den Lebensmitteln also auch zu den -- nennen wir es -- Kosmetika gehören. Ein Öl können Sie auf der Haut auftragen oder trinken beispielsweise. Aber in diesem Fall, wenn es Kategorien gäbe, wären sie eindeutig. Dann habe ich zwar einzelne Rechnungen, aber werden die monatlich zusammengefasst? Nein, in diesem Fall, jede Rechnung zählt einzeln. Die gehört natürlich zu einem Datum, aber ich muss sie nicht noch mal gruppieren. Wenn ich an Kunden ausliefere, gibt es dafür einen Aufschlag? Muss ich also ab einer bestimmten Menge möglicherweise diesen Aufschlag wieder weglassen, was es auch immer recht kompliziert macht. Glücklicherweise nein, lautet die Antwort und ähnlich ärgerlich, wenn man das zu spät erfährt: Werden diese Rechnungen vielleicht in Teilbeträgen bezahlt? Dann müssen Sie nämlich mitverwalten, ist die Rechnung schon komplett bezahlt? Auch das nein, was die Datenbank vereinfacht. Und schließlich, zahlen überhaupt alle mit Rechnungen oder gibt es möglicherweise Barverkäufe ohne Rechnung? Die Antwort lautet zwar ja, in so einem Laden wird typischweise auch bar bezahlt, aber für Ihre Datenbank können Sie darauf kontern sozusagen und sagen, das macht nichts, ich erfinde jetzt die fiktive Kundin namens Barzahlung und immer wenn jemand bar zahlt, wird das auf diese eine Kundin gebucht, denn die verhält sich sozusagen wie eine riesige Rechnung aller Barzahlungen. Und damit sind wir noch lange nicht fertig mit allen Fragen, aber dass Sie schon mal so ein bisschen ein Gefühl dafür kriegen, welche Fragen auf der Hand liegen, welche sich daraus ergeben und an welche man jeweils noch denken müsste.

Inhalt