mysql的完整性约束_如何理解数据库中的完整性约束?

数据库的integrity (完整性)

数据库的integrity是为了防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据; 数据库的security是保护数据库,防止其被恶意破坏和非法存取;

这里解释一下什么是数据库的integrity:

首先明确:

数据库的完整性 = data correctness(数据正确性) + data compat-ability(数据相容性).

其次要知道数据库的完整性包括实体完整性,参照完整性和用户自定义完整性.

先说data correctness和data compat-ability:

例如如学生的学号必须唯一(unique),性别只能是男或女,这是指的是数据的正确性(Correctness)即指data是符合现实世界语义,反应当前实际状况的; 又如有一张选课表(table)中包括学号,课程号,分数三个字段,现在有个新转来的学生要选课, 打算用DDL向选课表中insert一行数据,('0010', '01', null), 但他的学号0010只是教务处提前告诉他的,教务处还没来得及录入他的信息至教务系统,那这个向选课表中的insert操作就不应该执行成功,因为不能允许一个''不存在''的学生选课,这就是数据的相容性(data compat-ability),即指数据库同一对象在不同关系表中的数据是符合逻辑的。

再说实体完整性,参照完整性和用户自定义完整性:

实体完整性就是一张表的主键/主码; 参照完整性就是定义外键; 用户定义的完整性就是用not null, unique, check短语修饰字段;

(怎么定义实体完整性呢,比如在create table中用 primary key修饰一个字段,这种属于在列级定义约束条件(Constraint),还有一种是在声明完字段后写,primary key(Sno),primary key(Sno, Cno)这种定义属于在表级定义约束条件。多属性构成的码(码就是候选码的意思)只有一种说明方法,即定义表级约束条件;)

为了维护数据库的integrity,DBMS必须能实现如下功能:

1. 提供定义完整性约束条件的机制;

2.提供完整性检查的方法;

3.进行违约处理;

1. 怎么定义完整性约束(Integrity Constraint)条件?

如在create table的时候,你用unique, not null, primary key, 或者 foreign key去修饰某个字段,这就是Integrity Constraint, 也就是说一般Integrity Constraint都是相对某个字段/属性来说的,如性别字段只能为男或女,学号唯一,这都是完整性约束条件。

2. 什么是提供完整性检查的方法?

DBMS中检查data是否满足Integrity Constraint条件的机制称为完整性检查,一般在DML语句执行后开始检查,也可以在事务提交(transaction commit)时检查。检查这些操作执行后DB中的data是否违背了完整性约束条件。你可能好奇什么是transaction,这个将在后面中讲述.

3. 什么是进行违约处理?

进行完整性检查的时候,若DBMS发现用户的操作违背了完整性约束条件(Integrity Constraint),DBMS将采取一定的动作,如拒绝执行操作(no action)或cascade执行其他操作.

以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值