Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/236.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/9/loops/2.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,我有一个数据库,其中有一个网站地址列表,每个地址都有一个类别。 在表字段中,我有site\u id、site\u url和site\u category。在site\u分类中我有简单的英语分类,如:电影、教程等 我想知道什么对速度更有利。这样做或有两张桌子: 网站:站点id、站点url和站点类别 类别:category\u id,category\u name 在“网站”表的site\u category中,仅放置category\u id 我正在用PHP制作一个目录,我想知道,在想要查询的时候

我有一个数据库,其中有一个网站地址列表,每个地址都有一个类别。 在表字段中,我有
site\u id、site\u url和site\u category
。在
site\u分类中
我有简单的英语分类,如:电影、教程等

我想知道什么对速度更有利。这样做或有两张桌子:

网站:
站点id、站点url和站点类别

类别:
category\u id,category\u name

在“网站”表的
site\u category
中,仅放置
category\u id


我正在用PHP制作一个目录,我想知道,在想要查询的时候,什么更好。谢谢

看起来您正试图以牺牲良好的数据库设计为代价对站点进行预优化。我的建议是:设置两个不同的表。一个用于类别。另一个是网站。然后通过类别ID将两者链接起来。这样,如果您需要更新类别名称,就不必更新网站表中的多行。

您的第二种方法更可靠。如果要更改类别的名称,只需更改一次即可


此外,当您希望在一个网站上有多个类别时,它为您提供了更大的灵活性。

与几乎所有SQL一样,它实际上取决于一系列因素

通常,针对单个表的查询可能比针对两个表的查询执行得更好


使用相对较短的“category_name”(比如8个字符或更少)值,并使用适当的索引category_name作为前导列,您将获得良好的查询性能,如:

SELECT * FROM websites WHERE category_name = 'movies' ORDER BY category

为优化性能,考虑<代码>枚举< /代码>列为CyryPyNeX。但这意味着

category\u name
的值将作为列定义的一部分“固定”

如果您需要获取不同类别名称值的列表(例如,对于下拉列表框),则最好使用单独的表(例如示例中的类别表)

最大的问题是“类别”是否是系统中的实体。也就是说,是一个“类别”,即对业务非常重要的人、地点、事物、概念或事件,可以唯一地识别,并且您需要存储相关信息

如果是这样,它就是一个“实体”,您需要为它创建一个单独的表


你要考虑的一个更大的问题是网站和类别之间的关系。一个网站可以有多个类别吗

如果是这样的话,那么您需要从关系表的角度来考虑,关系表将网站和类别联系起来。例如:

 website_category (website_id, category_id) 
在数据库设计中适当地表示实体之间的“实体”和“关系”是至关重要的。在调整以优化性能之前,请确保您首先正确地实现了这一点