Sql 一对一映射混淆

Sql 一对一映射混淆,sql,database,Sql,Database,为什么很多人是指一对一,而我确信他们是指多对一 例如,如果你有两张桌子 Inventory (InventoryID) Item (ItemID, InventoryFK) 据我所知,这里没有一对一的映射。这是“多个项目到一个库存” 现在,让我们假设每个库存只有一个项目。在这种情况下,我的同事会开始称之为“一对一”。我指出这仍然是一种多对一的关系,对吗?当我试图向他们解释这一点时,他们似乎并不理解 我认为适当的一对一映射应该是这样的: Person (Column: PersonID,

为什么很多人是指一对一,而我确信他们是指多对一

例如,如果你有两张桌子

Inventory (InventoryID)    
Item (ItemID, InventoryFK)
据我所知,这里没有一对一的映射。这是“多个项目到一个库存”

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

我认为适当的一对一映射应该是这样的:

Person (Column: PersonID, Name)
PersonAddress (Column: PersonID, StreetName, StreetNumber)
这里有两张桌子,共享完全相同的主键


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

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


Chris Date在他的论文中对情况做了非常透彻的分析。

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


Chris Date在他的论文中对这种情况进行了非常透彻的分析。

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

一对多

对象(objectId)对象特性(charId、objectId)

一对一


表格的顺序并不重要:

丈夫(丈夫ID)妻子(妻子ID,丈夫ID)+对丈夫ID的唯一约束

注意:一对多关系也是顺序方式中的一对一关系。ObjectCharacteristics只有一个对象


但是您是对的关系是一个概念,它不取决于数据库中的特定数据,而只取决于数据库的结构。

一对多和一对一关系的实现方式略有不同

一对多

对象(objectId)对象特性(charId、objectId)

一对一


表格的顺序并不重要:

丈夫(丈夫ID)妻子(妻子ID,丈夫ID)+对丈夫ID的唯一约束

注意:一对多关系也是顺序方式中的一对一关系。ObjectCharacteristics只有一个对象


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

我不知道有人滥用这个术语。顺便说一句,要称呼的人也可能是一对多的关系。在极少数情况下,人们可能有多个地址。实际上,地址对人甚至可能是多对一,甚至是多对多,任何与其他十二个讨厌的懒汉共享数据的学生都可以证明:-)如果你在
InventoryFK
中添加一个唯一的约束,你就会有一对一的关系。。。仅仅因为有外键,它并不自动意味着你有一对多的关系。在我看来,您将“数据模型”(元素之间的相互关系)与“数据库模型”(数据库的实现)混为一谈@PleasedOntAttery:如果您添加所描述的唯一约束,您将拥有一对零或一的关系。@OdayWhen,在这种情况下,第二个例子也是一对零或一=PI不知道人们正在滥用这个术语。顺便说一句,要称呼的人也可能是一对多的关系。在极少数情况下,人们可能有多个地址。实际上,地址对人甚至可能是多对一,甚至是多对多,任何与其他十二个讨厌的懒汉共享数据的学生都可以证明:-)如果你在
InventoryFK
中添加一个唯一的约束,你就会有一对一的关系。。。仅仅因为有外键,它并不自动意味着你有一对多的关系。在我看来,您将“数据模型”(元素之间的相互关系)与“数据库模型”(数据库的实现)混为一谈@PleasedOntAttery:如果您添加所描述的唯一约束,您将拥有一对零或一的关系。@OdayWhen,在这种情况下,第二个示例也是一对零或一=一。ObjectCharacteristics只有一个对象,每个对象最多有一个ObjectCharacteristics,因此关系不是一对一,而是一对零或一。“表的顺序不重要”是错误陈述:请参见上面说明方向为何重要的注释。每个ObjectCharacteristics正好有一个对象,每个对象最多有一个ObjectCharacteristics,因此关系不是一对一,而是一对零或一。“表的顺序不重要”这是一个错误陈述:请参见上面的注释,说明为什么方向很重要。