我正在开发一个类似Facebook的社交网络,但是它是针对那些可以加入的用户的。无论如何,我必须为每个用户可以在其中张贴内容的Facebook风格墙。
(我第一步只是发布文字,照片和视频)。

现在,用户应该可以定义与谁共享帖子,“朋友”,“所有人”,“只是我”。

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

所以我的问题是:

如何为此工作设计MySQL表?

我所拥有的是:


用户表:user_id,....
好友表格:iduser_idfriend_idstatus
帖子表:post_iduser_idpost_titlepost_contentpost_date
注释表:comment_iduser_idpost_idcomment_textcomment_date

最佳答案

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

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之类的图形数据库。它们允许非常容易地指定这些类型的关系/关联。

关于php - friend 之间共享内容的mysql设计,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23009424/

10-16 03:31