使用表在MySQL中提供枚举值?

时间:2010-01-21 04:26:10

标签: sql mysql database enums

有没有办法将MySQL表中的一个列内容映射到MySQL中另一个表的枚举?我认为这不是一件容易的事情,但似乎没有任何关于这个主题的信息。

关于这个问题的任何建议或帮助都会很酷,如果不可能,有没有人知道为什么不可能的内部原因?

最好的问候每个人:)

加里

2 个答案:

答案 0 :(得分:9)

enum 类型作为一次性使用非常方便,但它不能很好地扩展到多个表,也不是标准SQL。 这里最好的办法是使用普通表和关系:

  1. 定义一个新表来保存可能的值列表;我们称之为Master1
  2. 在另外两个表中(我们称之为Table1和Table2),不要将该字段设为 enum ;只需使用外键关系到Master1。
  3. 使其成为普通字段

    外键关系将完成限制可能值列表的工作;并且由于外键和关系是绝对标准的SQL,这种方法还有其他好处 - 例如,报告工具可以识别外键并了解如何使用相关数据。

答案 1 :(得分:0)

如果不这样做,请不要这样做

当然,您只需要一个可能的键表,然后是一个映射到它的外键。

如果您想要一个包含可能的枚举值和限制的表,请通过另一个表或同一表中的groupid进行分组(如果组成员是唯一的)。

虽然加入明智,却闻起来像桌子一样臭。也许最好在存储过程或应用程序代码中将其映射到本机值?