加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

sql – 我应该使用ENUM作为主键和外键吗?

发布时间:2021-03-30 22:06:03 所属栏目:MySql教程 来源:网络整理
导读:关联者已创建一个模式,该模式在查找表上使用ENUM()列作为主键.该表将产品代码“FB”转换为其名称“Foo Bar”. 然后,该主键在其他地方用作外键.目前,FK也是一个ENUM(). 我认为这不是一个好主意.这意味着要连接这两个表,我们最终会进行四次查找.这两个表加上

关联者已创建一个模式,该模式在查找表上使用ENUM()列作为主键.该表将产品代码“FB”转换为其名称“Foo Bar”.

然后,该主键在其他地方用作外键.目前,FK也是一个ENUM().

我认为这不是一个好主意.这意味着要连接这两个表,我们最终会进行四次查找.这两个表加上两个ENUM().我对么?

我更喜欢让FK成为CHAR(2)以减少查找次数.我也更喜欢PK也是CHAR(2)来完全减少它.

ENUM()的好处是获得对值的约束.我希望有类似的东西:CHAR(2)ALLOW(‘FB’,’AB’,’CD’)我们可以用于PK和FK列.

什么是:>最佳实践>您的偏好

这个概念也在别处使用.如果ENUM()的值更长怎么办? ENUM(‘Ding,dong,dell’,’Baa baa black sheep’).现在,ENUM()从空间的角度来看很有用.如果有几百万行使用这些值,我应该只关心这个吗?在这种情况下,ENUM()可以节省存储空间.

最佳答案 ENUM应该用于定义给定字段的可能值范围.这也意味着您可能有多个行,这些行具有相同的值.

我不建议将ENUM用于主键类型的外键类型.

使用ENUM作为主键意味着添加新密钥将涉及修改表,因为必须先修改ENUM,然后才能插入新密钥.

我猜你的同事试图限制谁可以插入一个新行,并且该行数是有限的.我认为这应该通过数据库级??别或应用程序的适当权限设置来实现,而不是通过使用ENUM作为主键.

恕我直言,使用ENUM作为主键类型违反了KISS principle.

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读