文档详情

ch数据库完整性.ppt

发布:2017-06-13约9.96千字共56页下载文档
文本预览下载声明
An Introduction to Database System 数据库完整性 数据的完整性和安全性 数据的完整性 防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据 防范对象:不合语义的、不正确的数据 数据的安全性 保护数据库防止恶意的破坏和非法的存取 防范对象:非法用户和非法操作 数据库完整性(续) 为维护数据库的完整性,DBMS必须: 1.提供定义完整性约束条件的机制 2.提供完整性检查的方法 3.违约处理 第五章 数据库完整性 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名字句 5.6 触发器 5.7 小结 5.1 实体完整性 5.1.1 实体完整性定义 5.1.2 实体完整性检查和违约处理 5.1.1 实体完整性定义 关系模型的实体完整性 实体(或表)完整性要求表中的所有行都有一个惟一的标识符,称为主键值。 CREATE TABLE中用PRIMARY KEY定义 单属性构成的码有两种说明方法 定义为列级约束条件 定义为表级约束条件 对多个属性构成的码只有一种说明方法 定义为表级约束条件 实体完整性定义(续) [例1] 将Student表中的Sno属性定义为码 (1)在列级定义主码 CREATE TABLE XSB ( 学号 char(6) PRIMARY KEY,/* 列级完整性约束条件*/ 姓名 char(8) NOT NULL, 专业名 char(10) NULL, 性别 bit NOT NULL, 出生时间 smalldatetime NOT NULL, 总学分 tinyint NULL, 备注 text NULL ) 实体完整性定义(续) (2)在表级定义主码 CREATE TABLE CJB (学号 CHAR(6) NOT NULL, 课程号 CHAR(3) NOT NULL, 成绩 SMALLINT, PRIMARY KEY (Sno,Cno) /*只能在表级定义主码*/ ); 5.1 实体完整性 5.1.1 实体完整性定义 5.1.2 实体完整性检查和违约处理 5.1.2 实体完整性检查和违约处理 插入或对主码列进行更新操作时,RDBMS按照实体完整性规则自动进行检查。包括: 1. 检查主码值是否唯一,如果不唯一则拒绝插入或修改 2. 检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改 SQL Server中的主键定义 在SQL Server中定义主键时,系统将在主键上创建一个聚集的唯一索引来实现实体完整性。也可以在创建主键时通过自定义一个非聚集的唯一索引键来实现约束。 主键定义的语法: { PRIMARY KEY [ CLUSTERED | NONCLUSTERED ] }{(列[,...n])} 第五章 数据库完整性 5.1 实体完整性 5.2 参照完整性 5.3 用户定义的完整性 5.4 完整性约束命名字句 5.6 触发器 5.7 小结 5.2 参照完整性 5.2.1 参照完整性定义 5.2.2 参照完整性检查和违约处理 5.2.1 参照完整性定义 关系模型的参照完整性定义 参照(引用)完整性确保主键(在被引用表中)和外键(在引用表中)之间的关系得到保持 在CREATE TABLE中用FOREIGN KEY短语定义哪些列为外码 用REFERENCES短语指明这些外码参照哪些表的主码 参照完整性定义(续) 例如,关系SC中一个元组表示一个学生选修的某门课程的成绩,(Sno,Cno)是主码。Sno,Cno分别参照引用Student表的主码和Course表的主码 CREATE TABLE CJB (学号 CHAR(6) NOT NULL, 课程号 CHAR(3) NOT NULL, 成绩 SMALLINT, PRIMARY KEY (学号,课程号) /*在表级定义实体完整性*/ FOREIGN KEY (学号) REFERENCES XSB(学号), /*在表级定义参照完整性*/ FOREIGN KEY (课程号) REFERENCES KCB(课程号) /*在表级定义参照完整性*/
显示全部
相似文档