我应该为我的数据库创建一个新表吗?

时间:2011-08-22 14:05:16

标签: php mysql sql

在我的数据库中,我有其他表products。产品表包含有关产品的ID,名称,描述和一些其他数据。我想添加一个类别。

我是否应该创建一个名为category的新表,其中包含id和每个类别的名称,并且products a * category_id *将引用category的ID ,或者我应该在products的每一行上都有该类别的名称?

在第一种情况下,我将不得不使用JOIN。这会对性能产生严重影响吗?

5 个答案:

答案 0 :(得分:4)

通过在自己的表格中定义类别,您可以:

  • 重命名类别
  • 动态生成从
  • 中挑选的类别列表
  • 添加类别说明
  • 添加新类别

......等等,每次修改时都不必更新类别相关代码的每一部分。

是的,请添加一个表格。

  

这会对性能产生严重影响吗?

可能不是。

答案 1 :(得分:1)

是的,您应该保持数据标准化。我认为创建一个名为category的新表是个好主意。

答案 2 :(得分:1)

类别是否会随着时间而改变?在大多数情况下都是如此,因此通常情况下,两个表之间使用单独的Categories表和外键(FK)会更好。然后,您可以只使用数据更改来添加或更改类别。否则,您希望对表格中的类别名称列设置检查约束,以确保您不会在其中获取垃圾数据,这将变得更难维护。

通过适当的索引,连接应该只有最低成本。另外,请记住,您不一定总是需要加入表格。当您希望将实际类别名称作为结果集的一部分时,您只需要加入它们。例如,如果您的前端有一个查找框,其中包含类别及其ID,那么您选择的产品只需要返回类别ID值,您甚至不必费心去加入。

答案 3 :(得分:0)

股票回答是“它取决于”。这取决于可能如何使用,将使用的数据。但是一旦你完成了所有的讨论和论证,对于你的数据中这个简单而突出的东西,八分之九,你最好正确地规范数据(即Category表,CategoryId列和外键)。

答案 4 :(得分:0)

如果您需要此级别或规范化提供的额外功能,则仅添加表格。 如果您需要重命名类别,或列出它们,那么这是一个很好的候选人。如果没有,那么为什么要麻烦它,它会使你的数据库稍微难以阅读。

加入很可能不会对性能产生影响,但如果您现在不需要,请尽量不要过度设计。