【发布时间】:2012-07-20 06:36:43
【问题描述】:
我正在开发一个应用程序,用户可以与其他用户建立两种关系之一——favoriting 他们,或者following 他们——我想相反的操作,@987654323 @ 和 is being follow by 也将作为我想要调用的方法出现。
在制作用户模型时我应该考虑哪些因素?具体来说,我应该有一个模型,即关系,它指定:
Relationships
user_1 | relationship_type | user_2
其中的 relationship_type 是 favoriting 还是 following?
或者我应该有 2 个独立的模型:
Favorites
user_1 | user_2
Follows
user_1 | user_2
我对数据库了解不多,请问在这两种潜在设置之间进行选择时有哪些注意事项? 2 比 3 更标准化还是更少?这有关系吗?什么情况下?
更新
抱歉,这让我感到震惊:假设有第三种关系,例如“reviews”/“reviewed_by”——问题是关于 3 种,而不是 2 种不同的双向关系类型。增加关系类型的数量会对此产生影响吗?
Favorites
user_1 | user_2
Follows
user_1 | user_2
Reviews
user_1 | user_2
【问题讨论】:
-
使用更好的命名使其更易于阅读。使用诸如喜爱用户和喜爱用户的东西。使用方法#1
标签: ruby-on-rails database-design model social-networking database-normalization