外键约束补充说明

外键约束补充说明

外键约束详解及术语释疑 参见:https://blog.csdn.net/cnds123/article/details/39827049

关系型数据库表之间的联系[关系] 参见 https://blog.csdn.net/cnds123/article/details/116276167

关系模型中关系的完整性约束 参见 https://blog.csdn.net/cnds123/article/details/114336832

 

引用完整性约束(外键约束)可以定义修改编辑(INSERT、DELETE、UPDATE操作)记录规则。

在创建表时(通过 CREATE TABLE 语句),或者在表创建之后(通过 ALTER TABLE 语句)在外键约束中使用{ON DELETE | ON UPDATE } { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ,可以定义修改记录规则。

 

外键约束简化版语法

[ADD CONSTRAINT 外键约束名]

FOREIGN KEY(外键列名) REFERENCES 主表(主表的主键列名)] 

[{ON DELETE | ON UPDATE } { NO ACTION | CASCADE | SET NULL | SET DEFAULT }]

 

建立外键约束后,DBMS将执行参照完整性检查和违约处理:

外键约束对子表的作用:

在子表上进行INSERT、UPDATE 操作的限制是,要和主表中的主键值匹配,或为NULL,否则不允许。

外键约束对父表的作用:

在父表上进行UPDATE、DELETE操作的限制,取决于在定义子表的外键时指定的ON UPDATE、ON DELETE子句。

 

ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT },若没有指定ON DELETE子句,默认拒绝执行(NO ACTION)。

ON UPDATE { NO ACTION | CASCADE | SET NULL | SET DEFAULT },若没有指定ON UPDATE子句,默认拒绝执行(NO ACTION)。

顺便指出,不同的DBMS支持的情况不尽相同。

 

ON DELETE子句各选项的作用:

①NO ACTION :删除主表记录,如果子表中有和主表匹配的记录,则不允许(产生一个错误提示)。

②CASCADE (级联):删除主表记录,也将删除子表中的匹配记录。

③SET NULL :删除主表记录,将子表中的匹配记录的外键值改为NULL。

④SET DEFAULT :删除主表记录,将子表中的匹配记录的外键值改为默认值。

 

ON UPDATE子句各选项的作用:

①NO ACTION :更新主表记录的主键值,如果子表中有和主表匹配的记录,则不允许(产生一个错误提示)。

②CASCADE :更新主表记录的主键值,子表中的匹配记录的外键值一起修改。

③SET NULL :更新主表记录的主键值,子表中的匹配记录的外键值改为NULL。

④SET DEFAULT :更新主表记录的主键值,子表中的匹配记录的外键值改为默认值。

 

外键约束通过主键(它所在的表即主表)和外键(它所在的表即子表)实现的,本文将主键值和外键值相等的记录称为匹配记录(或关联记录)。

 

参照完整性属于表间规则。对于相关的表,在更新、插入或删除记录时,如果只改其一不改其二,就可能影响数据的完整性:例如,删除父表的某记录后,子表的相应记录未删除,致使这些记录成为孤立记录;修改父表中对应列的值后,子表对应列的值未做相应改变;对于子表插入的记录,父表中没有对应列的值的记录;更改子表的外键值,父表中没有对应列的值的记录。

 

☆使用级联引用完整性约束例子

建立主表

CREATE TABLE Countries

  (CountryId INT PRIMARY KEY,

   CountryOutline char(30));

 

在从表中指定ON DELETE CASCADE

1、建立从表(子表)时指定ON DELETE CASCADE

CREATE TABLE Cities

   ( CityId INT PRIMARY KEY,

     CityOutline char(50),

    CountryId INT REFERENCES Countries(CountryId) ON DELETE CASCADE);

 

2、若建立从表时未指定ON DELETE CASCADE,可以用如下语句添加之

ALTER TABLE  Cities

   ADD CONSTRAINT fk_consName

   REFERENCES Countries(CountryId) ON DELETE CASCADE;

 

 

生成数据库结构HTML说明文档需要以下步骤: 1. 数据库信息:在文档的开头,介绍数据库的基本信息,包括名称、版本、开发人员等,以便读者了解文档的背景。 2. 表结构:按照数据库中的各个表,逐个说明其结构。可以按照以下格式展示: 表名称:表名称 字段列表: - 字段1:字段1的名称 - 字段类型 - 是否允许为空 - 默认值 - 说明 - 字段2:字段2的名称 - 字段类型 - 是否允许为空 - 默认值 - 说明 ... 主键主键字段名称 外键:外键字段名称 - 关联表名称 - 关联字段名称 索引:索引1名称 - 索引字段1,索引字段2... 索引2名称 - 索引字段... … 对于每个字段,需要说明其名称、类型、是否允许为空、默认值和说明等信息。同时,还需说明主键、外键和索引的相关信息。 3. 视图、存储过程和触发器:如果数据库中有视图、存储过程和触发器等对象,也需要在文档中进行说明,包括其名称、功能和用法,以便读者理解数据库的整体架构。 4. 关系图:可以在文档中插入数据库的关系图,将表之间的关系可视化展示,以便读者更直观地了解数据库结构。 5. 补充说明:对于一些特殊的设计、规范或注意事项,可以在文档的末尾进行补充说明,以便读者在使用数据库时能够遵循相关的规则和约束。 在生成数据库结构HTML说明文档时,需要注意准确、清晰、易读。通过详细的说明和可视化的展示,使读者能够全面了解数据库结构,并顺利进行数据库的开发和维护工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学习&实践爱好者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值