站长网 MsSql教程 sql-server – 为什么表使用其主键作为自身的外键

sql-server – 为什么表使用其主键作为自身的外键

通过查看数据库,我遇到了一个使用其主键作为自身外键的表. 我已经看到一个表可以有一个外键来构建一个层次结构,但是它会使用另一个列来引用主键. 由于主键是唯一的,在这种情况下行不能仅指向自身吗?这似乎是一个同义反复的联系,因为如果我已经有了这一行,

通过查看数据库,我遇到了一个使用其主键作为自身外键的表.

我已经看到一个表可以有一个外键来构建一个层次结构,但是它会使用另一个列来引用主键.

由于主键是唯一的,在这种情况下行不能仅指向自身吗?这似乎是一个同义反复的联系,因为如果我已经有了这一行,那么我已经有了这一行.

这有什么理由可以吗?

我确信约束是以这种方式编写的(不仅仅是查看图表),因为同一个表和列用于定义的两半.

解决方法

像你说的.引用同一表的FOREIGN KEY约束通常用于层次结构,它将使用另一列来引用主键.一个很好的例子是员工表:

EmployeeId    Int     Primary Key
EmployeeName  String
ManagerId     Int     Foreign key going back to the EmployeeId

所以在这种情况下,表中有一个外键返回自身.所有经理都是员工,因此ManagerId实际上是经理的EmployeeId.

另一方面,如果你的意思是有人使用EmployeeId作为外键返回到Employee表,那么这可能是一个错误.我确实进行了一次测试,这是可能的,但它没有任何实际用途.

CREATE TABLE Employee (EmployeeId Int PRIMARY KEY,EmployeeName varchar(50),ManagerId Int);


ALTER TABLE Employee ADD CONSTRAINT fk_employee 
    FOREIGN KEY (EmployeeId) REFERENCES Employee(EmployeeId);

本文来自网络,不代表站长网立场,转载请注明出处:https://www.tzzz.com.cn/html/jc/mssql/2021/0524/6066.html

作者: dawei

【声明】:站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。
联系我们

联系我们

0577-28828765

在线咨询: QQ交谈

邮箱: xwei067@foxmail.com

工作时间:周一至周五,9:00-17:30,节假日休息

返回顶部