-1

我有一个具有 5 个 1:1 关系的数据库。我有一个名为 SoftwareVersion 的表。每个 SoftwareVersion 都有 5 个认证阶段。所有 5 个阶段的 PhaseStatus 名称都相同。我无法使用一个 PhaseStatus 表和 SoftwareVersion 表中的一个 Ph0Status、Ph1Status 等字段来强制执行参照完整性。所以我建立了5个连接表。现在我有 5 个 1:1 的关系。每个 SoftwareVersion 都有多个具有状态的阶段,但每个软件版本只有一个阶段 0 状态。这是合法 1:1 关系的一个很好的例子,还是有更好的方法来建立这种关系?

4

1 回答 1

0

每个 SoftwareVersion 都有多个具有状态的阶段,但每个软件版本只有一个阶段 0 状态。

我认为您的意思是每个 SoftwareVersion 都有许多阶段,并且每个阶段一次有一个或多个可能的状态。

如果是这样,据我所知,您只需要两张桌子。您需要一个包含 {phase,status} 的所有允许组合的 PhaseStatus 表。使用对该表的 FK 引用作为约束,以确保任何给定阶段中的软件版本都具有有效状态。您可能还需要枚举阶段和状态域的表,以防它们具有其他有趣的属性,例如描述或时间限制。

于 2020-03-16T17:06:10.183 回答