Home > Artikel > Ausgabe 2/2012 > Bestellungen in Tabellen verwalten

Bestellungen in Tabellen verwalten

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Das Verwalten von Bestellungen in einer Access-Datenbank ist für Einsteiger eine echte Herausforderung. Wer Kunden, Bestellungen, Bestellpositionen und Artikel sauber pflegen möchte, braucht ein sauber normalisiertes Datenmodell – und eine Menge Hirnschmalz, damit alle Felder in den richtigen Tabellen landen. Dieser Artikel zeigt, wie Sie das Datenmodell aufbauen und welche Varianten es gibt.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank 1202_BestellungenInTabellen.mdb.

Einfacher Ansatz

Dieser Artikel soll zunächst einmal den grundsätzlichen Umgang mit Bestellungen und den dabei anfallenden Daten erläutern. Es gibt unendlich viele Varianten, auf die wir hier (noch) nicht eingehen wollen – erstmal steht das grundsätzliche Verständnis der vorgestellten Konstellation auf dem Plan.

Artikel verwalten

Die erste Tabelle des in diesem Artikel beschriebenen Datenmodells soll die Artikeldaten speichern. Ob es sich bei diesen Artikeln um Produkte oder Dienstleistungen handelt, spielt keine Rolle – Tatsache ist, dass Sie diese möglichst vielen Kunden über eine oder mehrere Bestellungen zuordnen möchten.

Welche Informationen speichert man also zu einem Artikel? Das Sie ohne einen Primärschlüssel nicht auskommen, ist klar: Er ist das eindeutige Merkmal einer jeden Tabelle, über das Sie die Datensätze dieser Tabelle anderen Tabellen über ein Fremdschlüsselfeld zuordnen können. Dieses Feld soll in unserem Fall ArtikelID heißen und als Autowertfeld ausgelegt werden. Dieses Feld legen Sie gleich nach dem Erstellen einer neuen Tabelle namens tblArtikel an.

Das zweite wichtige Merkmal eines Artikels ist der Artikelname. Ein Feld namens Artikelname mit dem Datentyp Text und der Feldlänge 255 speichert die Bezeichnungen der Artikel.

Jeder Artikel hat natürlich einen Preis. Diesen legen wir in einem Währungsfeld namens Einzelpreis fest. Schließlich kann es verschiedene Mehrwertsteuersätze geben, die in einem weiteren Feld namens Mehrwertsteuersatz landen sollen. Dieses Feld erhält ebenfalls den Datentyp Währung – dadurch erhalten Sie die notwendige Genauigkeit für spätere Berechnungen der Brutto- und Netto-Rechnungsbeträge (siehe Bild 1).

Entwurf der Tabelle tblArtikel

Bild 1: Entwurf der Tabelle tblArtikel

Der Mehrwertsteuersatz soll allerdings nicht mit dem Währungszeichen versehen werden, sondern als Prozentzahl angezeigt werden. Dazu stellen Sie die Eigenschaft Format des Feldes in der Entwurfsansicht der Tabelle auf den Wert Prozentzahl ein.

Wenn Sie tatsächlich nur Bestellungen verwalten möchten, was hier der Fall ist, reichen diese Felder bereits aus. Varianten, die weitere Informationen erfordern, besprechen wir in weiteren Artikeln. Dort geht es etwa um Artikelbestände, Nachbestellungen, Artikelkategorien und Lieferanten.

Kunden verwalten

Zu einer Bestellung gehört selbstverständlich ein Kunde. Diesen wollen wir auf die einfachste Art und Weise anlegen, und zwar mit einer einzigen Anschrift statt mit mehreren Varianten wie Liefer- oder Rechnungsanschrift. Diese Tabelle heißt tblKunde und enthält die folgenden Felder:

  • KundeID: Primärschlüsselfeld der Tabelle
  • Firma: Firma des Kunden
  • AnredeID: Fremdschlüsselfeld zur Auswahl eines der Datensätze der Tabelle tblAnreden
  • Vorname: Vorname des Kunden
  • Nachname: Nachname des Kunden
  • Bezeichnung: Eindeutige Bezeichnung, die je nach den vorhandenen Daten aus Firmenname, Vorname, Nachname, Anrede oder Kundennummer zusammengesetzt werden kann.
  • Strasse: Straße des Kunden
  • PLZ: PLZ des Kunden
  • Ort: Ort des Kunden
  • Land: Land des Kunden
  • EMail: E-Mail-Adresse des Kunden
  • Telefon: Telefonnummer des Kunden
  • Telefax: Telefaxnummer des Kunden
  • Mobil: Handynummer des Kunden

Um das Datenmodell bezüglich der Kunden zu komplettieren, hängen wir noch die Tabelle tblAnreden an, welche die Daten für das Feld AnredeID liefert. Zusammen sehen diese beiden Tabellen dann wie in Bild 2 aus.

Die beiden Tabellen tblKunden und tblAnreden enthalten die Kundendaten.

Bild 2: Die beiden Tabellen tblKunden und tblAnreden enthalten die Kundendaten.

Eine Erweiterung dieser Kundentabelle könnte aus Feldern für eine zweite Adresse bestehen, die dann entweder als abweichende Liefer- oder Rechnungsadresse dient. Der Einfachheit halber gehen wie in diesem Artikel jedoch davon aus, dass die Kunden nur eine Anschrift als Liefer- und Rechnungsadresse verwenden.

Bestellungen verwalten

Welche Daten müssen Sie überhaupt speichern, um eine Bestellung aufzunehmen? Gibt es überhaupt je Bestellung einen Datensatz oder müssen wir sogar mehrere Datensätze pro Bestellung anlegen, um auch die einzelnen Artikel pro Bestellung zu erfassen? Wir müssen beides berücksichtigen: Natürlich gibt es pro Bestellung Daten, die nur einmal erfasst werden müssen, da diese für alle Artikel der Bestellung gleich sind – zum Beispiel der Kunde oder das Bestelldatum. Zu einer Bestellung gehören aber oft auch mehr als ein Artikel – auf diesen Punkt kommen wir später zu sprechen. Als erstes legen wir eine Tabelle an, mit der Sie die Basisdaten einer jeden Bestellung erfassen.

Als Erstes benötigen Sie ein Primärschlüsselfeld, dass jede Bestellung eindeutig identifiziert. Danach legen Sie fest, welcher Kunde die Bestellung aufgibt. Dies erledigen Sie, indem Sie ein Fremdschlüsselfeld namens KundeID einrichten und dieses mit den Datensätzen der Tabelle tblKunden verknüpfen.

Wann wurde die Bestellung aufgegeben? Diese Frage beantworten wir in einem Datumsfeld namens Bestelldatum. Mehr benötigen wir zunächst nicht: Wir gehen zunächst davon aus, dass Sie die Bestellungen allein erfassen beziehungsweise dass die Anwendung nicht von verschiedenen Mitarbeitern verwendet wird. Daher pflegen wir keine Mitarbeiter-Tabelle in das Datenmodell ein.

Eine Erweiterung der Tabelle tblBestellungen wären Felder, mit denen Sie die für die Bestellung zu verwendende Adresse des Kunden speichern. Immerhin kann sich die Adresse des Kunden im Laufe der Zeit ändern. Wenn Sie die Lieferadresse zusätzlich in der Bestellungen-Tabelle speichern, können Sie später nachvollziehen, wohin eine Bestellung gesendet wurde.

Artikel einer Bestellung

Wie sollen Sie die bestellten Artikel erfassen, wenn Sie pro Bestellung nur einen einzigen Datensatz in die Artikeltabelle eintragen? Grundsätzlich soll eine Bestellung ja jeden der in der Tabelle tblArtikel gespeicherten Artikel enthalten können. Soll die Tabelle tblBestellungen vielleicht ein Feld enthalten, in das wir die Artikelnummern aller Artikel der Bestellung eintragen? Oder fügen wir der Tabelle tblArtikel ein Fremdschlüsselfeld namens BestellungID hinzu, um jeden Artikel einer Bestellung zuweisen zu können? Beides funktioniert nicht: Das Eintragen der Artikelnummern einer Bestellung in ein Feld der Tabelle tblBestellungen ist zwar grundsätzlich möglich – aber Sie müssen ja zu jedem Artikel auch noch die bestellte Anzahl und weitere Informationen wie den aktuellen Preis, den Mehrwertsteuersatz oder einen Rabatt angeben können. Die Variante, dem Artikel die Bestellung zuzuweisen, fällt logischerweise auch weg: Sie könnten dann ja jeden Artikel nur einer Bestellung gleichzeitig zuweisen.

Eines scheint also klar zu sein: Wir brauchen Unterstützung, um einer Bestellung die Artikel zuweisen zu können. Und die erhalten wir von einer Hilfstabelle namens tblBestellpositionen, welche die Artikel den Bestellungen zuweist – und dabei eine m:n-Beziehung zwischen den Tabellen tblBestellungen und tblArtikel herstellt.

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!