【发布时间】:2011-06-12 11:59:33
【问题描述】:
我正在努力学习这些关系。如下所示是否正确:
1) 通过简单地将父母的身份密钥也作为孩子的身份密钥,我将拥有 1:0..1 关系?
2) 为了实现 1:1,我在父表中添加了一个 FK,连接两个 Identity 列?
这就是全部吗?如果我的措辞不准确/不正确,请纠正我。
1:0..1
客户(Id {PK,Identity},姓名)
客户地址(客户 ID {PK、FK、身份}、街道名称)
FK_CustomerAddress_Customer(CustomerId, Id)
1:1
客户(Id {PK, FK, Identity}, 姓名)
FK_Customer_CustomerAddress(Id,CustomerId)
客户地址(客户 ID {PK、FK、身份}、街道名称)
FK_CustomerAddress_Costumer(CustomerId, Id)
EDIT1:
我相信以上两个都是错误的,解决方案是这样的:(?)
1:0..1
客户(Id {PK,身份},姓名)
CustomerAddress(CustomerId {PK, FK, UNIQUE}, StreetName)
FK_CustomerAddress_Customer(CustomerId, Id)
【问题讨论】:
-
我想知道你的意思是
1:0..1(“一到零还是一”)。 -
是的,我的意思是,将编辑。
-
如果您的意思是客户而不是客户(设计服装的人),请修正您的表格和字段的拼写。并且 ID 对于身份字段来说是一个糟糕的选择。它会导致报告出现问题(报告不喜欢具有相同名称的多个列)并且在连接中很容易出错。请改用 tablenameId。
标签: c# sql sql-server database database-design