【问题标题】:mysql design for sharing content between friends用于在朋友之间共享内容的mysql设计
【发布时间】:2014-05-25 10:07:50
【问题描述】:

我正在开发一个像 Facebook 这样的社交网络,但它只针对可以加入的用户。无论如何,我必须为每个用户制作一个 Facebook 风格的墙,他/她可以在其中发布内容。 (我只是发布文字、照片和视频的第一步)。

现在用户应该能够定义与谁分享帖子,“朋友”“所有人”“只有我”。

每个用户都可以属于一个机构,该机构也有自己的帖子墙。该研究所还应该能够与用户组共享帖子。

所以我的问题:

我必须如何为这项工作设计 MySQL 表?

我拥有的是:

  • 用户表:user_id, ....
  • 好友表:iduser_idfriend_idstatus
  • 帖子表:post_iduser_idpost_titlepost_contentpost_date
  • cmets 表:comment_iduser_idpost_idcomment_textcomment_date

【问题讨论】:

    标签: php mysql codeigniter database-design relational-database


    【解决方案1】:

    有几种方法可以做到这一点。一种简单的方法是创建一个表格,定义每个帖子可以拥有的可见性类型:

    CREATE TABLE PostVisibilityType
    (
        visibility_id, //primary key
        visibility_type // friend, all, private etc...
    )
    

    更新帖子表的架构,使其具有visibility_id,这将指示此帖子的可见性类型,即“仅限朋友”、“私人”等

    posts table: post_id, user_id, visibility_id,...
    

    对于机构,您需要设置一个表来定义您的组,即一个 UserGroup 表并将该表的 id 分配给 User 表,以便您可以标记用户所属的组。对于机构,您可以有一个名为“组”的可见性类型,这将只允许该组中的用户查看帖子。

    当用户登录并希望查看属于用户 X 的帖子时,您必须选择与该帖子关联的 id 并确定可见性。如果它是私有的,则阻止。如果是朋友,判断登录用户是否为朋友。如果是“全部”,请允许查看。

    您可能要考虑的另一件事是使用像 Neo4j 这样的图形数据库。它们允许非常容易地指定这些类型的关系/关联。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多