我正在开发像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
答案 0 :(得分:0)
有几种方法可以做到这一点。一种简单的方法是创建一个表,用于定义每个帖子可以具有的可见性类型:
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这样的图形数据库。它们允许非常容易地指定这些类型的关系/关联。