在我的数据库中,我有其他表products
。产品表包含有关产品的ID,名称,描述和一些其他数据。我想添加一个类别。
我是否应该创建一个名为category
的新表,其中包含id和每个类别的名称,并且products
a * category_id *将引用category
的ID ,或者我应该在products
的每一行上都有该类别的名称?
在第一种情况下,我将不得不使用JOIN。这会对性能产生严重影响吗?
答案 0 :(得分:4)
通过在自己的表格中定义类别,您可以:
......等等,每次修改时都不必更新类别相关代码的每一部分。
是的,请添加一个表格。
这会对性能产生严重影响吗?
可能不是。
答案 1 :(得分:1)
是的,您应该保持数据标准化。我认为创建一个名为category的新表是个好主意。
答案 2 :(得分:1)
类别是否会随着时间而改变?在大多数情况下都是如此,因此通常情况下,两个表之间使用单独的Categories表和外键(FK)会更好。然后,您可以只使用数据更改来添加或更改类别。否则,您希望对表格中的类别名称列设置检查约束,以确保您不会在其中获取垃圾数据,这将变得更难维护。
通过适当的索引,连接应该只有最低成本。另外,请记住,您不一定总是需要加入表格。当您希望将实际类别名称作为结果集的一部分时,您只需要加入它们。例如,如果您的前端有一个查找框,其中包含类别及其ID,那么您选择的产品只需要返回类别ID值,您甚至不必费心去加入。
答案 3 :(得分:0)
股票回答是“它取决于”。这取决于可能如何使用,将使用的数据。但是一旦你完成了所有的讨论和论证,对于你的数据中这个简单而突出的东西,八分之九,你最好正确地规范数据(即Category表,CategoryId列和外键)。
答案 4 :(得分:0)
如果您需要此级别或规范化提供的额外功能,则仅添加表格。 如果您需要重命名类别,或列出它们,那么这是一个很好的候选人。如果没有,那么为什么要麻烦它,它会使你的数据库稍微难以阅读。
加入很可能不会对性能产生影响,但如果您现在不需要,请尽量不要过度设计。