关联者已创建一个模式,该模式在查找表上使用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()可以节省存储空间.