假设我们有两个表客户和车辆有一至多个关系。车辆作为中它这样子表的外键都有客户 id。但问题是,为什么我不能有 VEHICLEID,作为到客户表中的外键。我知道它不是正确的方法,但我需要知道更详细和中深度原因它不正确

2014-12-31 00:00:00
问题评论:

回答:

可以而且它是建模的一对多关系的某个子元素是"特殊"的常用方法。

通过选择某个 FKs 空性质,或 (如果所使用的 DBMS 支持延迟的约束) 推迟到事务结束其强制解决产生循环依赖项 (和鸡和蛋的问题插入新数据时)。

感谢您的回答。我只是想另一种意见,并高兴地知道我该解决方案的想法"错误"的不是 considred,它是仅仅是更好的办法的更加简洁的设计避免使用"特殊"情况。

因为您将能够添加...像一个交通工具 id 的每个客户只有一个汽车行...一行 = 表中的一位客户 !

并且,您第一个外键 does 外键的所有作业。不需要反向其它外键 !2 跨外键将插入一个创建两个表中不可能...

嗯变得不可能插入有关参数进行了很多有意义的但怎么办我都添加到客户表的外键,并使其可以为 null。

可以您只需了解表之间的关系的类型。它是 1-1?1 多吗?多多?一个客户可以只有一个交通工具,或者它们可以有多个?如果一个客户可以有多个车辆,则具有一对多关系当您描述。

另一方面,与一种载体 FK 客户表中,然后你所说每个车辆都可以有多个客户,可能不符合您的要求。

也可能是多多关系,其中一个客户可以有多个车辆,每辆汽车可以与多个客户。在这种情况下,您需要与 FKs (一个客户 Id、 一个 vehicleID) 对 customerVehicle 表


在响应您的注释,您真正需要解释您的需求,或者您尝试。您可以实现您的密钥需要,部署后将失败如果您并不做你需要做。

可以始终表示一对一关系通过一个表中,因此如果这是您的要求,具有某个客户只有一个拖车的任何其他客户可以有,不需要相关的车辆表根本。可以到客户表移动车辆表的所有字段。

还行。因此如果我添加到客户表的外键和实现它的唯一约束吗?引发另一个问题,我们如何实施一对一的关系,如果我们可以实施一个记录 par 表然后为什么我们不能添加到父表 (客户) 的外键 (VEHICLEID) 并实施 uniqness。

请输入您的翻译

Database Table Relationships having foreing keys in both child and parent table

确认取消