关于1:1关系的困惑

Alf*_*nes 7 sql database-design

我一直在学习数据库设计,我对1:1的关系感到困惑.根据我的理解,您只需将列添加到相应的表中即可.有人可以提供一个真实世界的例子,说明1:1关系是必要的,还是提供了一些重要的好处?即,我将在哪里使用1:1的关系,它会是什么样子?

Joe*_*orn 6

我会给你一个真实的例子.

在医疗账单领域,希望通过医疗保险获得报酬的医生通过为患者每次就诊创建听写报告来处理账单.这可能实际上是由秘书转录的录音音频听写,但更多时候它只是对他们所做的事情的书面描述以及与患者的谈话,以及历史,印象等等.然后,有执照的医疗编码人员将阅读此口述并决定允许医生开具的费用.

与听写分开,有关于患者的人口统计信息:姓名,年龄,账单地址等.这些信息必须严格地与有关听写的信息分开,以防止编码员允许偏见来掩盖其账单判断或违反患者隐私.

这些数据通常在原点的数据系统中以1:多关系保持良好的标准化,并且只有正确的部分在正确的时间显示给正确的人.但是,大量办事处将其计费功能外包给第三方.例如,这样一家小诊所就不必将持牌医疗编码人员留在工作人员身上; 计费办公室的一名程序员可以满足许多诊所的需求.当数据从诊所发送到计费办公室时,患者的人口统计信息和口述需要作为单独的部分进行,可能在不同的时间.此时,它们可能存储在具有1:1关系的完全独立的表中,并且共享ID字段可以在以后匹配它们.

在这种情况下,1:1关系与数据模型几乎没有关系.您可能在导入时匹配记录,并且随着账单在系统中移动,最终在诊所的人口统计记录中收到的省级患者信息将与真人匹配,因此可以恢复1:多关系.否则,每次访问医生时,您都会在单独的帐户上单独声明.

相反,它几乎与系统设计有关.在我们想象的计费服务中,可能完全不同的人构建和使用计费部分与编码部分.通过这种方式,每一方都可以完全控制自己的领域,而且你确信没有人,甚至是开发人员都没有违反任何隐私规则.


ric*_*ard 5

在现实世界中很少发生真正的一对一关系.通常会创建这种类型的关系以绕过数据库管理软件的某些限制,而不是模拟真实情况.在Microsoft Access中,由于安全性或性能问题或每个表限制255列,您必须将表拆分为两个或多个表时,数据库中可能需要一对一关系.例如,您可以将大部分患者信息保留在tblPatient中,但在tblConfidential中放置特别敏感的信息(例如,患者姓名,社会安全号码和地址)(参见图3).访问tblConfidential中的信息可能比tblPatient更受限制.作为第二个示例,您可能需要定期将大表的一部分传输到其他应用程序.您可以将表拆分为已传输和未传输的部分,并以一对一的关系将它们连接起来.

这是从这里引用的:关系数据库设计的基础知识

这是关于SO 的类似问题.

我可以看到使用1:1(过去我曾经使用过它)的另一个原因是,如果你有一个包含大量列的表,并且只有少数几个涉及非常密集和频繁的查询,需要要快,我会把它分成两个相关的表1:1我可以查询轻量级表并获得良好的性能,但仍然可以通过简单的连接轻松地与其相关的其他数据.