Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql设计用于在朋友之间共享内容_Php_Mysql_Codeigniter_Database Design_Relational Database - Fatal编程技术网

Php mysql设计用于在朋友之间共享内容

Php mysql设计用于在朋友之间共享内容,php,mysql,codeigniter,database-design,relational-database,Php,Mysql,Codeigniter,Database Design,Relational Database,我正在开发一个像Facebook这样的社交网络,但它有点特定于可以加入的用户。无论如何,我必须为每个用户做一个Facebook风格的墙,在那里他/她可以发布内容。 我刚开始发布文字、照片和视频 现在,用户应该能够定义与谁共享帖子,“朋友”全部“只有我” 每个用户都可以属于一个机构,该机构也有自己的墙和帖子。研究所还应该能够与用户组共享帖子 因此,我的问题是: 我必须如何为此作业设计MySQL表 我得到的是: 用户表:用户id。。。。 好友表:id、用户id、好友id、状态 帖子表:帖子id、用户

我正在开发一个像Facebook这样的社交网络,但它有点特定于可以加入的用户。无论如何,我必须为每个用户做一个Facebook风格的墙,在那里他/她可以发布内容。 我刚开始发布文字、照片和视频

现在,用户应该能够定义与谁共享帖子,“朋友”全部“只有我”

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

因此,我的问题是:

我必须如何为此作业设计MySQL表

我得到的是:

用户表:用户id。。。。 好友表:id、用户id、好友id、状态 帖子表:帖子id、用户id、帖子标题、帖子内容、帖子日期 评论表:评论id、用户id、帖子id、评论文本、评论日期
有几种方法可以做到这一点。一种简单的方法是创建一个表,定义每个帖子可以具有的可见性类型:

CREATE TABLE PostVisibilityType
(
    visibility_id, //primary key
    visibility_type // friend, all, private etc...
)
更新post表的架构,使其具有可见性id,该id将指示此post的可见性类型,即仅限好友、私人等

posts table: post_id, user_id, visibility_id,...
对于机构,您需要设置一个表来定义您的组,因此需要一个UserGroup表,并将该表的id分配给User表,以便您可以标记用户所属的组。对于机构,您可以使用名为“组”的可见性类型,该类型仅允许该组中的用户查看帖子

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

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