Registriert seit: 8. Dez 2005
Ort: Hohenkammer
298 Beiträge
Delphi 2006 Professional
|
Allgemeine Frage zum Aufbau einer Datenbank
2. Mär 2006, 07:20
Datenbank: mySQL • Version: 5.0 • Zugriff über: weiß ich noch nicht
Guten Morgen, Allerseits.
Obwohl ich noch ein ziemlicher Anfänger bin, will (besser muss) ich mich an ein größeres Projekt für meine eigene Firma (Entsorgungsbetrieb) machen. Mein erstes größeres Problem besteht darin, wie ich die Abrechnung mit unseren Kunden am besten in der Datenbank unterbringe. Hier möglichst kurz eine Schilderung der Aufgabenstellung:
Ich muss für die Festlegung des Preises viele unterschiedliche Gegebenheiten berücksichtigen, so dass ich die Beschreibung der auszuführenden und abzurechnenden Leistungen auf drei Tabellen verteilt haben, die - verkürzt - wie folgt aussehen:
Tabelle Einheit
EinhID - AutoInkrement
EinhKz - integer (4-stellig)
EinhBez - string
Tabelle Artikel
ArtID - AutoInkrement
ArtKz - integer (max 8-stellig mit führenden Null)
ArtBez - string
Tabelle Leistung
LeistID - AutoInkrement
LeistungKZ - byte (max. 2-stellig)
LeistBez - string
Die abzurechnende Leistung setzt sich aus Einträgen aller drei Tabellen zusammen. Ein paar Beispiele:
1.100 Ltr. - Gewerbeabfall - leeren - € 30,00
1.100 Ltr. - Altpapier - leeren - € 10,00
Stück - 20 cbm Container - Transport - € 75,00
Tonne - Gewerbeabfall - Entsorgung - € 175,00
Meine Frage ist nun, wie ich die Preise in der Datenbank hinterlegen soll. Mir sind dazu zwei Alternativen eingefallen, wobei ich mir unsicher bin, welche vorzuziehen ist:
Alternative 1:
Hierbei würden für die Preise (die bei den Kunden durchaus unterschiedlich sind) ein Tabelle verwendet, die - wiederum verkürzt - folgendes Aussehen hätte:
Tabelle Preise
KuNr
EinhKz
ArtKz
LeistKz
Preis
Bei der Rechnungsstellung müsste ich dann die Tabelle durchlaufen und bei jedem Datensatz mit der passemdem Kundennummer darauf prüfen, ob Einheit, Artikel und Leistung übereinstimmen, um den Preis für die entsprechende Auftragsposition festzustellen und in die Rechnung zu übernehmen.
Alternative 2:
Hierbei würde ich eine weitere Tabelle erzeugen, in der Einheit, Artikel und Leistung stehen:
Tabelle Auftragsposition
PosID - AutoInkrement
EinhKz
ArtKz
LeistKz
Tabelle Preise
KuNr
PosID
Preis
Hier müsste ich dann bei der Rechnungsstellung nur noch prüfen, ob Kundennummer und Auftragsposition übereinstimmen.
Vielleicht hat ja jemand noch eine bessere Idee - ich bin für jeden Hinweis dankbar.
mfg gfjs
Mein neues Motto (von "Unbekannt"):
Gewinnen: Wenn Du kannst - Verlieren: Wenn Du musst - Aufgeben: NIE!
|