《数据库应用基础》课件 第五章 数据完整性

上传人:飞*** 文档编号:2803349 上传时间:2017-08-19 格式:PPT 页数:49 大小:884KB
返回 下载 相关 举报
《数据库应用基础》课件 第五章 数据完整性_第1页
第1页 / 共49页
《数据库应用基础》课件 第五章 数据完整性_第2页
第2页 / 共49页
《数据库应用基础》课件 第五章 数据完整性_第3页
第3页 / 共49页
《数据库应用基础》课件 第五章 数据完整性_第4页
第4页 / 共49页
《数据库应用基础》课件 第五章 数据完整性_第5页
第5页 / 共49页
点击查看更多>>
资源描述

《《数据库应用基础》课件 第五章 数据完整性》由会员分享,可在线阅读,更多相关《《数据库应用基础》课件 第五章 数据完整性(49页珍藏版)》请在金锄头文库上搜索。

1、1 第五章 数据完整性 2 复习 SELECT查询的基本格式是什么? 具有哪些参数? 各参数的含义是什么? 3 SELECT ALL|DISTINCT select_list INTO new_table_name FROM table_name WHERE condition GROUP BY clause HAVING clause ORDER BY COMPUTE clause select_list 所要查询的字段名称 INTO new_table_name 将查询结果放到一个新的临时表中 FROM table_name 欲查询数据的表的名称WHERE condition 欲查询数据的

2、条件 GROUP BY clause 根据字段类别做总计函数处理 HAVING clause 预查询数据的条件ORDER BY 将查询结果按某字段排序 COMPUTE cla在 SELECT查询的同时,作数据总计 4 本章主要内容 5.1 数据完整性的基本概念 5.2 定义约束 5.3 约束的类型 5 5.1 数据完整性的基本概念 1 数据完整性的类型 2 强制数据完整性 ( 1)实体完整性 ( 2)域完整性 ( 3)引用完整性 ( 4)用户定义完整性 6 1 数据完整性的类型 数据完整性 是指存储在数据库中的数据的 一致性 和 准确性 。 ( 1)实体完整性 实体完整性 要求表中所有的行具有

3、唯一 的标识符。 例:图书信息表 book_info中字段book_id取值必须唯一。 7 1 数据完整性的类型 ( 2)域完整性 域完整性 是指数据库表中对指定列有效的输入值 。 例:图书馆管理系统中,输入某本图书的数量时不应当出现小于0本的情况。 8 1 数据完整性的类型 ( 3)引用完整性 引用完整性 用于在输入或删除记录时,保持表之间已定义的关系。 例:对于 Library_DB数据库中的book_info 表和 class 表,引用完整性基于 book_info 表中的外键 (class_id) 与 class 表中的主键 (class_id) 之间的关系 。 9 1 数据完整性的类

4、型 ( 4)用户定义完整性 用户定义完整性 使用户能够定义不属于其他任何完整性分类的 特定业务规则 。 10 2 强制数据完整性 强制数据完整性 就是数据完整性的实现。 SQL Server 2008 通过下列机制来强制列中数据的完整性 PRIMARY KEY 约束 FOREIGN KEY 约束 UNIQUE 约束 CHECK 约束 DEFAULT 约束 允许空值 11 2 强制数据完整性 ( 1)声明数据完整性 声明数据完整性 是指定义数据标准规定数据必须作为对象定义的一部分,SQL Server将自动确保数据符合标准。 12 2 强制数据完整性 ( 2)过程定义数据完整性 过程定义数据完整

5、性 是指通过编写用来定义数据必须满足的标准和强制该标准的脚本来实现数据完整性。 13 5.2 约束的类型 1 PRIMARY KEY 约束 2 FOREIGN KEY 约束 3 UNIQUE 约束 4 CHECK 约束 5 DEFAULT 约束 14 主键: 表中的一列或列的组合,其值能 唯一地标识 表中的每一行。 PRIMARY KEY约束 : 不允许 数据库表在指定主键约束的列(或组合列)上 具有相同的值 ,且 不允许有空值 ,一个表 只能有一个 PRIMARY KEY约束。 例:图书编号 (book_id),借阅人编号(borrower_id)以及借书日期 (lend_date)均有重复

6、的数据记录,如果将三个字段组合起来作为主键,就能保证主键的唯一性。 1 PRIMARY KEY 约束(主键约束) 约束 是一种强制数据完整性的标准机制 。 book_id borrower_id lend_date back_date 0789 960651 2009-9-10 2009-10-10 0284 960651 2009-9-10 2009-10-01 0284 960811 2009-9-10 2009-9-28 0789 960651 2009-10-10 NULL 15 外键: 用于建立和加强两个表数据之间的链接的一列或多列,通过将保存表中主键值的一列或多列添加到另一个表中,

