Angenommen, die folgende Datenschema:Ist es möglich, einen zusammengesetzten Fremdschlüssel in Schienen zu haben?
Usage
======
client_id
resource
type
amount
Billing
======
client_id
usage_resource
usage_type
rate
In diesem Beispiel nehme ich mehrere Ressourcen haben, von denen jeder in vielerlei Hinsicht verwendet werden können. Zum Beispiel ist eine Ressource eine widget
. Widgets
kann foo
ed sein und sie können bar
ed sein. Gizmo
s kann auch foo
ed und bar
Ed. Diese Nutzungsarten werden mit unterschiedlichen Raten berechnet, möglicherweise sogar unterschiedlichen Raten für unterschiedliche Kunden. Jedes Auftreten einer Verwendung (einer Ressource) wird in der Verwendungstabelle aufgezeichnet. Jeder Abrechnungssatz (für die Kombination aus Kunde, Ressource und Typ) wird in der Abrechnungstabelle gespeichert.
(By the way, wenn dieses Datenschema nicht der richtige Weg ist, um dieses Problem zu nähern, bitte Vorschläge machen.)
Ist es möglich, mit Ruby on Rails und Active, eine has_many
Beziehung zu schaffen von Billings zu Usages, damit ich eine Liste von Verwendungsinstanzen für einen bestimmten Abrechnungssatz erhalten kann? Gibt es eine Syntax der has_many, :through
, die ich nicht kenne?
Noch einmal, ich kann dieses Problem aus dem falschen Winkel nähern, also wenn Sie sich einen besseren Weg vorstellen können, sprechen Sie bitte!
Warten Sie eine Sekunde ... Sollte es nicht das andere sein herum - ein Primärschlüssel in Billing und ein Fremdschlüssel in Usage? – Yarik
Gute Antwort, guter Hintergrund. Die RoR-Ansicht von Datenbanken scheint mir problematisch. Aber das dbms scheint seine Rache dadurch erkauft zu haben, dass es RoR mit einem Ruf als langsames, nicht skalierbares Datenbankschwein belastet hat. – dkretz