2012-03-08 51 views
1

更好地使用ENUM或单独的表来获得可能的值列表(例如html选择)?ENUM真的很邪恶(SHOW COLUMNS还是SELECT)?

什么是更好的做法?

当我使用SHOW COLUMNS时,枚举类型必须通过解析;

OR

当我使用单独的表来存储可能的值和使用SELECT * ???

+0

对不起,什么?真的不清楚你在问什么。 – deceze 2012-03-08 08:38:51

+0

请阅读此处:http://stackoverflow.com/questions/9239137/which-is-a-better-design-for-database-status-values/9239163#9239163 – 2012-03-08 08:53:24

回答

4

当您使用枚举时,您实际上是在数据库表中硬编码您的列表。所以如果你需要添加一些东西,你需要去改变表格。另一方面,当您使用通过foreighn键连接的表时,您可以轻松地从前端应用程序添加关键字(选择),而无需更改您的模式。

当我的列表随着时间的推移而改变时,我更喜欢在选项不会改变时使用枚举,而使用外键关系的表。选择是你的。

我希望这对你有帮助。

1

答案是:'它取决于'。

这取决于您是否期望这些值的列表永远不会(或很少)发生更改或频繁更改。

在第一种情况下,创建ENUM是有意义的,因为它将值列表定义为数据模型本身的一部分。它明确告诉用户,允许哪些值。

在后一种情况下,我们处理数据而不是数据模型,因此更合理和实用的方法是为这些值设置单独的表。

0

这实际上取决于您计划存储的选项数量。如果只有3个,我会建议使用UNUM,否则分隔表更好。如果您将来添加更多选项,第二张桌子也会更好。

0

如果选项是有限的,固定使用枚举直接(“不活跃”,“主动”,“待定”)

,否则这将是更好地使子表的相应的整数ID选项和储存(主子表的键)在父表中。

请参阅我的回答: which is a better design for database status values?