一对一的映射混淆

时间:2011-09-22 09:12:10

标签: sql database

为什么当我确定他们指的是多对一时,很多人都指的是一对一?

例如,如果你有两个表;

Inventory (InventoryID)    
Item (ItemID, InventoryFK)

据我所知,这里没有一对一的映射。这是“一个库存的许多项目”。

现在,我们假设每个广告资源只有一个项。在这种情况下,我的同事们会开始称之为“一对一”。我指出它是仍然多对一的关系吗?当我试图向他们解释时,他们似乎并不理解。

我认为正确的一对一映射是这样的:

Person (Column: PersonID, Name)
PersonAddress (Column: PersonID, StreetName, StreetNumber)

这里你有两张桌子,分享完全相同的PK。

假设我的假设是正确的,为什么有这么多人滥用“一对一”一词呢?

2 个答案:

答案 0 :(得分:4)

一对多和一对一的关系以稍微不同的方式实现。

1对许多

Object(objectId)ObjectCharacteristics(charId,objectId)

1对一个

表的顺序并不重要:

丈夫(丈夫)妻子(wifeId,丈夫)+对丈夫的独特约束

N.B。一对多关系也是订单方式中的一对一关系。 ObjectCharacteristics只有一个对象。

但你是对的,这种关系是一个概念,它不依赖于数据库中的特定数据,而只依赖于它的结构。

答案 1 :(得分:1)

我同意这些术语被滥用。但我们谁不是有罪?在不知道所涉及的约束的情况下,您认为是一对一关系的示例可能是一对一或零关系(提示:外键的存在并不意味着实际存在引用值)。

Chris Date在他的论文All for One, One for All中对这种情况进行了非常彻底的分析。