要分隔到不同的表或使用枚举类型?

时间:2010-08-11 06:05:52

标签: mysql database database-design

我正在使用在线商店,目前产品是否可用,是否已启用,产品表上的int字段。

他们希望我为此添加更多内容,例如“库存供应商”,“缺货,x天内发货”等。我正在考虑放弃旗帜并创建枚举类型的状态字段,“可用”,“缺货”,“即将推出”很快',停止'等等。

这样做的最佳方式是什么?将枚​​举类型添加为产品的新列?

我被告知我应该添加一个名为Status的单独表,并在products表中对它进行外键引用,以便将来更容易更改。我不确定这是怎么回事,因为枚举类型似乎很容易改变。您可以添加,删除它并重命名项目。

2 个答案:

答案 0 :(得分:2)

如果您预计会更改枚举,则应该使用单独的表格。 INSERT或UPDATE比ALTER更便宜。

另外,请考虑如何确定该字段的可接受值。如果它是枚举,则必须对选项进行硬编码或检查数据库模式。如果它在一个单独的表中,您可以选择SELECT来填充选项列表。

答案 1 :(得分:0)

带有FK的表会占用硬盘上的空间,但我更喜欢使用Enum类型。差异通常很小,并且没有过度正常化的性能优势。