1、.第四讲 数据完整性第四讲第四讲数据完整性数据完整性l新课引入新课引入复习复习重点难点重点难点l课程内容课程内容1 1、数据完整性、数据完整性2 2、约束、约束3 3、默认、默认4 4、规则、规则5 5、用户自定义的数据类型、用户自定义的数据类型.第四讲 数据完整性复习复习、重点、重点、难难点点l复习内容:E-R图l重点:1、约束l难点:1、约束 2、规则 3、默认.第四讲 数据完整性数据库设计步骤数据库设计步骤需求分析需求分析 概念设计概念设计 逻辑设计逻辑设计物理设计物理设计实施与运行实施与运行(调研分析)(E-R模型)(在存储设备上选定存储结构和方法)(转换成某种DBMS支持的数据模型)
2、.第四讲 数据完整性E-RE-R图图以自底向上设计概念结构的方法为例,它通常分为以自底向上设计概念结构的方法为例,它通常分为两步:两步:第一步,首先要根据需求分析的结果(数据流图、第一步,首先要根据需求分析的结果(数据流图、数据字典等)对现实世界的数据进行抽象,设计数据字典等)对现实世界的数据进行抽象,设计各个局部视图即分各个局部视图即分E-R图。图。第二步,集成局部视图。第二步,集成局部视图。.第四讲 数据完整性设计分E-R图的步骤(1)选择局部应用)选择局部应用 在需求分析阶段,通过对应用环境和要求进行详尽的调查分析。设计在需求分析阶段,通过对应用环境和要求进行详尽的调查分析。设计分分E-
3、R图的第一步,就是要根据系统的具体情况,选择每一个局部应图的第一步,就是要根据系统的具体情况,选择每一个局部应用,设计分用,设计分E-R图。图。(2)逐一设计分)逐一设计分E-R图图 每个局部应用都对应了一组数据流图,局部应用涉及的数据都已经收集每个局部应用都对应了一组数据流图,局部应用涉及的数据都已经收集在数据字典中了。现在就是要将这些数据从数据字典中抽取出来,参在数据字典中了。现在就是要将这些数据从数据字典中抽取出来,参照数据流图,标定局部应用中的实体、实体的属性、标识实体的码,照数据流图,标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型(确定实体之间的联系及其类
4、型(1:1、1:n、m:n)。)。.第四讲 数据完整性例:设计学籍管理局部应用的分E-R图:.第四讲 数据完整性学学生管理系生管理系统设计统设计l学生学号,姓名,性别,出生日期,班级,何时入校,家庭住址 l班级班级号,班级名称,学生人数 l辅导员职工号,姓名,性别,职称,工作时间 l宿舍宿舍编号,地址,人数 l教室教室编号,地址,容量.第四讲 数据完整性设计课程管理局部应用的分E-R图.第四讲 数据完整性学学生管理系生管理系统设计统设计l学生学号,姓名,性别,年龄,入学时间 l课程课程号,课程名,学分 l教科书书号,书名,作者,出版日期,关键字 l教室教室编号,地址,容量 l教师职工号,姓名,
5、性别,职称.第四讲 数据完整性集成集成E-RE-R图图l(1)(1)消除冲突。这两个子消除冲突。这两个子E-RE-R图存在着多方面的冲突:图存在着多方面的冲突:l辅导员属于教师,学籍管理中的辅导员与课程管理中的教师可辅导员属于教师,学籍管理中的辅导员与课程管理中的教师可以统一为教师。以统一为教师。l调整学生属性组成,调解结果为:调整学生属性组成,调解结果为:l学生学生 学号,姓名,性别,出生日期,班级,年龄,入学时间学号,姓名,性别,出生日期,班级,年龄,入学时间 ,家,家庭住址庭住址 l(2)(2)消除冗余。消除冗余。l1)1)学生实体的属性中的年龄可由初涉概念日期计算出来,属于数学生实体的
6、属性中的年龄可由初涉概念日期计算出来,属于数据冗余。据冗余。l2)2)教室实体与班级实体之间的上课联系可以由教室与课程之间的教室实体与班级实体之间的上课联系可以由教室与课程之间的开设联系、课程与学生之间的选修联系、学生与班级之间的组成联系开设联系、课程与学生之间的选修联系、学生与班级之间的组成联系三者推导出来,因此属于数据冗余,可以消去。三者推导出来,因此属于数据冗余,可以消去。.第四讲 数据完整性学学生管理系生管理系统设计统设计.第四讲 数据完整性学学生管理系生管理系统设计统设计.第四讲 数据完整性数数据完整性据完整性保证存储在数据库中数据的一致性和正确性保证存储在数据库中数据的一致性和正确
7、性l1.1.实体完整性:主键字段不能为空值实体完整性:主键字段不能为空值l2.2.参照完整性:外键字段必须是另一个表主码的参照完整性:外键字段必须是另一个表主码的 有效值或空值有效值或空值l3.3.域完整性:域完整性:.第四讲 数据完整性约约束束l1 1、PRIMARY KEY PRIMARY KEY 每个表最多一个每个表最多一个 值是唯一的值是唯一的 主键字段不能为空值主键字段不能为空值l2 2、FOREIGN KEY FOREIGN KEY 必须参照一个主键或唯一约束必须参照一个主键或唯一约束 提供单列或多列的参照完整性提供单列或多列的参照完整性.第四讲 数据完整性约约束束l3、UNIQUE 允许有一个空值 一个表上可以建立多个 用于具有唯一值的单列或多列 l4、DEFAULT 只能用于insert语句 每一列最多一个 IDENTITY属性的列上不能用.第四讲 数据完整性约约束束l5、CHECK 用于insert、update语句 在同一个表中可以参照其它的列.第四讲 数据完整性使用默认值和规则使用默认值和规则 作为独立的数据库对象作为独立的数据库对象定义一次定义一次可被绑定到一列或多列可被绑定到一列或多列