[英]Rails Database design: Composition, Sorting
在我的居民協會的Rails數據庫中,有用戶,地塊和房屋模型。 (空地塊,擁有一棟或多棟房屋的地塊,業主或租戶居住的地塊)。 從數據庫的角度來看,我將需要各種關系,例如
從功能和用戶界面的角度來看,我需要具有不同角色的成員模型-PlotOwners,HouseOwners,Tenant,所有者的親戚,Tenant的親戚。 我可以使用現有的模型和關系來做到這一點。
問題:在顯示居民時,我無法對用戶或房屋屬性中的任何一個進行排序,因為它們來自不同的表。 如果我使用來自用戶,地塊,房屋模型的列創建成員模型,那么我將復制這些列,因此存在數據庫不一致的風險。
我有CS背景,但沒有生產級數據庫設計(Rails或其他)。 由於經常需要成員數據,因此只要我可以在系統中強制執行完整性,是否重復這些列是否合理? 除了對內存中的數據進行排序以外,還有其他選擇嗎?
我看到角色不同的成員作為報告,但由於需要經常使用它們,因此需要將它們保留下來,因此需要重復進行查看,但是用戶/地塊/模型的基本模型卻沒有管理員的重復,這似乎是一種方式。 我的理解上有差距嗎?
我認為您可以使用四個模型來做到這一點。
您可以使用“ 多態關聯”將用戶與僅一個模型的圖和房屋相關聯。 以下是您需要的關聯。
class User < ActiveRecord:Base
has_many :user_associations
has_many :plots, :through => :user_associations, :source => :associable, :source_type => 'Plot'
has_many :houses, :through => :user_associations, :source => :associable, :source_type => 'House'
end
class Plot < ActiveRecord:Base
has_many :houses
has_many :user_associations, :as => :associable
has_many :users, :through => :user_associations
end
class House < ActiveRecord:Base
belongs_to :plot
has_many :user_associations, :as => :associable
has_many :users, :through => :user_associations
end
class UserAssociation < ActiveRecord:Base
belongs_to :user
belongs_to :associable, :polymorphic => true
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.