我正在努力了解这些关系。正如我下面所示,它是否正确:
1)我会有一个1:0..1通过简单地使父级的身份密钥也是子级的身份密钥来建立关系?
2)为了做到这一点1:1,我在父表中添加一个FK,连接两个Identity列?
这就是全部内容了吗?如果我的措辞不准确/正确,请纠正我。
1:0..1
Customer(ID {PK,身份},姓名)
客户地址(客户 ID {PK、FK、身份}、街道名称)
FK_客户地址_客户(客户 ID、ID)
1:1
Customer(Id {PK,FK,身份},姓名)
FK_客户_客户地址(ID,客户ID)
客户地址(客户 ID {PK、FK、身份}、街道名称)
FK_客户地址_客户(客户 ID、ID)
EDIT1:
我相信以上都是错误的,解决方案是这样的:(?)
1:0..1
Customer(Id {PK,身份}, Name)
客户地址(客户ID{PK、FK、独特}, 街道名称)
FK_客户地址_客户(客户 ID、ID)
两个表之间的 1:1 关系意味着每个表中的每个元组恰好映射到另一个表中的一个元组。这更正式地称为双射。这是 SQL 的一个限制,对于大多数实际用途来说,双射实际上不可能在 SQL 数据库中实现。这是因为 SQL 要求单独更新每个表,因此除非您暂时禁用其中一个约束,否则无法更新两个这样的表。
1:0/1 关系也称为投影(您的第一个示例)。满射是 SQL 样式“FOREIGN KEY”约束的标准行为,假设不允许使用空值。约束在关系的一侧始终是可选的。
注意:IDENTITY 属性与您的示例无关。定义关系的是键和外键约束。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)