FOREIGNKEY约束

上传人:人*** 文档编号:505523056 上传时间:2022-11-09 格式:DOC 页数:5 大小:72KB
返回 下载 相关 举报
FOREIGNKEY约束_第1页
第1页 / 共5页
FOREIGNKEY约束_第2页
第2页 / 共5页
FOREIGNKEY约束_第3页
第3页 / 共5页
FOREIGNKEY约束_第4页
第4页 / 共5页
FOREIGNKEY约束_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《FOREIGNKEY约束》由会员分享,可在线阅读,更多相关《FOREIGNKEY约束(5页珍藏版)》请在金锄头文库上搜索。

1、FOREIGNKEY约束外键(FK)是用于建立和加强两个表数据之间的链接的一列或多列。当创建或修改表时可通过定义FOREIGNKEY约束来创建外键。在外键引用中,当一个表的列被引用作为另一个表的主键值的列时,就在两表之间创建了链接。这个列就成为第二个表的外键。例如,因为销售订单和销售人员之间存在一种逻辑关系,所以AdventureWorks数据库中的Sales.SalesOrderHeader表含有一个指向Sales.SalesPerson表的链接。SalesOrderHeader表中的SalesPersonID列与Salesperson表中的主键列相对应。SalesOrderHeader表中

2、的SalesPersonID列是指向SalesPerson表的外键。Salesperson(Sales)SalesCrderHeader(Sales)SalesPersonlDSafesOrcferJDTerriborjrlDRevlsionblumberSalesQuotaOrdertiafteBonusDiDsDsteCommlssierctShqpDateSaleYTDStatusSialestsstY-arONin&Order冋*growgoldSafesOrcterNumberMndifiedDatePurchrdrNurnberAceountNumberCustomerIDCcnt

3、MtlD才rSafesPersonID/TesritorylDBIIIToAddelDShpTcAddressJDS闻隔出XIDCrdiLCdlCCrediteddApprovalCodeCirirencyRateDDSiibTotalTaxAmtFreightTatalDue匚cwnmntroigijidModifkdDateFOREIGNKEY约束并不仅仅可以与另一表的PRIMARYKEY约束相链接,它还可以定义为引用另一表的UNIQUE约束。FOREIGNKEY约束可以包含空值,但是,如果任何组合FOREIGNKEY约束的列包含空值,则将跳过组成FOREIGNKEY约束的所有值的验证。若

4、要确保验证了组合FOREIGNKEY约束的所有值,请将所有参与列指定为NOTNULL。FOREIGNKEY约束可以引用同一数据库的表中的列或同一表中的列。这些称为自引用表。例如,请考虑包含三列的一个雇员表:employee_number、employee_name和manager_employee_number。由于经理本身也是雇员,所以从manager_employee_number歹U至Uemployee_number列存在外键关系。引用完整性tl尽管FOREIGNKEY约束的主要目的是控制可以存储在外键表中的数据,但它还可以控制对主键表中数据的更改。例如,如果在Sales.SalesPe

5、rson表中删除一个销售人员行,而这个销售人员的ID由Sales.SalesOrderHeader表中的销售订单使用,则这两个表之间关联的完整性将被破坏;SalesOrderHeader表中删除的销售人员的销售订单因为与SalesPerson表中的数据没有链接而变得孤立了。FOREIGNKEY约束防止这种情况的发生。如果主键表中数据的更改使之与外键表中数据的链接失效,则这种更改将无法实现,从而确保了引用完整性。如果试图删除主键表中的行或更改主键值,而该主键值与另一个表的FOREIGNKEY约束中的值相对应,则该操作将失败。若要成功更改或删除FOREIGNKEY约束的行,必须先在外键表中删除或更

6、改外键数据,这将把外键链接至不同的主键数据上去。对FOREIGNKEY约束建立索引曰由于以下原因,对外键创建索引通常是有用的: 对PRIMARYKEY约束的更改可由相关表中的FOREIGNKEY约束检查。 当在查询中组合相关表中的数据时,经常在联接条件中使用外键列,方法是将一个表的FOREIGNKEY约束中的列与另一个表中的主键列或唯一键列匹配。索引使数据库引擎可以在外键表中快速查找相关数据。但是,创建此索引并不是必需的。即使没有对两个相关表定义PRIMARYKEY或FOREIGNKEY约束,也可以对来自这两个表中的数据进行组合,但两个表间的外键关系说明已用其键作为条件对其进行了优化,以便组合到查询中。有关在联接中使用FOREIGNKEY约束的详细信息,请参阅联接基础知识和查询类型和索引。表中的FOREIGNKEY约束数1=1SQLServer对一个表可以包含的FOREIGNKEY约束(引用其他表)数没有预定义限制,对引用特定表的其他表所拥有的FOREIGNKEY约束数也没有预定义的限制。但是,实际的FOREIGNKEY约束数会受到硬件配置以及数据库和应用程序的设计的限制。建议表中包含的FOREIGNKEY约束不要超过253个,并且引用该表的FOREIGNKEY约束也不要超过253个。在设计数据库和应用程序时应考虑强制FOREIGNKEY约束的开销。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号