数据的完整性与其它方案对象.ppt
《数据的完整性与其它方案对象.ppt》由会员分享,可在线阅读,更多相关《数据的完整性与其它方案对象.ppt(67页珍藏版)》请在三一办公上搜索。
1、方案对象管理之,第十一章 数据的完整性与其它方案对象,第十一章 数据的完整性及其它方案对象,【教学导航】,第十一章 数据的完整性及其它方案对象,11.1 数据的完整性11.2 管理完整性约束11.2.1 oracle提供的约束条件11.2.2 数据完整性约束的创建11.2.3 数据完整性约束的维护11.2.4 获取数据完整性约束的信息11.3 其它方案对象索引 视图存储过程 触发器同义词 序列,第十一章 数据的完整性及其它方案对象,(1)创建/删除CHECK约束。(2)创建/删除PRIMARY KEY和UNIQUE约束。(3)创建/删除FOREIGN KEY约束。,【任务描述】,11.1 数据
2、的完整性,数据库不仅仅是存储数据,还必须保证所保存的数据的正确性、完整性和可靠性数据的完整性是关系数据库模型的基本原则,是用户在表上定义的一系列规则或约束条件,以及在表之间定义的一系列相互关系。其作用就是强制要求数据库只能接受正确的、合理的数据,防止错误的或无效的数据被插入到表中。完整性保护防止不合语义的数据进入数据库例:员工的性别只能是男或女;员工的编号一定是惟一的;员工所在的部门必须是公司已存在的部门,11.1 数据的完整性,数据的完整性和安全性是两个不同的概念数据的完整性:是防止数据库中存在不符合语义的数据,保证数据库中数据是正确的,避免非法的不合语义的错误数据的输入和输出,即所谓的“垃
3、圾进垃圾出”所造成的无效操作和错误结果。数据的安全性:是保护数据库防止恶意的破坏和非法的存取。即,安全性措施的防范对象是非法用户和非法操作;完整性措施的防范对象是不合语义的数据。,数据完整性与安全性,11.1 数据的完整性,维护数据的完整性的方法,Applicationcode,Table,Data,Integrityconstraint,Databasetrigger,11.2 管理完整性约束,ORACLE系统支持四种类型的数据完整性:1域完整性:域完整性为列级和元组级完整性。它为列或列组指定一个有效的数据集,并确定该列是否允许为空。2实体完整性:实体完整性为表级完整性,它要求表中所有的元组
4、都应该有一个惟一的标识符3引用完整性:参照完整性是表级完整性,它维护参照表中的外码与被参照表中主码的相容关系。4用户定义完整性,11.2.1 数据完整性的类型,11.2 管理完整性约束,约束的类型PRIMARY KEY 主键约束FOREIGN KEY 外键约束UNIQUE 唯一约束CHECK 检查约束NULL 空值约束CASCADE 级联引用一致性约束,11.2.1 数据完整性约束的类型,决定使用何种约束(约束类型),11.2 管理完整性约束,ENABLENOVALIDATE(激活而无效),Existing data,New data,DISABLENOVALIDATE(禁止而无效),DISA
5、BLEVALIDATE(禁止而有效),=,=,ENABLEVALIDATE(激活而有效),11.2.2 完整性约束的状态,完整性约束的各种状态之间的变化 遵循以下的原则:如果在激活(ENABLE)约束时没有说明NOVALIDATE,则默认为ENABLE VALIDATE如果在禁止(DISABLE)约束时没有说明VALIDATE,则默认为DIABLE NOVALIDATE如果惟一约束或主键约束从禁止(DISABLE)状态变为激活(ENABLE)状态时没有索引,系统会自动地为之创建一个惟一索引。反之则会自动删除惟一索引。当任何一个约束从NOVALIDATE状态变为VALIDATE状态时,系统会检查
6、所有的数据。反之,不进行数据检查。将一个约束从ENABLE NOVALIDATE状态变为ENABLE VALIDATE状态时,系统仍可以进行任何的读、写及其他的DDL操作。,11.2 管理完整性约束,11.2.2 完整性约束的状态,11.2 管理完整性约束,DML statement,Check nondeferred constraints,COMMIT,Check deferred constraints,11.2.3 约束的检验,11.2 管理完整性约束,包含所有约束的基本描述信息USER_CONSTRAINTSDBA_CONSTRAINTS ALL_CONSTRAINTS包含定义了约束
7、的字段信息,利用这些视图可以查看约束被定义在哪些字段上。DBA_CONS_COLUMNSALL_CONS_COLUMNS USER_CONS_COLUMNS,11.2.4 获取约束的信息,11.2 管理完整性约束,例11-1:获取有关约束的信息,获取数据完整性约束的信息,Sql col constraint_name for a16 col table_name for a12 select constraint_name,table_name,constraint_type,status,deferrable,deferred,validated from dba_constraints w
8、here owner=SCOTT;,11.2 管理完整性约束,获取数据完整性约束的信息,例11-2:查询定义了约束的列,SQL Select table_name,constraint_name,column_name,positon from user_cons_columns where table_name=EMP;,11.2 管理完整性约束,使用 CREATE TABLE 或者 ALTER TABLECREATE TABLE 是在创建表时创建约束ALTER TABLE 是在一个已有的表上创建约束可以添加约束到已有数据的表上可添加单列或多列约束若约束应用于单列-列级约束若约束引用了多列-
9、表级约束,即使它并没有引用表中的所有列,11.2.5数据完整性约束的创建,11.2 管理完整性约束,定义约束的指南,主键和唯一键:将它们的索引放在(与表)不同的表空间中。如果经常有大规模数据的装入使用非唯一索引。自引用的外键:在初始装入数据之后再定义或开启外键。延迟约束的检查。,11.2 管理完整性约束,CREATE TABLE scott.employee(empid number(5)primary key,ename varchar2(15)not null,ssex varchar2(6),age number(4),job varchar2(10),hiredate date def
10、ault(sysdate),deptno number(3)not null,CONSTRAINT FK_deptno1 FOREIGN KEY(deptno)REFERENCES scott.dept(deptno),在创建一个表时定义约束,【例11-3】,验证:Select constraint_name,table_name,constraint_type,status,deferrable,deferred,validated from dba_constraints where owner=SCOTT;,11.2 管理完整性约束,例11-4 为表employee中ename添加一个惟
11、一性约束 SQL alter table employee add(constraint ename_uk unique(ename);例11-5为表employee中age 添加一个NOT NULL约束SQLalter table employee modify 注:此处为modify非add age not null;例11-6为表employee添加约束,限制员工性别为“男”、“女”SQLalter table employee add check(ssex in(男、女);,使用ALTER TABLE语句管理约束,11.2 管理完整性约束,例11-7删除约束dept_fkey,这样de
12、ptno字段就不再是一个外键了SQLalter table employee drop constraint dept_fkey;,使用ALTER TABLE语句管理约束,11.2 管理完整性约束,例11-8删除employee表中ename列上的UNIQUE约束 SQLalter table employee drop unique(ename),使用ALTER TABLE语句管理约束,11.3 其它方案对象,11.3.1 索引,视图,序列,同义词,11.3.3 存储过程,触发器,11.3 其它方案对象,1、概述 在Oracle中,索引是除表之外另一个重要的模式对象,索引主要用于提高表的查询
13、速度。索引与表一样,有独立的数据段存储,并且可以通过设置存储参数控制索引段的盘区分配方式。索引可以由用户显式创建,也可以由Oracle自动创建。,11.3.1 索引,11.3 其它方案对象,2、使用索引的目的快速查询经常在查询中引用索引可以帮助oracle以最快的速度检索数据惟一值 oracle自动产生索引来实施表中主键的惟一值,也可对任何其他需要惟一值的列(或一组列)使用这一特性,11.3 其它方案对象,3、索引类型在oracle 10g中有如下几种可用的索引类型:B-树索引(B-tree index)位映射索引(Bitmap index)B-树簇索引(B-tree cluster inde
14、x)哈希簇索引(Hash cluster index)全局和本地索引(Global and local index)基于函数的索引(Function-based index)域索引(Domain index),常用,Index entry header,Key column length,Key column value,ROWID,Root,Branch,Leaf,Index entry,B-树 索引,位图索引,29,索引与约束,Oracle在创建表或修改表的时候,可以为表的列定义约束。如果在表中定义了PRIMARY KEY或UNIQUE约束,Oracle会自动为约束列建立惟一索引。在默认情
15、况下,如果禁用了约束,则相应的索引将被删除;相反,当用户激活约束时,则会自动重新创建相应的索引。,11.3 其它方案对象,30,创建索引,由于在Oracle数据库中,索引可以拥有它自己的存储空间,不必与相关联的表位于同一个表空间中。因此在创建索引时,用户可使用TABLESPACE子句为索引指定存储空间,如果未使用该子句,则Oracle会自动在用户的默认表空间中创建一个索引段。当索引和相对应的表分别存放在不同的表空间时,可以获取更好的性能。,11.3 其它方案对象,创建 索引:指南,平衡查询和DML的需要。将其放入单独的表空间。使用统一的 extent 尺寸:数据块尺寸的5的倍数或表空间的 MI
16、NIMUM EXTENT的尺寸。对大索引可考虑使用NOLOGGING。索引的INITRANS 参数通常应改比相对应表的高。,11.3 其它方案对象,1、建立B-树索引 CREATE UNIQUE INDEX 模式.索引名称ON(模式.)表名称(列名ASC|DESC,列名ASC|DESC)排序方式,11.3 其它方案对象,例11-9:对emp表中的ename列建立索引,建立B-树索引,SQLCreate UNIQUE index scott.ename_index On scott.emp(ename),SQLCreate index scott.ename_index On scott.emp
17、(ename),例11-10:使用UNIQUE选项对上述ename列建立惟一性索引,11.3 其它方案对象,例11-11:在emp表中对列job,hiredate,建立组合索引,例11-12:为job建立降序索引,并且将索引存储在表空间pioneerindexts01中,SQL Create index scott.ename_index On scott.emp(job,hiredate),SQLcreate index ind_job on emp(job desc)Tablespace pioneerindexts01;,11.3 其它方案对象,2 建立位映射索引 CREATE BITM
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 完整性 与其 方案 对象
链接地址:https://www.31ppt.com/p-6578762.html