Giả giản đồ dữ liệu sau:Có thể có một khóa ngoài hợp chất trong đường ray không?
Usage
======
client_id
resource
type
amount
Billing
======
client_id
usage_resource
usage_type
rate
Trong ví dụ này, giả sử tôi có nhiều nguồn lực, mỗi trong số đó có thể được sử dụng trong nhiều cách khác nhau. Ví dụ: một tài nguyên là widget
. Widgets
có thể là foo
ed và có thể là bar
ed. Gizmo
s cũng có thể là foo
ed và bar
ed. Các loại hình sử dụng này được lập hóa đơn ở các mức giá khác nhau, thậm chí có thể là các mức giá khác nhau cho các khách hàng khác nhau. Mỗi lần xuất hiện của một mức sử dụng (của tài nguyên) được ghi lại trong bảng Sử dụng. Mỗi tỷ lệ thanh toán (cho kết hợp khách hàng, tài nguyên và loại) được lưu trữ trong bảng thanh toán.
(Bằng cách này, nếu sơ đồ dữ liệu này không phải là cách đúng đắn để tiếp cận vấn đề này, xin vui lòng đóng góp ý kiến.)
Có thể, sử dụng Ruby on Rails và ActiveRecord, để tạo ra một mối quan hệ has_many
từ Billings to Usages để tôi có thể nhận danh sách các trường hợp sử dụng cho một tỷ lệ thanh toán nhất định? Có cú pháp của số has_many, :through
mà tôi không biết?
Một lần nữa, tôi có thể tiếp cận vấn đề này từ góc độ sai, vì vậy nếu bạn có thể nghĩ ra một cách tốt hơn, hãy lên tiếng!
Chờ một giây ... Không nên nó là khác cách xung quanh - một khóa chính trong Thanh toán và khóa ngoài trong Cách sử dụng ?? – Yarik
Câu trả lời hay, nền tảng tốt. Quan điểm của RoR về cơ sở dữ liệu dường như có vấn đề với tôi. Nhưng các dbms dường như đã chính xác trả thù của nó bằng cách gánh chịu RoR với một danh tiếng như là một cơ sở dữ liệu chậm, không thể đánh giá cao. – dkretz