外键的字段类型是否可以与引用的主键不同?

时间:2015-06-04 03:13:08

标签: mysql database foreign-keys primary-key

我得到的E-R型号不是我设计的。但我无法联系作者。 在这个模型中有些令我困惑的东西。 在表A中,主键是整数字段。表B有一个以A的PK为参考的外键。但是B的这个FK是一个varchar字段。 我刚刚开始学习数据库dedign,从来没有在我的工作中看到或做到这一点。 它是否合理且可实现? 请注意,该模型适用于mysql。

1 个答案:

答案 0 :(得分:2)

这不能在InnoDB中实现为FOREIGN KEY约束;外键列的数据类型必须与引用列的数据类型完全匹配。

您可以对列执行连接操作,但是需要在一侧或另一侧进行数据类型转换...例如。

ON c.character_col + 0 = p.numeric_col

允许在SQL中执行此操作;我们不必定义FOREIGN KEY约束来执行连接操作。

这个设计不是我们想要看到的;其中一个重要问题是性能,因为MySQL无法有效利用character_col上的索引。