gpt4 book ai didi

c# - 数据库关系 1 :1 vs 1:0. .1

转载 作者:搜寻专家 更新时间:2023-10-30 19:58:28 25 4
gpt4 key购买 nike

我正在尝试了解这些关系。正如我在下面显示的那样是否正确:

1) 我将通过简单地使 parent 的身份 key 也成为 child 的身份 key 来建立1:0..1 关系?

2) 为了使其1:1,我在父表中添加一个FK,连接两个标识列?

仅此而已吗?如果我的措辞不准确/不正确,请纠正我。

1:0..1

客户(ID {PK, Identity}, 姓名)

CustomerAddress(CustomerId {PK, FK, Identity}, StreetName)

FK_CustomerAddress_Customer(CustomerId, Id)

1:1

客户(ID {PK, FK, Identity}, Name)

FK_Customer_CustomerAddress(Id,CustomerId)

CustomerAddress(CustomerId {PK, FK, Identity}, Streetname)

FK_CustomerAddress_Costumer(CustomerId, Id)


编辑 1:

我相信以上都是错误的,解决方案是这样的:(?)

1:0..1

客户(ID {PK, Identity}, Name)

CustomerAddress(CustomerId {PK, FK, UNIQUE}, StreetName)

FK_CustomerAddress_Customer(CustomerId, Id)

最佳答案

两个表之间的 1:1 关系意味着每个表中的每个元组恰好映射到另一个表中的一个元组。这更正式地称为双射。这是 SQL 的局限性,对于大多数实际用途,双射实际上不可能在 SQL 数据库中实现。这是因为 SQL 要求单独更新每个表,因此除非您暂时禁用其中一个约束,否则无法更新两个这样的表。

1:0/1 关系也称为满射(您的第一个示例)。 Surjection 是 SQL 样式“FOREIGN KEY”约束的标准行为,假设不允许空值。约束在关系的一侧始终是可选的。

注意:IDENTITY 属性与您的示例无关。定义关系的是键和外键约束。

关于c# - 数据库关系 1 :1 vs 1:0. .1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4748150/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com