ruby-on-rails – 如何在网站中实现友谊结构

我开发了一个友谊系统,其中users表有一个友谊列.在此列中,我通过使用逗号分隔将用户的id存储在数组中.示例:1,5,15,20

所以这意味着,用户是其他用户的朋友,他们的身份证号为1,5,15,20.但还有另一种方法可以做到这一点.创建友谊表并将所有内容存储在那里.就像这个例子中一样:

https://stackoverflow.com/questions/25101089/mutual-friendship-rails-4

How to Implement a Friendship Model in Rails 3 for a Social Networking Application?

我的问题是哪种方式是效率和速度的最佳方式?使用数组列还是单独的表?

谢谢.

最佳答案 效率和速度取决于您使用此数据的方式.

1#您在同一个表中有一个模型用户和一个朋友的user_id列’朋友’.

这是快速阅读,不需要太多的存储空间.但是您必须决定应该在哪个表行中存储数据,因为您绝对不希望在两个不同的表行中存储/管理相同的数据.如果您只需要像User.friends这样的方法,这是一种快速有效的存储ID的方法.但是如果你想拥有像User.is_friends_with这样的方法,你必须查询用户表中的每一行.这既不快也不高效.

2#你有一个模型用户和一个’is_friends_with’列,同一个表中的朋友的user_ids.

与#1相同,但User.is_friends_with会很快,User.friends会查询表中的所有行.

3#你有一个模特用户和模特友谊

如果您想在两个方向查询友谊,这是快速有效的.还可以扩展友谊模型以存储其他一些数据(例如,当用户是朋友或他们彼此认识的时候).但如果用户有100个朋友,则需要100行友谊表.

如果你还不知道如何处理所有友谊,你应该选择#3.这是最灵活的方式,以后很容易扩展.

点赞