- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据完整性(p80) 数据完整性(p80) Oracle使用完整性约束防止不合法的数据进入到基表中。管理员和开发人员可以定义完整性规则,以增强商业规则,限制数据表中的数据。 使用完整性约束有以下几个好处: (1) 在数据库应用的代码中增强了商业规则。 (2) 使用存储过程,完整控制对数据的访问。 (3) 增强了触发存储数据库过程的商业规则。 数据完整性(p80) 3.6.1数据完整性的分类 1. 域完整性 2. 实体完整性 3. 参照完整性 数据完整性(p80) 3.6.1数据完整性的分类 1. 域完整性 域完整性又称为列完整性,指定一个数据集对某一个列是否有效和确定是否允许空值。 【例3.26】定义表KC的同时定义学分的约束条件。 CREATE TABLE KC ( KCH char(6) NOT NULL, KCM char(8) NOT NULL, XF NUMBER(2) CHECK (XF=0 AND XF=10) NULL, /* 通过CHECK子句定义约束条件 */ BZ VARCHAR2 NULL ); 3.6.1数据完整性的分类 2. 实体完整性 实体完整性也可以称为行完整性,要求表中的每一行有一个唯一的标识符,这个标识符就是主关键字。 3. 参照完整性 参照完整性又可以称为引用完整性。参照完整性保证主表中的数据与从表(被参照表)中数据的一致性。 主键:在表中能唯一标识表的每个数据行的一个或多个表列。外键:如果一个表中的一个字段或若干个字段的组合是另一个表的主键则称该字段或字段组合为该表的外键。 3.6.1数据完整性的分类 3. 参照完整性 如果定义了两个表之间的参照完整性,则要求: (1) 从表不能引用不存在的键值。 (2) 如果主表中的键值更改了,那么在整个数据库中,对从表中该键值的所有引用要进行一致的更改。 (3) 如果主表中没有关联的记录,则不能将记录添加到从表。 (4) 如果要删除主表中的某一记录,应先删除从表中与该记录匹配的相关记录。 3. 参照完整性 3.6.1数据完整性的分类 3.6.2约束的状态 在Oracle中,完整性约束有4种状态: (1) 禁止的非校验状态。表示该约束是不起作用的,即使该约束定义依然存储在数据字典。 (2) 允许的非校验状态或强制状态。该状态可以向表中添加数据,但是与约束有冲突的数据不能添加。 如果表中已存在的数据与约束冲突,这些数据依然可以存在。 (3) 禁止的校验状态:还可以向表中添加数据,即使这些数据与约束有冲突也没关系。表示对约束列的任何修改都是禁止的。 (4) 允许的校验状态: 表示约束处于正常的状态。这时,表中所有的数据,无论是新添加的还是已有的,都必须满足约束条件。 3.6.3域完整性的实现 (2) 利用SQL语句在创建表时创建CHECK约束 语法格式: CREATE TABLE table_name /*指定表名*/ ( column_name datatype [NOT NULL | NULL] [DEFAULT constraint_expression] /*默认值*/ CONSTRAINT check_name CHECK(check_expression),…n) /*CHECK约束表达式*/ 【例3.27】在 XSCJ 数据库中创建表books,其中包含所有的约束定义。 CREATE TABLE books ( book_id number(10), book_name varchar2(50) not null, book_desc varchar2(50) DEFAULT ‘New boo
文档评论(0)