Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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 保存不同内容类型的注释_Php_Mysql - Fatal编程技术网

Php 保存不同内容类型的注释

Php 保存不同内容类型的注释,php,mysql,Php,Mysql,我的网站上有不同的内容类型。 f、 e.文章、问题、帖子 我看到了两种存储评论的方法 1) 为每种内容类型创建表,如文章注释、帖子注释等 2) 创建一个具有字段parent\u field和parent\u id的表。在“parent\u field”中保存类似于articles\u id或posts\u id的smth。因此使用 explode('_', $parent_field); 我可以接收的父表名和字段名 select "... FROM $table WHERE $field =

我的网站上有不同的内容类型。 f、 e.文章、问题、帖子 我看到了两种存储评论的方法

1) 为每种内容类型创建表,如文章注释、帖子注释等

2) 创建一个具有字段parent\u field和parent\u id的表。在“parent\u field”中保存类似于articles\u id或posts\u id的smth。因此使用

explode('_', $parent_field);
我可以接收的父表名和字段名

select "... FROM $table WHERE $field = $parent_id"
第二种方法似乎更灵活,但第一种更容易


所以,问题是:如果每天有100+k个主机,哪种方式更好?

一张表格仅供评论

id, caption, body, ...
一个关系表,用于存储注释的父关系

comment_id (int), 
parent_id (int),
parent_type (enum, set, or int BUT not varchar)
// build index
这样,您可以轻松地将注释标记到多个家长(如果您愿意),
并且还可以轻松地进行
内部联接
,以获取属于父级的注释

另一个好处,
例如,如果您希望获得所有文章、问题和帖子的大多数评论,
在您的方法中,
您需要三个内部联接+分组方式,
根据我的建议,您只需要一个查询

最重要的是,
关系表能够处理大量记录

因为它只存储整数(较小的索引)

在性能方面,较小的表可能会更快,但由于您将仅通过主键访问,因此差别不大(案例2更容易维护)。只需确保在案例2中一起用作主键。那么性能呢?因为您必须从两个表中获取数据。在案例2中,我可以用php编写查询,并且只使用一个表,这比使用一个臃肿的表要好。一个简单的例子,如果您没有类型->您将更改为使用或(posts\u id=?或articles\u id=?)。。。然后,它将不会使用任何索引,因为索引不会执行或跨多个列执行。我的建议是允许在没有父类型的情况下使用索引