我正在开发一个类似Facebook的社交网络,但是它是针对那些可以加入的用户的。无论如何,我必须为每个用户可以在其中张贴内容的Facebook风格墙。
(我第一步只是发布文字,照片和视频)。
现在,用户应该可以定义与谁共享帖子,“朋友”,“所有人”,“只是我”。
每个用户可以属于一个研究所,该研究所也有自己的带有墙的墙。该研究所还应该能够与用户组共享帖子。
所以我的问题是:
如何为此工作设计MySQL表?
我所拥有的是:
用户表:user_id
,....
好友表格:id
,user_id
,friend_id
,status
帖子表:post_id
,user_id
,post_title
,post_content
,post_date
注释表:comment_id
,user_id
,post_id
,comment_text
,comment_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/