数据模型:面向计算机系统(关系、层次、网状、对象) 概念模型:面向用户 ■数据建模:建立概念模型的过程 实体-联系(E-R)模型、语义对象模型 数据模型三要素 数据结构、数据操作、数据完整性约束 数据库应用结构 单用户结构、集中式结构、分布式结构、客户/服务器结构(CS)、浏览器/服务器结构(B/S) 52关系代数 第二章关系数据库 2.1关系模型 22关系模式 2.3关系数据库规范化 关系数据库简介 ■系统而严格地提出关系模型的是美国IBM公司的EF.Codd 1970年提出关系数据模型 之后,提出了关系代数和关系演算的概念 1972年提出了关系的第一、第二、第三范式 1974年提出了关系的BC范式 关系数据库应用数学方法来处理数据库中的数据 80年代后,关系数据库系统成为最重要、最流行的数据库系统 21关系模型概述 ■关系数据库系统 ■是支持关系模型的数据库系统 关系模型的组成 关系数据结构 关系操作集合 关系完整性约束 ■关系型数据库的特点 模型简单、数据独立性高、有较为坚实的理论基础 ■关系:有应用语义的二维表,表中的每一行描述事物或事物的一部分的状态的数据,表中的每一列描述事物的 某个特征 ■属性:二维表中的一列就是关系模式中的一个属性。注: 表中的每一个属性必须是基本类型。 表中的每一列的所有值必须是同类型、同语义的 属性的值只能是域中的值 表中的每一列都必须有唯一的名字,列在表中的顺序是不重要的 1.域:属性的取值范围。 2元组:二维表中的一行称为一个元组 3.候选码:关系中按应用语义能唯一标识元组的最小的属性集合 4.主码:指定为关系中元组标识的候选码,称主码属性组为主属性。主码有时也被称为主关键字或主键
6 ◼ 数据模型:面向计算机系统(关系、层次、网状、对象) ◼ 概念模型:面向用户 ◼ 数据建模:建立概念模型的过程 ◼ 实体-联系(E-R) 模型、语义对象模型 ◼ 数据模型三要素: ◼ 数据结构、数据操作、数据完整性约束 ◼ 数据库应用结构 ◼ 单用户结构、集中式结构、分布式结构、客户/服务器结构(C/S)、浏览器/服务器结构(B/S) ◼ 5.2 关系代数 第二章 关系数据库 ◼ 2.1 关系模型 ◼ 2.2 关系模式 ◼ 2.3 关系数据库规范化 关系数据库简介 ◼ 系统而严格地提出关系模型的是美国 IBM 公司的 E.F.Codd ◼ 1970 年提出关系数据模型 ◼ 之后,提出了关系代数和关系演算的概念 ◼ 1972 年提出了关系的第一、第二、第三范式 ◼ 1974 年提出了关系的 BC 范式 ◼ 关系数据库应用数学方法来处理数据库中的数据 ◼ 80 年代后,关系数据库系统成为最重要、最流行的数据库系统 2.1 关系模型概述 ◼ 关系数据库系统 ◼ 是支持关系模型的数据库系统 ◼ 关系模型的组成 ◼ 关系数据结构 ◼ 关系操作集合 ◼ 关系完整性约束 ◼ 关系型数据库的特点; 模型简单、数据独立性高、有较为坚实的理论基础 ◼ 关系:有应用语义的二维表,表中的每一行描述事物或事物的一部分的状态的数据,表中的每一列描述事物的 某个特征 ◼ 属性:二维表中的一列就是关系模式中的一个属性。注: ◼ 表中的每一个属性必须是基本类型。 ◼ 表中的每一列的所有值必须是同类型、同语义的 ◼ 属性的值只能是域中的值 ◼ 表中的每一列都必须有唯一的名字,列在表中的顺序是不重要的 1.域:属性的取值范围。 2.元组:二维表中的一行称为一个元组。 3.候选码:关系中按应用语义能唯一标识元组的最小的属性集合。 4.主码:指定为关系中元组标识的候选码,称主码属性组为主属性。主码有时也被称为主关键字或主键
1.关系数据结构 关系数据结构 数据的逻辑结构——二维表 的数据结构—关系 从用户角度,关系模型中数据的逻辑结构是一张二维表。 模型 及实 课程 ■数据模式:对数据的结构、类型和约束的描述。(关系模式) 联系都是用关系来表 学生登记表 例 学号姓名性别年「班级号学生(学号,姓名,性别,年 选修 关系模式: 010125曲波男190101 龄,班号) 关系名(属性1,属性 课程(课程号,课程名,周学 属性n 时,学分) 例:学生(学号,姓名, 选修(学号,课程号,成绩) 性别,年龄,班号) 016张铁男190300 2.关系操作集合 ■1)常用的关系操作 查询:选择、投影、连接、除、并、交、差 数据更新:插入、删除、修改 查询的表达能力是其中最主要的部分 2)关系操作的特点 集合操作方式,即操作的对象和结果都是集合。 非关系数据模型的数据操作方式:一次一记录 文件系统的数据操作方式 ■3)关系数据语言的种类 关系代数:用对关系的运算来表达查询要求的方式。(过程性的:既要知道要做什么,还要知道怎么做) 关系演算:用谓词来表达查询要求 ■(非过程性:是一种可以不必知道如何获得结果就能表达所要结果的语言。) 面向转化的语言:用关系表示的输入数据转换成用单个关系表示的结果。(非过程性化的语言,如:SQL) 按例子查询/按窗体查询:由于带有图形界面,用户可以见到一个或多个关系的具体样例。(如 ■4)关系数据语言的特点 关系语言是一种高度非过程化的语言 能够嵌入高级语言中使用 3.关系的三类完整性约束 关系的完整性是指关系中数据值与其描述的应用对象实际状态保证一致的约束条件 ■实体完整性 ■通常由关系系统自动支持 确保表中所有行的数据不重复(主属性不能取空值。) 例:选修(学号,课程号,成绩) 学号、课程号”为主码,则两个属性都不能取空值。 引用完整性: 确保关联之间数据的一致性,即确保进入一个表的数据与相关的表之间数据同步 例:学生实体、专业实体以及专业与学生间的一对多联系 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 外键(或叫外部关键字)是指一个表中的某个属性是另一个表的主关键字。 应用语义完整性 确保数据库中的数据是有意义的。 一般用数据类型和约束来保证
7 1. 关系数据结构 ◼ 数据的逻辑结构----二维表 ◼ 从用户角度,关系模型中数据的逻辑结构是一张二维表。 ◼ 数据模式:对数据的结构、类型和约束的描述。(关系模式) 关系模式: 关系名(属性1,属性 2,…,属性n) 例:学生(学号,姓名, 性别,年龄,班号) 主关键字:学号 学生登记表 1. 关系数据结构 ◼ 单一的数据结构----关系 ◼ 在关系模型中,实体以及实 体间的联系都是用关系来表 示的。 例: 学生(学号,姓名,性别,年 龄,班号) 课程(课程号,课程名,周学 时,学分) 选修(学号,课程号,成绩) 课程 选修 学生 m n 成绩 2. 关系操作集合 ◼ 1) 常用的关系操作 ◼ 查询: 选择、投影、连接、除、并、交、差 ◼ 数据更新: 插入、删除、修改 ◼ 查询的表达能力是其中最主要的部分 ◼ 2) 关系操作的特点 ◼ 集合操作方式,即操作的对象和结果都是集合。 ◼ 非关系数据模型的数据操作方式:一次一记录 ◼ 文件系统的数据操作方式 ◼ 3) 关系数据语言的种类 ◼ 关系代数:用对关系的运算来表达查询要求的方式。(过程性的:既要知道要做什么,还要知道怎么做) ◼ 关系演算:用谓词来表达查询要求 ◼ (非过程性:是一种可以不必知道如何获得结果就能表达所要结果的语言。 ) ◼ 面向转化的语言:用关系表示的输入数据转换成用单个关系表示的结果。(非过程性化的语言,如:SQL) ◼ 按例子查询/按窗体查询:由于带有图形界面,用户可以见到一个或多个关系的具体样例。(如:Access) ◼ 4) 关系数据语言的特点 ◼ 关系语言是一种高度非过程化的语言 ◼ 能够嵌入高级语言中使用 3. 关系的三类完整性约束 关系的完整性是指关系中数据值与其描述的应用对象实际状态保证一致的约束条件 ◼ 实体完整性 ◼ 通常由关系系统自动支持 确保表中所有行的数据不重复(主属性不能取空值。) 例: 选修(学号,课程号,成绩) “学号、课程号”为主码,则两个属性都不能取空值。 引用完整性: 确保关联之间数据的一致性,即确保进入一个表的数据与相关的表之间数据同步。 例: 学生实体、专业实体以及专业与学生间的一对多联系 学生(学号,姓名,性别,专业号,年龄) 专业(专业号,专业名) 外键(或叫外部关键字)是指一个表中的某个属性是另一个表的主关键字。 应用语义完整性: 确保数据库中的数据是有意义的。 ◼ 一般用数据类型和约束来保证
用户定义后由系统支持 ■例:性别(男/女) 关系的完整性一实例 学号姓名「年龄 匚课程号课程名 「学号课程号「成绩■ 学生情况表 果程表 学生修课表 修课表中不允许出现学生”表中没有的学号:时也不允许出现课果程”表中 表中的”课程号 直也必须是课程表中“课程号”的子集。可以通过定义 来实现,定义修课表中的学号是学生表的外键,修课表中的课程号是课程 表的外键。注意是先有主关键字值,后有外键值 22关系模式 关系概念模式关系内模式关系外模式两级映像 1、关系概念模式 ■关系概念模式主要包括出现在DB中的每个关系的说明,它包括对关系名、属性名和属性取值范围(类型)的说 明 在关系数据模型中可不说明关系与关系间的联系。关系与关系间的联系是通过连接属性实现的 概念模式由DBMS提供的数据定义语言(DDL)来定义和描述。 create table学生(学号char(6 primary key,姓 名char(6),性别char(2),年龄 smallint,班级号 har(6), constraint pk ks3 foreign key(班级 号) references班级(班级号) 例:有如下两个关系: 班级(班级号,班级名,人数),学生(学号姓名,性别,年龄,班级号 相应属性取值类型 名属性名类型「宽度各注 和宽度如右表所示 班级号字符6 班级名字符 级「人数数值 学生性别字符2 年龄数值 学生班级号字符6外部关键字 班级与学生关系说明 2关系内模式 ■从原理上讲,关系内模式与其他类型DBS的内模式没有什么不同,RDB中的每个基本表都应对应一个存储文 基于主关键字进行直接存取,一般可根据主关键字建立相应索引 在关系内模式中不用说明存储文件,存储文件的说明由 RDBMS根据基本表的定义自动映射产生 在关系内模式主要内容中要说明的是索引 ■内模式由DBMS提供的数据定义语言(DDL)来定义和描述 学生:按学号升序创建惟一的聚簇索引; create unique clustered index idx xh on学生(学号); 3关系外模式 ■外模式是概念模式的逻辑子集,是用户与DBS的接口,是对用户所用到的那部分数据的描述。 ■如:窗体、查询等
8 ◼ 用户定义后由系统支持 ◼ 例:性别(男/女) 关系的完整性-实例 ◼ 修课表中不允许出现“学生”表中没有的学号,同时也不允许出现“课程”表中 没有的课程号,修课表中“学号”的值是在学生表的“学号”的值的子集。修课 表中的“课程号” 的值也必须是课程表中“课程号”的子集。可以通过定义外键 来实现,定义修课表中的学号是学生表的外键,修课表中的课程号是课程 表的外键。注意是先有主关键字值,后有外键值 学号 姓名 年龄 …… …… …… …… …… 课程号 课程名 …… …… …… …… 学号 课程号 成绩 …… …… …… …… 学生情况表 课程表 学生修课表 主关键字 ➔ 2.2 关系模式 关系概念模式 关系内模式 关系外模式 两级映像 1、关系概念模式 ◼ 关系概念模式主要包括出现在 DB 中的每个关系的说明,它包括对关系名、属性名和属性取值范围(类型)的说 明。 ◼ 在关系数据模型中可不说明关系与关系间的联系。关系与关系间的联系是通过连接属性实现的。 ◼ 概念模式由 DBMS 提供的数据定义语言( DDL ) 来定义和描述。 ◼ 班级与学生关系说明 例:有如下两个关系: 班级(班级号,班级名,人数), 学生(学号姓名,性别,年龄,班级号) 相应属性取值类型 和宽度如右表所示 create table 学生 (学号 char(6) primary key, 姓 名 char(6), 性别 char(2), 年龄 smallint, 班级号 char(6)),constraint pk_ks3 foreign key(班级 号) references 班级 (班级号)); 2.关系内模式 ◼ 从原理上讲,关系内模式与其他类型 DBS 的内模式没有什么不同,RDB 中的每个基本表都应对应一个存储文 件。 ◼ 基于主关键字进行直接存取,一般可根据主关键字建立相应索引。 ◼ 在关系内模式中不用说明存储文件,存储文件的说明由 RDBMS 根据基本表的定义自动映射产生。 ◼ 在关系内模式主要内容中要说明的是索引。 ◼ 内模式由 DBMS 提供的数据定义语言( DDL )来定义和描述。 ◼ 学生:按学号升序创建惟一的聚簇索引;create unique clustered index idx_xh on 学生(学号); 3.关系外模式 ◼ 外模式是概念模式的逻辑子集,是用户与 DBS 的接口,是对用户所用到的那部分数据的描述。 ◼ 如:窗体、查询等