【问题标题】:Implement "follow person, post" feature in asp.net mvc在asp.net mvc中实现“关注人,发布”功能
【发布时间】:2011-07-19 15:54:01
【问题描述】:

在任何社交网络中,您可以关注一个人、一个帖子或任何东西,您关注的所有内容都会显示在您的墙上,现在我想在 asp.net mvc 中实现相同的功能,但我在设计表上有问题查询用户的所有以下内容。这是我设计的表格:

[用户(ID,姓名,电子邮件,密码)] [关注(id,personId,followingId,来源)] [帖子(id,title,description,authorId)]

所以当一个用户关注其他用户时,一个新的记录会被推送到Following表上,followingId是userId,source是“User”表,跟关注一个帖子,followingId是postId,source是“Post”是一样的桌子。 问题是当从您的关注中获取数据时,如果用户关注的内容多于帖子和其他用户(例如标签、主题......),则查询会连接许多表以返回结果。这将不是很好的性能和查询时间来返回数据给用户。 你对此有什么想法吗?非常感谢您的解决方案,非常感谢!

【问题讨论】:

    标签: asp.net asp.net-mvc facebook asp.net-mvc-2 database-design


    【解决方案1】:

    您的数据库设计存在缺陷,而不是一个带有字符串的“链接”表来识别“关注的事物”所在的位置,这使得有效查询变得困难。

    相反,每个链接的事物都需要一个链接表。所以在您的简化示例中,您可能有

    [User(id,name,email,password)]
    [Post(id,title,description,authorId)]
    [UserFollowingUser(id, userId, followedUserId]
    [UserFollowPost(id,userId,postId)]
    

    因此,让所有用户关注一个帖子,或者让所有用户关注一个用户,或者让所有用户关注一个特定用户,或者让所有用户关注一个特定用户是很容易的。

    【讨论】:

      猜你喜欢
      • 2011-08-02
      • 2020-06-10
      • 2010-10-17
      • 2011-05-09
      • 1970-01-01
      • 2011-11-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      相关资源
      最近更新 更多