【发布时间】:2018-05-21 23:04:43
【问题描述】:
我在以下数据模型中有多个一对一关系:
- 登录和帐户
- 捐助者和账户
- 患者和账户
SQL Server Blood Bank data model
我在更改数据库时遇到了麻烦,主要是由 一对一关系 相关的 FK 引起的,仅在 PK 之间进行.
我最好的猜测是,我所有的麻烦都是由糟糕的设计造成的。如何摆脱一对一的依赖关系?
可以进行任何更改..
【问题讨论】:
-
这个设计在我看来并没有错或不好。而是非常正确和好的。似乎
accounts模拟了一个弱实体(这是有道理的)。 PK 和 FK 在这里应该是一样的。 -
对我来说似乎也是正确的,您到底遇到了什么问题?
-
我觉得由于accounts表使用一对一的关系绑定到3个不同的表,所以耦合度太高了。例如,当我尝试在患者表中插入一个新行时,NOT 已经有一个帐户 exactly 在 PK上具有相同的索引>,然后我得到 没有更新行。错误消息:INSERT 语句与 FOREIGN KEY 约束“FKpatientsaccounts”冲突。
-
所有来自一对一依赖关系的表的 PK 都设置为自动递增。我无法避免两个 不同 PK 值通过一对一依赖关系连接的情况。假设创建了一个捐助者,捐助者 ID = 3。将生成一个帐户,其 accound_id = 3。现在,如果我想添加一个有 patient_id = 3 的患者,则该帐户 id 已被占用。
标签: sql sql-server dependencies relationship one-to-one