首页 > 技术文章 > 数据库---数据完整性

Yjiaw 2022-03-25 19:08 原文

 

数据库完整性

一、完整性约束条件的作用对象

1、完整性检查是围绕完整性约束条件进行的,因此,完整性约束条件是完整性控制机制的核心。完整性约束条件的作用对象可以是表、元组和列。

2、列级约束:列级约束主要是对列的类型、取值范围、精度等的约束,具体包括:

  • 对数据类型的约束: 包括数据类型、长度、精度等。
  • 对数据格式的约束: 如:规定学号的前两位表示学生的入学年份,第三位表示系的编号,第四位表示专业编号,第五位代表班的编号等等。
  • 对取值范围的约束: 如:学生的成绩取值范围为0~100。
  • 对空值的约束

3、元组约束:元组的约束是元组中各个字段之间的联系的约束

如:开始日期小于结束日期; 职工的最低工资不能低于规定的最低保障金。

4、关系约束

如:学号的取值不能重复也不能取空值;学生修课表中的学号的取值受学生表中的学号取值的约束

二、实现数据完整性

1、声明完整性

  • 在表定义时声明
  • 使用约束、缺省值(DEFAULT)等
  • 由SQL Server自动加以保证

2、过程完整性

  • 在客户端或服务器端用编程语言或工具实现
  • 在Server端用触发器(trigger)来实现

三、实现约束

 

1、PRIMARY KEY 约束:

1)保证实体完整性

2)每个表有且只有一个PRIMARY KEY 约束

3)格式:

ALTER TABLE 表名

ADD [ CONSTAINT 约束名 ]

PRIMARY KEY ( 列名)

4)例:对雇员表和工作表分别添加主码约束。

ALTER TABLE 雇员表

ADD CONSTRAINT PK_EMP

PRIMARY KEY (雇员编号)

 

ALTER TABLE 工作表

ADD CONSTRAINT PK_JOB

PRIMARY KEY (工作编号)

2、UNIQUE 约束

1)确保在非主键列中不输入重复值。

2)应用在客观具有唯一性质的列上,如身份证号、社会保险号等。

3)格式:

ALTER TABLE 表名

ADD [ CONSTRAINT 约束名 ]

UNIQUE(列名)

4)例:为雇员表的“电话号码”列添加UNIQUE约束。

ALTER TABLE 雇员表

ADD CONSTRAINTUK_SID

UNIQUE (电话号码)

3、FOREIGN KEY约束

1)用于建立和加强两个表数据之间的连接的一列或多列

2)格式:

ALTER TABLE 表名

ADD [ CONSTRAINT 约束名 ]

FOREIGN KEY (列名)

REFERENCES 引用表名 (列名)

3)例:为雇员表的工作编号添加外码引用约束,此列引用工作表的工作编号列。

ALTER TABLE 雇员

ADD CONSTRAINT FK_job_id

FOREIGN KEY (工作编号)

REFERENCES 工作表 (工作编号)

4、DEFAULT约束

1)一个Default只能约束一列。

2)格式:

ALTER TABLE 表名

ADD [ CONSTRAINT 约束名 ]

DEFAULT 默认值 FOR 列名

3)例:定义雇员表的工资的默认值为1000。

ALTER TABLE 雇员

ADD CONSTRAINT DF_SALARY

DEFAULT 1000 FOR 工资

注:当向表中插入数据时,如果没有为定义了 DEFAULT的列提供值,则此列使用默认值。

5、CHECK约束

1)通过限制输入到列中的值来强制域的完整性。

2)可定义同表多列之间的约束关系

3)格式:

ALTER TABLE 表名

ADD [ CONSTRAINT 约束名 ]

CHECK (逻辑表达式)

4)例:①在雇员表中,添加限制雇员的工资必须大于等于500的约束。

ALTER TABLE 雇员

ADD CONSTRAINT CHK_Salary

CHECK ( 工资 >= 500 )

②添加限制工资表的最低工资小于等于最高工资的约束。

ALTER TABLE 工作

ADD CONSTRAINT CHK_Job_Salary

CHECK ( 最低工资 <= 最高工资 )

6、综合例:

 

四、数据库的创建

1、语法结构:

Create database 数据库名称

on primary ( name=数据文件逻辑名,

filename=数据文件物理名,

size=初始大小,

maxsize=最大,

filegrowth=增长率)

log on(日志文件的性质…..);

2、例:创建一个数据库

Create database mydb

on primary ( name=mydb1,

filename=‘c:\db1’,

size=10mb, maxsize=100mb, filegrowth=10% )

log on(…..);

五、删除数据库

1、语法格式:

Drop database 数据库名称;

2、例如:

Drop database mydb;

 

 

 

推荐阅读