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