外键的字段类型可以与引用的主键不同吗?
Can the field type of a foreign key be different to the referenced primary key?
我得到一个不是我设计的 E-R 模型。但是我联系不到作者。
这个模型让我有些困惑。
在TableA中,Primary Key是一个整型字段。 Table B 有一个引用A 的PK 的外键。但是B 的这个FK 是一个varchar 字段。
我刚开始学习数据库设计,在我的工作中从未见过或做过。
是否合理、可实现?
请注意,该模型适用于 mysql.
这在 InnoDB 中不能作为 FOREIGN KEY 约束来实现;外键列的数据类型必须与引用列的数据类型完全匹配。
您可以对列执行连接操作,尽管需要在一侧或另一侧进行数据类型转换...例如
ON c.character_col + 0 = p.numeric_col
SQL允许这样做;我们不必为了执行连接操作而定义 FOREIGN KEY 约束。
这种设计不是我们喜欢看到的;最大的问题之一是性能,因为 MySQL 无法有效利用 character_col
.
上的索引
我得到一个不是我设计的 E-R 模型。但是我联系不到作者。 这个模型让我有些困惑。 在TableA中,Primary Key是一个整型字段。 Table B 有一个引用A 的PK 的外键。但是B 的这个FK 是一个varchar 字段。 我刚开始学习数据库设计,在我的工作中从未见过或做过。 是否合理、可实现? 请注意,该模型适用于 mysql.
这在 InnoDB 中不能作为 FOREIGN KEY 约束来实现;外键列的数据类型必须与引用列的数据类型完全匹配。
您可以对列执行连接操作,尽管需要在一侧或另一侧进行数据类型转换...例如
ON c.character_col + 0 = p.numeric_col
SQL允许这样做;我们不必为了执行连接操作而定义 FOREIGN KEY 约束。
这种设计不是我们喜欢看到的;最大的问题之一是性能,因为 MySQL 无法有效利用 character_col
.