数据库表有两个FK到同一个表
Posted
技术标签:
【中文标题】数据库表有两个FK到同一个表【英文标题】:Database table with two FK to the same table 【发布时间】:2020-07-14 15:13:45 【问题描述】:我知道将两个 FK 放到同一个表中并不“健康”,但这是我的场景:第一个人运行测试,另一个人将其添加到数据库中。 TestResult 链接到创建结果的人和在数据库中下载的人。对于这种情况,您的解决方案是什么? userInfo 有两个 Fk 可以吗?
当我想使用实体框架生成第二个 FK 时:“无法确定 DataAccessLayer.Entity.TestResult 类型上外键的复合外键排序。在复合外键属性上使用 ForeignKey 数据注释时,请确保顺序由使用 Column 数据注释或 fluent API。"
【问题讨论】:
同一个表的两个外键很常见,而且一点也不“不健康”。在 SQL 中很容易做到。 这对你有帮助吗:***.com/questions/40090288/… ? @mrNone 感谢您的评论,现在正在工作 您研究的 1 个具体的非重复问题是什么? PS如果询问错误消息,您在什么情况下做了什么? PS 引号中的“健康”是什么意思? “链接到”是什么意思?您所遵循的设计方法参考如何没有回答您的问题?它是什么&你被困在哪里?不要要求我们重写它。 How to Ask PS 请use text, not images/links, for text--including tables & ERDs。仅将图像用于无法表达为文本或增强文本的内容。在图片中包含图例/键和说明。 【参考方案1】:在两个表之间有多个外键是完全正常的。这取决于表之间关系的业务定义。
为什么你觉得不正常?
无论如何,作为一个例子,你可以这样做:
create table UserInfo (
id int primary key not null,
name varchar(20),
password varchar(20),
role int
);
create table TestResult (
id int primary key not null,
added_by int references UserInfo (id),
created_by int references UserInfo (id)
);
【讨论】:
以上是关于数据库表有两个FK到同一个表的主要内容,如果未能解决你的问题,请参考以下文章