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

发布于 2024-08-18 18:57:43 字数 156 浏览 3 评论 0原文

有没有办法将 MySQL 表的列内容之一映射到 MySQL 中另一个表的枚举?我认为这是理所当然的,但似乎没有任何关于这个主题的信息。

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

向大家致以最诚挚的问候:)

加里

Is there a way to map one of the the columns contents of a MySQL table to an enum on another table in MySQL? I thought this would be a no brainer, but there doesn't seem to be any info that I can find on the subject.

Any advice or help on this matter would be cool and if it's not possible, does anyone know of an internal reason why it wouldn't be possible?

Best regards everyone :)

Gary

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

眼泪也成诗 2024-08-25 18:57:43

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

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

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

The enum type is handy as a one-off, but it doesn't scale well to multiple tables and isn't standard SQL either.
Best thing to do here is to use normal tables and relations:

  1. Define a new table to hold the list of possible values; let's call it Master1
  2. In the other two tables (let's call them Table1 and Table2), don't make the field an enum; just make it a normal field with a foreign key relation to Master1.

The foreign key relation will do the job of restricting to a list of possible values; and because foreign keys and relations are absolutely standard SQL, this approach will have other benefits - for example reporting tools can recognise the foreign key and understand how to use the related data.

如歌彻婉言 2024-08-25 18:57:43

如果它不这样做,就不要这样做

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

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

尽管明智地加入,但闻起来像餐桌臭味。也许最好在存储过程或应用程序代码中执行此操作并将其映射到本机值?

If it doesn't do it, don't do it

Surely you just want a table of possible keys and then a foreign key mapping to that.

If you want a table with possible enum values and restrictions, go for groupings via another table or a groupid in the same table (if group members are unique).

Smells like table-stink though JOIN wise. Maybe best doing this in a stored procedure or in the app code and mapping it to a native value?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文