Situationsbeschreibung KAPV (Kunden-Auftrag-Produkt-Verwaltung)

Ein Unternehmen handelt mit verschiedenen Produkten. Die Verwaltung der Kunden, der Aufträge und der Produkte soll als Client-Server-Datenbank-Applikation realisiert werden. Von den Kunden werden Stammdaten wie Kundennummer, Name, Vorname, Geburtsdatum, Geschlecht, Adressdaten wie PLZ, Ort, Straße und Hausnummer, Staat gehalten und müssen immer aktuell sein. Dabei kann ein Kunde mehrere Adressen haben.

Zu jedem Kunden wird ein firmenspezifisches Profil unterhalten, das aus mehreren Angaben besteht: bisheriges Auftragsvolumen (aufsummiert), Zahlungsbilanz mit den Werten ‘+’ oder ‘-‘ und Zahlungsverhalten, Vorlieben, dokumentiert in Produktkategorien, Frequenz der Bestellungen. Das Zahlungsverhalten hat die Werte: -1, falls noch Beträge ausstehen, 0, falls mehr als 10 Mahnungen pro Jahr ausgestellt wurden, 1 sonst.
Produktkategorien sind: Textilien, Handwerksbedarf, Sport (kann erweitert werden). Die Frequenz der Bestellungen ist die Aufstellung Anzahl_Aufträge pro Jahr. Kunden müssen gegebenenfalls angeschrieben werden. Bestellungen von Kunden werden nur schriftlich akzeptiert.

Zu jeder Kundenbestellung wird ein Auftrag angelegt, bestehend aus einer Auftragsnummer, der Kundennummer, Auftragsdatum, Auftragsbetrag und Auftragsstatus. Der Auftragsstatus hat die Werte ‘in Arbeit’, ‘ausgeliefert’, ‘bezahlt’. Zu jedem Auftrag gehört eine Liste (Positionen) der bestellten Produkte.
Diese Liste beinhaltet die Informationen Auftragsnummer, Produktnummer, bestellte Stückzahl, Preis pro Stück, Betrag . Der Positionenbetrag berechnet sich aus der Stückzahl mal Preis; der Auftragsbetrag berechnet sich aus der Summe aller Positionenbeträge zu dieser Auftragsnummer. Zu jedem Kunden wird ein sogenanntes Kundenkonto gehalten. Darin sind alle Auftragsbeträge mit Bestelldatum und alle eingegangenen Zahlungen zu diesen Aufträgen mit Datum eingetragen.

Weiterhin sind pro Auftrag die Anzahl von Mahnungen festgehalten. Mahnungenwerden 21 Tage nach Rechnungsdatum ausgestellt. Die Liste der bestellten Produkte wird mit dem Produktlager verglichen: ist das Produkt in ausreichender Stückzahl vorhanden, wird diese Position in die Auftrags-Bestell-Liste (Positionen) aufgenommen. Sind nicht genügend viele Produkte vorhanden, wird dies auf der Rechnung vermerkt. Ist die Bestelliste abgearbeitet und die Positionsliste komplett, wird das Lager angewiesen, die Produkte zu verpacken. Es wird eine Rechnung ausgestellt und zusammen mit dem Produktpaket verschickt. Eine Rechnung bezieht sich immer auf einen Auftrag und einen Kunden und besteht aus Rechnungsdatum, Rechnungsbetrag und Rechnungsbemerkung. Der Status des Auftrags wird geändert in ‘ausgeliefert’. Nach Eingang der Zahlung ändert sich der Status in ‘bezahlt’.

Das Produktlager besteht aus den folgenden Informationen: Produktnummer, Bezeichnung, Produktionsdatum, Material, Größe, Stückzahl_auf_Lager, Preis. Nach jeder Auftragsauslieferung muß die Lager-Stückzahl entsprechend verringert werden. Die Liste der Produkte wird immer wieder aktualisiert. Später soll diese KAPV erweitert werden um ein Lieferantenmodul, das die Verwaltung der Produkte mit ihren Lieferanten realisiert.

In dem untenstehenden PDFDokument ist die Datenbank noch einmal übersichtlich als Relationenmodell dargestellt. Hier noch einmal eine Übersicht über die Tabellen die Spaltennamen und die Datentypen:
  • Tabelle ADRESSEN (ADRESS_ID[number], POSTLEITZAHL[number], ORT[varchar2], STRASSE[varchar2], HAUSNUMMER[varchar2], STAAT[varchar2])
  • Tabelle AUFTRAG (AUFTRAGSNUMMER[char 10], AUFTRAGSSTATUS[varchar2], AUFTRAGSDATUM[date], KUNDENNUMMER[char 8])
  • Tabelle AUFTRAG_HAT_POSTIONEN (PRODUKTNUMMER[char 8], STUECKZAHL[number], AUFTRAGSNUMMER[char 10])
  • Tabelle PRODUKTLAGER (PRODUKTNUMMER[number], STUECKZAHL[number], PREIS[number], BEZEICHNUNG[varchar2], PRODUKTIONSDATUM[date], MATERIAL[varchar2], GROESSE[varchar2])
  • Tabelle AUFTRAG (AUFTRAGSNUMMER[char 10], AUFTRAGSSTATUS[varchar2], AUFTRAGSDATUM[date], KUNDENNUMMER[char 8])
  • Tabelle KUNDE_HAT_ADRESSE (ADRESS_ID[number], KUNDENNUMMER[char 8]
  • Tabelle KUNDE_HAT_VORLIEBEN (KUNDENPROFIL_ID[number], VORLIEBEN_ID[number], ANZAHL[number]
  • Tabelle KUNDEN (KUNDENNUMMER[char 8], NAME[varchar2], VORNAME[varchar2], GEBURTSDATUM[date], GESCHLECHT[char 1])
  • Tabelle KUNDE_PROFIL (KUNDENPROFIL_ID[number], KUNDENNUMMER[char 8], AUFTRAGSVOLUMEN[number 10], ZAHLUNGSBILANZ [char 1], ZAHLUNGSVERHALTEN[number]
  • Tabelle ZU_VORLIEBEN_GEHOEREN_PRODUKTE (PRODUKTNUMMER[char 8], VORLIEBEN_ID[number]
  • Tabelle VORLIEBEN (VORLIEBEN_KATEGORIE[varchar2], VORLIEBEN_ID[number])
  • Tabelle RECHNUNGSDATEN (RECHNUNGSNUMMER[char], RECHNUNGSBEMERKUNG[varchar2], AUFTRAGSNUMMER[char 10], ANZAHL_VON_MAHNUNGEN[char 1], RECHNUNGSDATUM[date], EINGEGANGENE_ZAHLUNGEN[number], ZAHLUNGSDATUM[date])
DATENBANKSCHEMA (Klick zum Anzeigen der PDF-Datei):