ran*_*omx 8 mysql database-design
可能的重复:
使用 ENUM 与 Integer 类型的优缺点?
仅考虑 MySQL...
我很想知道社区认为 ENUM 类型与 FK 到类型表的正确用例是什么。
我读过这个问题:使用 ENUM 与 Integer 类型的优点和缺点?,但是用例对我来说并没有得到很好的覆盖。
当使用 ENUM 获得一系列值时,您必须正确计划将使用哪些值。一旦这些值就位,如果您想重新定义 ENUM 范围,执行任何类型的简单维护都会变得相当具有挑战性。
虽然您可以执行诱饵和切换技巧来扩展 ENUM 的范围,但如果您想做其他事情,例如减少或更改 ENUM 范围,这些相同的技巧就会变得非常麻烦(甚至可能是不可能的)。
当您知道正在建立的类型可以扩展、减少或更改时,使用外键就非常有意义。只需将新条目添加到具有所需类型的表中,键就可以传递到其他表,而无需担心底层值在外部表中是否正确表示。此外,您不会担心这些值与类型的基表定义完全匹配。如果使用 ENUM,这种担忧肯定会适用。
外键约束将用于保护行免于吸收无效类型。因此,这不适用于 ENUM,因为约束检查必须在您的应用程序中完成,而不是在数据库中完成。
以下是关于 ENUM 使用应考虑的事项:
ENUM 在以下情况下效果最佳
game_rating ENUM('EC','E','E10+','T','M','A') NULL这允许在没有默认评级的情况下将新游戏输入到表格中)警告
OK game_rating 可能是一个不好的例子,因为ESRB可以创建更多的游戏评级。在这种情况下,FK 会更好,但基表必须将 'unknown' 作为默认类型并将 game_rating 定义为NOT NULL。
| 归档时间: |
|
| 查看次数: |
11930 次 |
| 最近记录: |