Bestes Software-Diagramm Tabellenlayout für Rechnung/Kunde/Rechnungspositionen?

fare31key

Newbie
Registriert
Juli 2014
Beiträge
3
Hallo Miteinander

Ich sollte ein Diagramm/Tabellendiagramm zu folgender Aufgabe erstellen; und ich möchte wissen was wohl die bestmögliche Lösung dafür wäre.
Da ich diese Problemstellung in Prinzip oft antreffe.


Aufgabestellung

1. Ein Kunde kann verschiedene Angebote mieten. (im Beispiel: Filme per Internet; welche er dann streamen darf).
2. Der Kunde bezahlt Anhand der Anzahl Minuten in denen er diese Filme streamt.
3. Der Kunde kann bestimmen in welchen periodischen Abständen er die Rechnung für seine gemieteten Filmestream zugestellt haben möchte. Also monatlich/wöchentlich/pro Jahresquartal/...
4. In der Rechnung müssen die einzelnen Streamnutuzngen aufgelistet sein.​


Tabellen

Aus der Aufgabenstellung ergeben sich folgende Tabellen. [Kunde], [Rechnung], [Streamnutzung] und [Filme]

In der [Kunde]-Tabelle wird das Login,die Adressdaten, gewünschte Rechnungsperiode etc. abgelegt.
In der [Rechnung]-Tabelle wird der "Bezahlt-Status", das Rechnungsdatum, und die beiinhaltende Dauer (bsp. Rechnung von März-April) festgehalten.
In der [Streamnutzung]-Tabelle wird festgehalten, welcher Kunde zu welcher Zeit und wie lange welche Filme gestreamt hat
In der [Filme]-Tabelle sind die Filmtitel und Filmdauer erfasst. Zusätzlich wird hier pro Film der Streaming-Preis-Pro-Minute bestimmt.


Tabellenbeziehung und Frage?

Mir scheint logisch dass die [Streamnutzung]-Tabelle einen Fremdschlüssel zur [Filme]-Tabelle besitzen muss.
Ebenfalls hat die [Rechnung]-Tabelle einen Fremdschlüssel zum Kunden. Um die Rechnung einem Kunden zuweisen zu können.


Was ich nicht weiss; sind die anderen Beziehungen.
Hier die Möglichkeiten:

  1. [Streamnutzung] hat einen Fremdschlüssel zum Kunde **UND** zur Rechnungstabelle. => Das gibt eine Kreisbeziehung (Kunde hat Rechnung und Kunde hat Streamnutzungen und die Rechnung hat Streamnutzungen)
  2. [Streamnutzung] hat nur einen Fremdschlüssel zum Kunden. => Es wird schwerer bis unmöglich (bei Anpassung der Rechnungsperiode) ausfindig zu machen welche Rechnung welche Streamnutzungen berechnet hat.
  3. [Streamnutzung] hat nur einen Fremdschlüssel zur Rechnung. => Bedingt dass bei der ersten Streamnutzung bereits einen Rechnungsdatensatz angelegt werden muss, obschon diese Rechnung möglicherweise erst in 3 Monaten o.ä. versendet wird.



Nun was ist eure Empfehlung? Ich persönlich tendiere zur 1ten Möglichkeit; was spricht gegen eine Kreisbeziehung?
Mögliche Dateninkonstenz? (wenn eine Streamnutzung einer Rechnung zugewiesen wird welche aber nicht dem zugewiesenen Kunden gehört).

Alternativ würde ich Möglichkeit 3 nehmen, da ich bei Möglichkeit 2 nicht weiss welche Streamnutzungen in einer Rechnung verrechnet wurde.
An dieser Möglichkeit stört mich - dass ich bereits Rechnungen anlegen muss welche aber noch gar nicht existieren (physikalisch).


Ich bin dankbar um Lösungsansätze.
In Prinzip lässt sich diese Problematik in vielen Shops mit Rechnungen und (teils individuellen) Rechnungspositionen ableiten.
Vielleicht gibts auch dazu ein passendes Software-Pattern?
 
Die Streamingtabelle hat einen Fremdschlüssel auf die Rechnungstabelle, welcher aber nicht befüllt sein muss. Somit kannst du die Rechnung später erstellen und den Fremdschlüssel in der Streamingtabelle befüllen (bei allen betroffenen Streamingdatensätze, die zur Rechnung gehören sollen).

Wegen Beziehungen:
[Kunde] 1 zu n [Rechnung] 1 zu n [Streaming] 1 zu n [Film]
zusätzlich
[Kunde] 1 zu n [Streaming]

Die Kreisbeziehung löst du softwaretechnisch auf. Das ist doch kein Problem!
 
Zurück
Oben