




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库基础,1,第七章 索引与数据完整性,数据库基础,2,【本章要点】,通过本章的学习,可以掌握数据库索引以及数据完整性的基本知识以及各自的实现方法。,数据库基础,3,第七章 索引与数据完整性,7.1索引 7.2 默认值约束及默认值对象 7.3 数据的完整性,数据库基础,4,7.1索引,7.1.1索引的概念 7.1.2 索引的分类 7.1.3 索引的创建 7.1.4 索引的管理,数据库基础,5,7.1.1索引的概念,索引可以认为是这样一种数据结构:它以记录的特征(通常是一个或多个字段的值)为输入,并能快速地找出具有该特征的记录。建立索引的目的是加快关系中那些在某个特定属性上存在特定值的元组的查
2、找速度。,数据库基础,6,7.1.1索引的概念,打个比方来说,数据库的索引类似于书籍的索引。在书籍中,索引允许读者不必翻阅完整个书就能迅速地找到所需要的内容。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。索引技术是整个数据库技术的核心技术之一,对于存储海量数据的数据库来说,没有索引查询数据的时间有时是不可以接受的。但是索引的创建又是有代价的,创建索引往往会花费时间,这种时间随着数据量的增加而增加。并且,索引需要占物理空间,除了数据表占数据空间之外,每一个索引还要占一定的物理空间,如果要建立聚簇索引,那么需要的空间就会更大。再有,当对表中的数据进行增加、删除和修改的
3、时候,索引也要动态的维护,降低了数据的维护速度。,数据库基础,7,7.1索引,7.1.1索引的概念 7.1.2 索引的分类 7.1.3 索引的创建 7.1.4 索引的管理,数据库基础,8,7.1.2 索引的分类,索引分为唯一索引,聚集索引以及非聚集索引等几种。,数据库基础,9,7.1.2 索引的分类,1、唯一索引 唯一索引能够保证索引键中不包含重复的值,从而使表中的每一行从某种方式上具有唯一性。只有当唯一性是数据本身的特征时,指定唯一索引才有意义。也可以为多列建立唯一索引,但必须能够保证索引键中值的每个组合都是唯一的。下面提到的聚集索引和非聚集索引都可以是唯一的。只要列中的数据是唯一的,就可以
4、为同一个表创建一个唯一聚集索引和多个唯一非聚集索引。,数据库基础,10,7.1.2 索引的分类,2、聚集索引 在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。请注意,一个表只能包含一个聚集索引。因为数据行本身只能按一个顺序存储。一般情况下,聚集索引通常提供更快的数据访问速度。,数据库基础,11,7.1.2 索引的分类,3、非聚集索引 非聚集索引具有完全独立于数据行的结构,使用非聚集索引不用将物理数据页中的数据按列排序,即索引中的逻辑顺序并不等同于表中行的物理顺序。,数据库基础,12,7.1索引,7.1.1索引的概念 7.1.2 索引的分类 7.1.3 索引的创建 7.1.4 索引的
5、管理,数据库基础,13,7.1.3 索引的创建,索引可以由DBMS自动建立,比如在创建 PRIMARY KEY 或 UNIQUE 约束时,系统就会自动为指定的列创建唯一索引。但更多情况下,索引是由DBA或表的属主(即建立表的人)根据需要建立的。,数据库基础,14,7.1.3 索引的创建,创建索引的语法格式如下, CREATE UNIQUE CLUSTERED NONCLUSTERED INDEX ON (, );,数据库基础,15,7.1.3 索引的创建,参数说明如下: 用指定要建索引的基本表名字,索引可以建立在该表的一列或多列上,各列名之间用逗号分隔;用指定索引值的排列次序,升序:ASC,降
6、序:DESC。缺省值:ASC; UNIQUE表明此索引的每一个索引值只对应唯一的数据记录; CLUSTERED表示要建立的索引是聚集索引,如果没有指定CLUSTERED,则创建非聚集索引。,数据库基础,16,7.1.3 索引的创建,例7.1 在tBooks表的fAuthor(作者姓名)列上建立一个聚簇索引,而且tBooks表中的记录将按照fAuthore值的升序存放。 CREATE CLUSTERED INDEX BookAuthor ON tBooks(fAuthor),数据库基础,17,7.1索引,7.1.1索引的概念 7.1.2 索引的分类 7.1.3 索引的创建 7.1.4 索引的管理
7、,数据库基础,18,7.1.4 索引的管理,1、查看索引 利用系统存储过程sp_helpindex可以参看特定表上的索引信息。 例7.2 使用系统存储过程参看tBooks表的索引信息。 exec sp_helpindex tBooks,数据库基础,19,7.1.4 索引的管理,2、删除索引 在创建索引之后,如果该索引不再需要,可以用DROP语句将其删除,DROP语句的语法如下: DROP INDEX . 例7.3 用DROP语句将表tBooks的索引BookAuthor删除。 DROP INDEX tBooks.BookAuthor,数据库基础,20,第七章 索引与数据完整性,7.1索引 7.
8、2 默认值约束及默认值对象 7.3 数据的完整性,数据库基础,21,7.2 默认值约束及默认值对象,7.2.1 默认值约束 7.2.2 默认值对象,数据库基础,22,7.2.1 默认值约束,默认值约束用于指定一个字段的默认值。它的作用是:当向表中插入数据时,如果用户没有给某一字段输入数据,则系统自动将默认值作为该字段的数据内容。,数据库基础,23,7.2.1 默认值约束,向表中添加数据时,如果没有输入字段值,则此字段的值可能是下面几种情况: (1) 此字段定义了默认值,则此字段的内容为默认值; (2) 此字段未定义默认值,而且允许为NULL值,则NULL值将成为该字段的内容;,数据库基础,24
9、,7.2.1 默认值约束,(3) 此字段未定义默认值,也不允许为NULL值,保存时将会出现错误信息,而且添加数据操作失败。对于一个不允许为NULL值的字段,默认值显得非常重要。当用户添加数据记录时,如果当时尚不知字段的值,而该字段又不允许为NULL值,则设置默认值为上策。,数据库基础,25,7.2.1 默认值约束,比如,“学生信息”表中有“专业”字段,要求此字段不允许为NULL值,但操作员添加学生时不知该生应属于哪专业,“专业”字段便没有输入数据。如果不对该字段设置默认值,则保存时将发生错误,而拒绝接受数据;如果设置默认值为“不知哪专业”,则保存时将默认值“不知哪专业”作为该字段的内容,而不会
10、拒绝接收数据,待弄清专业后再修改此字段为正确的值。,数据库基础,26,7.2.1 默认值约束,下面说明如何在表中定义默认值约束 1.、默认值约束的定义 语法格式: CREATE TABLE table_name (column_name datatype NOT NULL | NULL DEFAULT constraint_expression ,n ) 该语句定义了列名、该列的数据类型、是否空值及默认值约束。,数据库基础,27,7.2.1 默认值约束,例7.4 对于Mymdb数据库,定义tBooks表时定义fPages字段的默认值约束为0(代表不知当前书籍的页数)。 CREATE TABLE
11、 tBooks (fName char(100) PRIMARY KEY, fAuthor char(50), fDate datetime, fPages int DEFAULT 0 ),数据库基础,28,7.2.1 默认值约束,当修改表的定义时,也可以在添加一个字段的同时定义相应的默认值约束,其语法格式为 ALTER TABLE table_name ADD column_name datatype NOT NULL | NULL CONSTRAINT constraint_name DEFAULT constraint_expression WITH VALUES 其中WITH VALU
12、ES的作用为仅用在对表添加新字段的情况下使用默认值。即如果使用了WITH VALUES,则将为表中各现有行添加的新字段提供默认值;如果没有使用WITH VALUES,那么以往每一行的新列中都将为NULL值。,数据库基础,29,7.2.1 默认值约束,例7.5 在修改表时添加一个字段,并定义默认值约束。 USE Mymdb ALTER TABLE tBooks ADD fNation char(16) NULL CONSTRAINT Addfnation DEFAULT 中国 WITH VALUES 用户也可以对表中指定的列定义默认值,其语法格式为 ALTER TABLE table_name
13、ADD CONSTRAINT constraint_name DEFAULT constraint_expression FOR column,数据库基础,30,7.2.1 默认值约束,例7.6 USE Mymdb ALTER TABLE tBooks ADD CONSTRAINT def_fDate DEFAULT 2009-1-1 FOR fDate 默认值约束可在企业管理器中删除。如果已知一个默认值约束的约束名,也可在查询分析器中执行SQL命令删除,数据库基础,31,7.2.1 默认值约束,例7.7 USE Mymdb ALTER TABLE tBooks DROP CONSTRAINT
14、 def_fDate,数据库基础,32,7.2 默认值约束及默认值对象,7.2.1 默认值约束 7.2.2 默认值对象,数据库基础,33,7.2.2 默认值对象,默认值对象是一种独立存储的数据库对象,其作用和默认约束是一样的。在创建之后,可以用到表中的一列或多列上,也可以用到用户自定义的数据类型。,数据库基础,34,7.2.2 默认值对象,用户可以通过SQL命令定义DEFAULT默认值对象,其语法格式为, CREATE DEFAULT default AS constant_expression,数据库基础,35,7.2.2 默认值对象,创建默认值对象后,要使其起作用,应使用 sp_binde
15、fault存储过程将其绑定到列或用户定义数据类型。其语法格式为, sp_bindefault defname = default , objname = object_name , futureonly = futureonly_flag 其中参数futureonly_flag的作用为仅在将默认值对象绑定到用户定义数据类型时才使用。,数据库基础,36,7.2.2 默认值对象,例7.8 在Mymdb数据库中定义def_fDate的默认值对象,然后将其绑定到tBooks表的fDate字段。 USE Mymdb GO CREATE DEFAULT def_fDate AS 2009-1-1 GO E
16、XEC sp_bindefault def_fDate, tBooks.fDate,数据库基础,37,7.2.2 默认值对象,例7.9 在Mymdb数据库中定义名为school的数据类型,然后定义默认值对象def_school并将其绑定到用户定义的数据类型school中。 USE Mymdb GO EXEC sp_addtype school,char(20),NULL GO CREATE DEFAULT def_school AS 天津师范大学 GO EXEC sp_bindefault def_school,school,数据库基础,38,7.2.2 默认值对象,用户也可以利用sp_unb
17、indefault解除绑定关系,其语法格式为 sp_unbindefault objname = object_name , futureonly = futureonly_flag 若一个默认值对象不再使用,可以将它删除,其语法格式为, DROP DEFAULT default ,.n 注意,如果要删除一个默认值对象,首先应解除默认值对象与用户定义类型及表字段的绑定关系,然后才能删除该默认值对象。,数据库基础,39,7.2.2 默认值对象,例7.10 解除默认值def_school与Mymdb数据库中school的绑定关系,然后删除名为def_school的默认值对象。 USE Mymdb
18、GO EXEC sp_unbindefault school GO DROP DEFAULT def_school 最后要说明一下默认值约束和默认值对象的区别,默认值约束是在一个表内针对某一个字段定义的,仅对该字段有效;而默认值对象是数据库对象之一,在一个数据库内定义,可以绑定到一个用户自定义数据类型或库中某个字段。,数据库基础,40,第七章 索引与数据完整性,7.1索引 7.2 默认值约束及默认值对象 7.3 数据的完整性,数据库基础,41,7.3 数据的完整性,数据完整性是指数据库中数据的正确性和相容性。它是由各种各样的完整性约束来保证以防止数据库中存在不符合语义规定的数据和防止因错误信息
19、的输入输出造成无效操作或错误信息而提出的。数据完整性分为三类:实体完整性(Entity Integrity)、参照完整性(Referential Integrity)以及用户定义的完整性(User-defined Integrity)。,数据库基础,42,7.3 数据的完整性,7.3.1 实体完整性 7.3.2 参照完整性 7.3.3 用户自定义的完整性,数据库基础,43,7.3.1 实体完整性,在现实世界中,实体和实体间的联系都是可区分的。数据库是通过实体完整性来体现这一事实的。实体完整性指的是表中行的完整性。要求表中的所有行都有唯一的标识符,被称为候选码,并且由所有候选码所对应的主属性都不
20、能取空值,所谓空值就是“不知道”或“无意义”的值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,与现实世界实体可区分不符。,数据库基础,44,7.3.1 实体完整性,在关系数据库中,实现实体完整性可以通过SQL语句创建PRIMARY KEY约束或UNIQUE约束,其语法格式为, CREATE TABLE table_name ( column_name datatype CONSTRAINT constraint_name NOT NULL PRIMARY KEY UNIQUE CLUSTERED | NONCLUSTERED , n ),数据库基础,45,7.3.1
21、实体完整性,例7.11 创建表tBooks,设置fName字段为主码 CREATE TABLE tBooks (fName char(100) PRIMARY KEY, fAuthor char(50), fDate datetime, fPages int DEFAULT 0 ),数据库基础,46,7.3.1 实体完整性,当多属性作为主码时,应在表中添加一表项,假如上例中的主码为fName与fAuthor,则建立主码方法如下, CREATE TABLE tBooks (fName char(100) , fAuthor char(50), fDate datetime, fPages int
22、 DEFAULT 0, PRIMARY KEY(fName,fAuthor) ),数据库基础,47,7.3 数据的完整性,7.3.1 实体完整性 7.3.2 参照完整性 7.3.3 用户自定义的完整性,数据库基础,48,7.3.2 参照完整性,参照完整性又称为引用完整性。参照完整性保证相关联表中数据的一致性,防止了数据丢失或无意义的数据在数据库中扩散。 例如,tCred(fId,.)(身份证件类型表,fId代表身份证件类型编号) tUsers(., fCredentials,.)(用户表,fCredentials代表用户提供的身份证件类型编号),数据库基础,49,7.3.2 参照完整性,其中t
23、Users中的“fCredentials”与tCred中的主码“fId”相对应,此时称“fCredentials”是tUsers中的外码。tUsers通过外码来描述与tCred的关联。tUsers中的每个元组(每个元组描述一个用户实体)通过外码表示该用户提供的身份证件类型。当然,被参照关系的主码和参照关系的外码可以同名,也可以不同名。被参照关系与参照关系可以是不同关系,也可以是同一关系。,数据库基础,50,7.3.2 参照完整性,请注意,外码的取值必须为被参照关系中某个元组的主码值或取空值,以体现两表之间的关联性。 在关系数据库中,实现参照完整性可以通过SQL语句创建FOREIGN KEY约束
24、,其语法格式为, CREATE TABLE table_name (column_name datatype FOREIGN KEY REFERENCES ref_table ( ref_column ) ON DELETE CASCADE | NO ACTION ON UPDATE CASCADE | NO ACTION , n ),数据库基础,51,7.3.2 参照完整性,比如以上提到的tUsers表中的fCredentials属性,若要设置其为参照表tCred中tId的外码,可以在创建表时增加一表项, CREATE TABLE table_name ( . FOREIGN KEY (fCredentials) REFEREN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年《道德与法治》教学反思
- 2024年12月英语四级考试真题和答案及解析
- 某著名企业云整合营销传播方案
- 2025年药品质量认证与国际标准变革趋势研究报告
- 2024安全员理论考试各版本
- 2025年功能性饮料在足球赛事中的市场推广策略研究
- 2023护本医院感染控制理论教学大纲
- 2023年经济学说史知识点姚开建第二版
- 第二章 有理数的计算 单元测试卷(含部分解析)人教版七年级数学上册
- 2025年度进口家电产品销售代理合同模板
- 集控中心培训管理制度
- PPP项目成本管理制度和管控措施
- 2025建筑安全员C证考试(专职安全员)题库及答案
- 事故隐患内部报告奖励制度
- 风险管控考试题及答案
- 八年级历史上册第六单元中华民族的抗日战争第18课从九一八事变到西安事变学案新人教版
- 2025年茶艺师高级技能考核试卷:茶艺设备维护与操作试题
- 人教版数学七年级上册单元测试卷-第一单元-有理数(含答案)
- 【艾青诗选】批注
- 《能源法》重点内容解读与实务应用
- 2025年云南省康旅控股集团有限公司招聘笔试参考题库含答案解析
评论
0/150
提交评论