在 Rails 中将父关联 ID 和子关联 ID 保存在属于它们的第三张表上是不好的做法吗?

问题描述 投票:0回答:0

我有3张桌子:

users
details
documents

模型看起来像:

class User < ApplicationRecord 
  has_many :details
  has_one :document
end

class Detail < ApplicationRecord
  has_one :document
  belongs_to :user
end

class Document < ApplicationRecord
  belongs_to :user
  belongs_to :detail 
end

可能有许多没有

details
关联的
document
(版本化)。我将
user_id
detail_id
都存储在
document
上,因为
detail
在创建
document
之后的某个时间可能不存在。这最终会引入一些数据重复,因为一旦
user
存在,就可以通过
detail
访问
detail
。有没有更好的方法来做到这一点而不会导致这种重复?

另一个语义说明是

document
也与
user
的其他几个孩子相关联,所以对我来说,
document
user
的联系似乎也不完全正确仅通过他们的一个共享连接(如果我要连接他们
through
details
协会)。

ruby-on-rails database activerecord database-design associations
© www.soinside.com 2019 - 2024. All rights reserved.