【发布时间】:2010-01-21 04:26:09
【问题描述】:
有没有办法将 MySQL 表的列内容之一映射到 MySQL 中另一个表的枚举?我认为这很容易,但我似乎找不到任何关于该主题的信息。
关于这个问题的任何建议或帮助都会很酷,如果不可能,有没有人知道它不可能的内部原因?
大家好:)
加里
【问题讨论】:
有没有办法将 MySQL 表的列内容之一映射到 MySQL 中另一个表的枚举?我认为这很容易,但我似乎找不到任何关于该主题的信息。
关于这个问题的任何建议或帮助都会很酷,如果不可能,有没有人知道它不可能的内部原因?
大家好:)
加里
【问题讨论】:
enum 类型作为一次性的很方便,但它不能很好地扩展到多个表,也不是标准的 SQL。 最好的办法是使用普通的表和关系:
外键关系将完成限制为可能值列表的工作;而且由于外键和关系绝对是标准 SQL,这种方法还有其他好处 - 例如报告工具可以识别外键并了解如何使用相关数据。
【讨论】:
Master应该除了枚举值之外还有单独的主键,还是只有枚举值?我认为定义单独的主键几乎没有什么好处。
不做就别做
当然,您只需要一个可能的键表,然后是一个外键映射到该表。
如果您想要一个具有可能枚举值和限制的表,请通过另一个表或同一个表中的 groupid 进行分组(如果组成员是唯一的)。
虽然 JOIN 明智,但闻起来像桌子臭味。也许最好在存储过程或应用程序代码中执行此操作并将其映射到本机值?
【讨论】: