繁体   English   中英

在SQL Server 2014中将一个外键引用到多个主键

[英]Reference one foreign key to multiple primary keys in SQL Server 2014

我的数据库中有三个表。

  1. MedicalTest [MedicalTestID PK]
  2. SportTest [SportTestID PK]
  3. GeneralNeeds [GeneralNeedsID PK]

在此输入图像描述

GeneralNeeds内部, ProcessID需要保留MedicalTestIDSportTestID GUID。

只要从任一表中插入现有GUID,我就会收到“Conflict”错误消息,我相信这意味着另一个表中不存在给定的GUID。

例如:如果我从MedicalTest插入GUID,那么它会告诉我SportTest没有给定的GUID。

在此输入图像描述

是否可以将多个键引用到一列?

在此输入图像描述

我在这里推荐的设计是表/子表解决方案。 这意味着,引入第4个表, Test Test表只是用作将所有不同测试类型链接在一起的表。 如果您熟悉面向对象编程,请将其视为基本类型。 基本上,你的ProcessID指向Test ,然后指向一个特定的测试类型(SportsTest,MedicalTest,WhateverTest)。 如果您愿意,还可以在Test表中包含一个Type ,以帮助您了解它是哪种类型的测试。 这里有一个关键的问题:在MedicalTestSportsTest表中,主键(比如MedicalTestID )也是一个指向Test TestID的外键。 通过这种方式,您可以在GeneralNeeds使用单个列,因为引用的是单个表类型Test 由于Test和相应的MedicalTestSportsTest具有相同的主键,因此您可以轻松地执行查询所需的连接。

以下是说明它的示例图: 数据库图

简单的例子:假设您有一个ID为1的MedicalTest (让我们忘记一分钟的GUID以使其更容易阅读)然后您还在Test有一个ID为1的记录。然后ProcessID为1真正指向在Test记录,然后您可以加入到MedicalTest记录。

如果您仍然感到困惑,请告诉我,我会尝试添加更多细节,但希望这会让您朝着有效的方向前进。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM