我的数据库中有三个表。
-
医疗测试[MedicalTestID PK]
-
运动测试【运动测试IDPK】
-
一般需求【通用需求ID PK】
Inside GeneralNeeds
有ProcessID
需要保留哪些MedicalTestID
and SportTestID
GUID.
一旦我从任一表中插入现有的 GUID,我就会收到“冲突”错误消息,我相信这意味着给定的 GUID 在另一个表中不存在。
例如:如果我插入 GUIDMedicalTest
然后它会告诉我SportTest
没有给定的 GUID。
是否可以将多个键引用到一列?
我在这里推荐的设计是表/子表解决方案。这意味着,引入第四个表,Test
. The Test
表只是将所有不同的测试类型链接在一起的表格。如果您熟悉面向对象编程,请将其视为基本类型。所以本质上,你的ProcessID
指着Test
然后指向特定测试类型之一(SportsTest、MedicalTest、WhateverTest)。如果您愿意,您还可以添加Type
in the Test
表可帮助您了解测试类型。这里有一个关键的事情:MedicalTest
and SportsTest
表,主键(比如MedicalTestID
) 也是一个外键,指向TestID
in Test
。通过这种方式,您可以在您的GeneralNeeds
因为引用的是单个表类型,Test
. Since Test
以及相应的MedicalTest
or SportsTest
将具有相同的主键,您可以轻松地执行查询所需的联接。
Here is a sample diagram illustrating it:
简单的例子:
假设你有一个MedicalTest
ID 为 1(让我们暂时忘记 GUID,以便于阅读)
然后你也会有一个记录Test
ID 为 1。
然后ProcessID
1 确实指向Test
记录下来,然后您可以加入到MedicalTest
record.
如果您仍然感到困惑,请告诉我,我会尝试添加更多细节,但希望这能让您朝着可行的方向前进。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)