sql – 外键可以为空吗?
发布时间:2020-12-12 08:46:32 所属栏目:MsSql教程 来源:网络整理
导读:这个问题在这里已经有一个答案: Can a foreign key be NULL and/or duplicate?7个 在我们的数据库项目中,我们有一个具有主键和两个专用外键的表Sale:Vehicle_ID和Piece_ID.例如,如果我们出售车辆,我们需要Vehicle_ID作为外键,而不是Piece_ID.我们可以把NULL
这个问题在这里已经有一个答案:>
Can a foreign key be NULL and/or duplicate?7个
在我们的数据库项目中,我们有一个具有主键和两个专用外键的表Sale:Vehicle_ID和Piece_ID.例如,如果我们出售车辆,我们需要Vehicle_ID作为外键,而不是Piece_ID.我们可以把NULL放到Piece_ID,外键可以是空吗?还是有办法做这项工作? 谢谢. 解决方法主键的列(或列)必须不为空.无法通过NULL唯一标识记录.因此外键的引用端的ID列必须定义为NOT NULL.然而,外键密钥关系的合法设计决策是可选的,而通过使密钥的引用结束可选的方式来表示,这就是允许NULL. 在数据建模术语中,您所描述的是一个(排他)弧:“一个具有两个或多个外键的表,其中只有一个可以是非空”.在逻辑建模中,弧线是完全可以接受的,但有强烈的意见,有利于将它们实现为单独的表格.在您的场景中,这将是一个通用的销售表加上两个子类型表,“VehicleSaleand”PieceSale. 独立表实现的优点是: 更易于执行外键约束; 但是,优点并不是单向的.虽然很容易确保销售适用于VehicleSale或PieceSale,但不能同时适用,但执行销售必须具有子记录的规则实际上会变得非常好. 所以,普遍的建议是,排除弧是错误的,一般都是很好的建议.但这并不像有些人所说的那么清楚. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
热点阅读