我有一个疑问,我在Ruby on Rails网站上建立了一个朋友的平台;我有一个名为用户的表格,以及一个名为朋友的表格,用于管理用户之间的友谊。在朋友中,我有2个字段,* user_id1 *和* user_id2 *。这是我在模型中建立的关系:
class User < ActiveRecord::Base has_many :friends end
class Friend < ActiveRecord::Base belongs_to :user, :foreign_key => "user_id1" belongs_to :user, :foreign_key => "user_id2" end
这是处理这种情况的好方法吗?另一个想法是创建另一个模型,指向数据库中的同一个表, userAux ,并将其用于关系。你认为最好的是什么?你有更好的主意吗?
提前致谢。
答案 0 :(得分:4)
自引用多对多结构通常称为物料清单。这是一个非常好的主意,并且在关系数据库中非常常用。这是Data Model。您将拥有布尔属性,例如IsAccepted
和IsRejected
。
请不要将列命名为user_id1, 2
。请将其称为实际有意义的内容,例如host_id
和guest_id
或requester_id
和friend_id
。只有当你编码时,这种相关性才会变得清晰。
不熟悉关系建模标准的读者可能会发现IDEFIX Notation有用。
答案 1 :(得分:1)