什么是数据库的完整性约束条件?

什么是数据库的完整性约束条件?,第1张

数据库完整性(Database

Integrity)是指数据库中数据的正确性和相容性,其目的是防止垃圾数据的进出。数据库完整性由各种各样的完整性约束来保证,因此可以说数据库完整性设计就是数据库完整性约束的设计。加在数据库之上的语义约束条件就是数据库完整性约束条件。

完整性约束条件作用对象可以使关系、元组、列三种。

● 列约束主要是列的数据类型、取值范围、精度、排序等约束条件。

● 元组的约束是元组中各个字段间的联系的约束。

● 关系的约束是若干元组间、关系集合上以及关系之间的联系的约束。

 完整性约束条件涉及这三类对象,其状态可以是静态的,也可以是动态的。所谓静态约束是指数据库每一确定状态时的数据对象所应满足的约束条件。它是反映数据库状态合理性的约束,这是最重要的一类完整性约束。

 动态约束是指数据库从一种状态转变为另一种状态时,新、旧值之间所应满足的约束条件。

完整性约束条件可分为以下六类:

● 静态列级约束

● 静态元组约束

● 静态关系约束

● 动态列级约束

● 动态元组约束

● 动态关系约束

1.

静态列级约束是对一个列的取值域的说明,包括以下几个方面:

(1) 对数据类型的约束,包括数据的类型、长度、单位、精度等;

(2) 对数据格式的约束。例如规定日期的格式为YYYY-MM-DD;

(3) 对取值范围或取值集合的约束。例如规定学生的成绩取值范围为0~100;

(4) 对空值的约束,规定哪些列可以为空值,哪些列不能为空值;

2.

静态元组约束就是规定元组的各个列之间的约束关系。例如,订货关系中包含发货量、订货量等列,规定发货量不得超过订货量。

3.

静态关系约束是指在一个关系的各个元组之间或者若干关系之间存在的约束。常见的静态约束有:

(1) 实体完整性约束;

(2) 引用完整性约束;

(3) 函数依赖约束;大部分函数依赖约束都在关系模式中定义

(4) 统计约束;即字段值与关系中多个元组的统计值之间的约束关系。例如,规定部门经理的工资不得高于本部门职工平均工资的5倍,不得低于本部门职工平均工资的2倍。

4.

动态列级约束是修改列定义或列值时应满足的约束条件,包括下面两方面:

(1) 修改列定义时的约束。例如,将允许空值的列改为不允许空值时,如果该列目前已存在空值,则拒绝这种修改。

(2) 修改列值时的约束。修改列值时有时需要参照其旧值,并且新旧值之间需要满足某种约束条件。例如,职工调整后的工资不得低于其调整前的原来工资;职工婚姻状态的变化只能是由未婚到已婚、已婚到离异、离异到再婚等几种情况。

5.

动态元组约束是指修改元组的值时元组中各个字段间需要满足某种约束条件。例如,职工工资调整时新工资不得低于原工资+工龄*1.5等。

6.

动态关系约束是加在关系变化前后状态上的限制条件。例如,在集成电路芯片设计数据库中,一个设计中用到的所有单元的工艺必相同,因此,在更新某个设计单元时,设计单元的新老工艺必须保持一致。

可分为三种类型:与表有关的约束、域(Domain)约束、断言(Assertion)。

1、与表有关的约束:是表中定义的一种约束。可在列定义时定义该约束,此时称为列约束,也可以在表定义时定义约束,此时称为表约束。包括列约束(表约束+NOTNULL)和表约束(PRIMARYKEY、foreignkey、check、UNIQUE)。

2、域(Domain)约束:在域定义中被定义的一种约束,它与在特定域中定义的任何列都有关系。

3、断言(Assertion):在断言定义时定义的一种约束,它可以与一个或多个表进行关联。不必与特定的列绑定,可以理解为能应用于多个表的check约束,因此必须在表定义之外独立创建断言。

扩展资料:

完整性约束中包含四个完整性,即域完整性,实体完整性、参照完整性和用户定义完整性。

1、域完整性为保证数据库字段取值的合理性。属性值应是域中的值,这是关系模式规定了的。除此之外,一个属性能否为NULL,这是由语义决定的,也是域完整性约束的主要内容。

2、实体完整性,指关系的主关键字不能重复也不能取“空值"。一个关系对应现实世界中一个实体集。现实世界中的实体是可以相互区分、识别的,也即它们应具有某种惟一性标识。

3、参照完整性,定义建立关系之间联系的主关键字与外部关键字引用的约束条件。关系数据库中通常都包含多个存在相互联系的关系,关系与关系之间的联系是通过公共属性来实现的。

4、用户定义完整性,则是根据应用环境的要求和实际的需要,对某一具体应用所涉及的数据提出约束性条件。

参考资料来源:百度百科-数据完整性约束

完整性:

1、实体完整性

2、参照完整性

3、用户定义的完整性

五个约束:

(1) not null(非空)约束

(2) unique(惟一)约束

(3) primary key(主键)约束

(4) foreign key(外键)约束

(5) check(校验)约束

不知道你要问的可是这五个


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9678136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存