gpt4 book ai didi

sql-server - 将一个外键引用到 SQL Server 2014 中的多个主键

转载 作者:行者123 更新时间:2023-12-01 00:23:18 26 4
gpt4 key购买 nike

我的数据库中有三个表。

  1. MedicalTest [MedicalTestID PK]
  2. 运动测试 [SportTestID PK]
  3. GeneralNeeds [GeneralNeedsID PK]

enter image description here

GeneralNeeds中有ProcessID需要保留MedicalTestIDSportTestID GUID。

一旦我从任一表中插入一个现有的 GUID,我就会收到“冲突”错误消息,我认为这意味着给定的 GUID 在另一个表中不存在。

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

enter image description here

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

enter image description here

最佳答案

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

这是一个示例图来说明它:DB Diagram

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

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

关于sql-server - 将一个外键引用到 SQL Server 2014 中的多个主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32429732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com