7、可创建两个表之间的链接,这个列就成为第二个表的外键。 被 FOREIGN KEY 参照的列在表中应该具有 PRIMARY KEY约束 或 UNIQUE 约束 。 例: lend_list表中的 book_id 列是链接到 book_info 表的外键 。 2 FOREIGN KEY 约束(外键约束) 16 尽管外键约束的 主要目的是控制存储在外键表中的数据 ,但它 还可以控制对主键表中数据的修改 。 例:如果在 book_info表中删除一本图书(book_id),而这本书的 book_id在 lend_list 表中记录借书信息时使用了,那么这两个表之间关联的完整性将被破坏,外键约束防止这种

8、情况的发生。 2 FOREIGN KEY 约束(外键约束) 17 UNIQUE 约束: 用以 确保 在 非主键列中 不输入重复值 ,但 允许有空值 。可以在单一指定列和多个指定列上创建 UNIQUE约束。 在强制下面的唯一性时应使用 UNIQUE 约束而不是 PRIMARY KEY 约束: 非主键的一列或列组合 允许空值的列 3 UNIQUE 约束 18 CHECK 约束: 通过逻辑表达式判断限制插入 到列中的值。 CHECK 约束在执行 INSERT语句 或 UPDATE语句 时作用。 例: 记录图书数量的 book_state表,图书总数量 number列必须满足大于等于 0,剩余图书数量

9、 leftnum列下限为 0,上限为 number列中所存值。 4 CHECK 约束(检查约束) 19 DEFAULT 约束: 当用户在向数据库表中插入数据时,如果没有明确的提供输入值时, SQL Server自动为该列 输入指定值 。 5 DEFAULT 约束(默认约束) 使用 DEFAULT约束时,应 注意 : 创建 DEFAULT约束时, SQL Server将对表中现有的数据进行数据完整性验证。 表中的每一列上只能定义一个 DEFAULT约束。 DEFAULT 约束只在执行 INSERT语句时起作用。 例: 通常将数字型列的默认值指定为零,将字符串列的默认值指定为暂缺。 20 5.3

10、定义约束 4 创建约束的其他选项 1 约束的创建 2 查看约束的定义信息 3 删除约束 5 使用默认 6 使用规则 21 1 约束的创建 ( 1)通过使用 CREATE TABLE命令在建表时创建约束 CREATE TABLE table_name (column_name data_type (NULL|NOT NULL) CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED |UNIQUE CLUSTERED|NONCLUSTERED |FOREIGN KEY REFERENCES ref_table (ref_colu

11、mn) |DEFAULT constant_expression |CHECK (logical_expression) ,.) 创建约束的表的名称 创建约束的列的名称 所在列的数据类型 新建约束的名称 22 例 5-1:在 Library_DB数据库中建立用于记录图书借阅记录的表 lend_list。该表中记录的信息有:图书编号,借阅者编号,借阅日期以及归还日期。 字段名 类型 长度 主键或外键 允许为空 中文说明 book_id nvarchar 15 PK、 FK 否 图书编号 borrower_id int PK、 FK 否 借阅人编号 lend_date date PK 否 借书日期

12、 back_date date 还书日期 23 CREATE TABLE Library_DB.dbo.lend_list ( book_id nvarchar(15) CONSTRAINT lend_bookid_chk REFERENCES book_info(book_id) NOT NULL, borrower_id int CONSTRAINT lend_id_chk REFERENCES borrower_info(id) NOT NULL, lend_date date NOT NULL, back_date date CONSTRAINT pk_chk PRIMARY KEY(

13、book_id,borrower_id,lend_date) ) 24 1 约束的创建 ( 2)建表完成后,再通过 ADD CONSTRAINT语句添加约束 PRIMARY KEY 约束 ALTER TABLE table_name ADD CONSTRAINT constraint_name PRIMARY KEY CLUSTERED|NONCLUSTERED (column_name,.) 指定在PRIMARY KEY约束所在列创建聚集索引还是非聚集索引 25 FOREIGN KEY 约束 ALTER TABLE table_name ADD CONSTRAINT constraint_n

14、ame FOREIGN KEY (column_name,.) REFERENCES ref_table (column_name,.) ON DELETE CASCADE|NO ACTION ON UPDATE CASCADE|NO ACTION 被 FOREIGN KEY约束参照的表的名称 26 使用 FOREIGN KEY 约束时,应 注意 : 在 FOREIGN KEY语句中指定的列数和数据类型必须和在 REFERENCES子句中的列数和数据类型 相匹配 。 在同一张表中相互参照时,可以使用没有FOREIGN KEY子句的 REFERENCE子句。 27 UNIQUE 约束 ALTER

15、 TABLE table_name ADD CONSTRAINT constraint_name UNIQUE CLUSTERED|NONCLUSTERED (column_name ,.) 28 例 5-2:在数据库 Library_DB中,表 class上的 name列上添加一个 UNIQUE约束。 use Library_DB ALTER TABLE class ADD CONSTRAINT U_classname UNIQUE (name) go 29 CHECK 约束 ALTER TABLE table_name ADD CONSTRAINT constraint_name CHECK ( logical_expression) ,. 检查约束的逻辑表达式 30 例 5-3:在数据库

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 中学教育 > 初中教育

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号