Ich bin ein PHP-Entwickler und habe Grundkenntnisse in MySQL, aber ich arbeite an einem persönlichen Projekt und muss mich darum kümmern.Drei Tabellen - Kaskadenbeziehungen verwenden oder Extras hinzufügen?
Rechnungsdetails werden gespeichert, die Stripe-Objekte nachahmen. Ich frage mich jedoch, ob ich Indizes in Kaskade verwenden oder sie für jede Tabelle verwenden soll.
Lassen Sie mich durch (ein vereinfachtes) Beispiel erklären. Ein Benutzer hat ein Abonnement. Jedes Abonnement erhebt monatlich eine Rechnung. Jede Rechnung stellt eine Ladung (oder mehr, wenn einige fehlgeschlagen.)
table_user
- user_id
- username
- password
table_subscription
- sub_id
- start_date
- end_date
- amount
- user_id
table_invoice
- invoice_id
- period_start
- period_end
- amount
- paid
- subscription_id
table_charge
- charge_id
- amount
- status
- failure_code
- failure_reason
- invoice_id
Mein Punkt ist, dass ich von jedem Benutzer Gebühren und Rechnungen schnell auflisten möge. Eine Gebühr/Rechnung gehört einem Benutzer. Sollte ich den Schlüssel "uder_id" nur für das Abonnement verwenden (da Gebühren und Rechnungen verknüpft sind) oder sollte ich noch "user_id" zu Rechnungs- und Gebührentabellen hinzufügen?
Es ist einfacher zu wählen, aber auch, wenn ich in Zukunft Gebühren, die nicht mit einer Rechnung verbunden sind (Kauf eines einmaligen Extra), aber mit diesem Benutzer verknüpft sind.
Wir freuen uns auf einige Anregungen.
Dies ist eine Designentscheidung, die wir nicht wirklich beantworten können, da wir nicht alle Details oder Pläne kennen. – Shadow