例如: 我有一个带有外键的“历史”表,它可能根据字段值指向不同的表/实体。
表历史:
create table history(
id int PimaryKey AUTO_INC,
elementid int, (ForeignKey)
elementtype varchar
)
此表的填充示例:
id ElementId ElementType
1 1 Device
2 2 Simcard
3 2 Simcard
这告诉我们有
- ID 为“1”的“设备”类型实体的 1 条记录
- ID 为“2”的“Simcard”类型实体的 2 条记录
目标是拥有一个可用于多个实体的表。
这是集成动态外键的正确方法吗? 我还想到的是创建一个包含表/实体的列表以供引用 所以表格看起来像:
ALTER TABLE history MODIFY ElementType INTEGER;
ElementType 指的是:
create table entities(
id int PimaryKey AUTO_INC,
name varchar
)
例如填充新表历史记录:
id ElementId ElementType
1 1 1
2 2 2
3 2 2
填充实体表例如:
id name
1 Device
2 Simcard
最佳答案
实现动态 FK 的正确方法是不做。
这是 reasons why , 和什么 do instead .
关于mysql - 是否可以使用动态外键,最好/正确的做法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22372660/