不管你用的是SQL Server 还是MySQL 它们都是关系型数据库,那么既然是关系型数据库就要遵守“关系型数据库的完整性规则”
关系型数据库提供了三类完整性规则,实体完整性规则,参照完整性规则,用户自定义完成性规则;
在这三类完成性规则中呢其中实体完整性规则和参照性完整性规则是关系模型必须满足的完整性的约束条件,称为关系完整性规则;
一:实体完整性规则
实体完整性规则是指关系的主属性(就是俗称主键的一些字段,主键的组成部分)不能为空值,我们知道现实生活中的每一个实体都具有唯一性,即使是两台一摸一样的计算机呢,都会有相应的生产日期来表示它们的唯一性,现实之中的实体是可以区分的,它们具有某种唯一性标识,相应的关系模型中以主键作为唯一性标识,主键中的属性即主属性不能是空值(“不知道”或“无意义”)的值,如果主属性为空值,就说明存在不可标识的实体,即存在不可区分的实体,这与现实的环境相矛盾,因此这个实体一定不是完整的实体;
实体完整性规则是指关系的主属性(就是俗称主键的一些字段,主键的组成部分)不能为空值,我们知道现实生活中的每一个实体都具有唯一性,即使是两台一摸一样的计算机呢,都会有相应的生产日期来表示它们的唯一性,现实之中的实体是可以区分的,它们具有某种唯一性标识,相应的关系模型中以主键作为唯一性标识,主键中的属性即主属性不能是空值(“不知道”或“无意义”)的值,如果主属性为空值,就说明存在不可标识的实体,即存在不可区分的实体,这与现实的环境相矛盾,因此这个实体一定不是完整的实体;
可能你看这段教条很枯燥,甚至有些不明白,这样理解就简单了:咱们设计表的时候不是每条记录前面都有个自己的ID吗,并且每个ID不一样,它其实就是为了区分每条记录的不一样,尽管你的其他字段的值都一样,只要ID不一样那么就是两条不一样的记录,就区分开了,就满足了实体完整性规则;
二:参照完整性规则
指如果关系的外键R1和关系R2的主键相符,那么外键的每个值必须在关系R2中主键的值中可以找到或者是空值;
其实就是如果说在两个有关联的数据表中,一个数据表的外键(Foreigon Key)一定在另一个数据表中的主键(Primary Key)中可以找到;咱们先看图说话 大家先看一下图一和图二,一张是角色表(Role),一张是用户表(User),你们会发现在用户User表里的每一个字段Role_ID的值都可以在Role表中的Role_ID字段中找到对吧;在看第三张图也就是图三,图三的最后一条记录中Role_ID的值为“7”在图一的Role表里的Role_ID里是找不到的,所以说图三不符合参照完整性规则;
其实就是如果说在两个有关联的数据表中,一个数据表的外键(Foreigon Key)一定在另一个数据表中的主键(Primary Key)中可以找到;咱们先看图说话 大家先看一下图一和图二,一张是角色表(Role),一张是用户表(User),你们会发现在用户User表里的每一个字段Role_ID的值都可以在Role表中的Role_ID字段中找到对吧;在看第三张图也就是图三,图三的最后一条记录中Role_ID的值为“7”在图一的Role表里的Role_ID里是找不到的,所以说图三不符合参照完整性规则;
(图一)
(图二)
(图三)
三:用户自定义的完整性规则
三:用户自定义的完整性规则
是指某一具体的实际数据库的约束条件,由应用环境所决定,反映某一具体应用所涉及的数据必须满足的要求(比如说一个人的年龄必须要大于零),根据现实生活中的一个实际情况用户定义的一个用户自定义完整性;
比如你在设计表的时候有个年龄字段,那么这个字段里的值不能小于0吧,不能大于150吧,还没人能活到150岁对吧。