790 likes | 988 Views
第十章 关系数据库系统( 2 ). 第十章 关系数据库系统. 10.1 数据库基础 10.2 数据模型 10.3 数据的完整性 10.4 基本表的构造 10.5 关系数据库的规范化 10.6 关系模式的转换 10.7 SQL 语言 10.8 应用程序开发. 10.5 关系数据库的规范化. 关系模型 关系数据库是表的集合,表即关系 单一的数据结构 —— 关系 关系模式 —— 对关系的描述。包含:关系名、组成该关系的各属性名、属性的类型以及属性的依赖关系。 关系模式和关系:型和值. 10.5 关系数据库的规范化. 关系模型(续)
E N D
第十章 关系数据库系统 10.1 数据库基础 10.2 数据模型 10.3 数据的完整性 10.4 基本表的构造 10.5关系数据库的规范化 10.6 关系模式的转换 10.7 SQL语言 10.8 应用程序开发
10.5 关系数据库的规范化 • 关系模型 • 关系数据库是表的集合,表即关系 • 单一的数据结构——关系 • 关系模式——对关系的描述。包含:关系名、组成该关系的各属性名、属性的类型以及属性的依赖关系。 • 关系模式和关系:型和值
10.5 关系数据库的规范化 • 关系模型(续) • 单一的数据结构——关系(续) • 码/键(key) • 超码:可以惟一标识关系的一个或多个属性的集合 • 候选码:任意真子集都不能称为超码的最小超码 • 主码:被数据库设计者选中来区分不同实体的候选码
10.5 关系数据库的规范化 • 关系模型(续) • 关系操作 • 选择 • 投影 • 连接 • 除 • 并 • 交 • 差
10.5 关系数据库的规范化 • 关系模型(续) • 关系的完整性约束 • 实体完整性 • 一个关系通常对应现实世界的一个实体集 • 实体是相互区分的,具有唯一性标识 • 关系模型中主码为唯一性标识 • 主码不能取空值 • 引用完整性(参照完整性) • 外码(外键):关系R中含有与另一个关系S的主码K相对应的属性组F • R中每个元组在F上的值:为空或与S中某个元组的主码值相同 • 语义完整性
10.5 关系数据库的规范化 • 模式 • 模式是数据库中全体数据的逻辑结构和特征的描述 • 是数据库系统结构中的中间层 • 与数据的物理存储细节和硬件环境无关 • 与具体应用程序以及应用开发工具和环境无关
10.5 关系数据库的规范化 • 外模式(用户模式) • 是用户能够看见和使用的局部数据的逻辑结构和特征的描述 • 与具体的应用有关 • 内模式 • 存储模式
10.5 关系数据库的规范化 • 二级映射 • 外模式/模式映射 • 同一模式对应多个外模式。保证外模式的稳定性 • 模式/内模式映射 • 一个模式对应一个内模式。物理结构的变化不会影响模式。 • 模式是数据库设计的核心和关键
10.5 关系数据库的规范化 • 关系模型的逻辑结构——二维表
10.5 关系数据库的规范化 • 经销信息(员工编号,员工姓名,部门编号,部门主管,订单编号) • 假设: (1) 一个部门包含多个员工,一个部门只包含一个部门主管; (2) 员工编号和部门编号唯一; (3) 一个员工可以经手多个订单,而一个订单可能由多个人经手。
10.5 关系数据库的规范化 • 表 经销信息
10.5 关系数据库的规范化 • 出现的问题: (1) 数据冗余,同部门主管在多个元组中重复出现; (2) 更新异常,只更新某一元组部门主管,则同一部门有不同的部门主管; (3) 插入异常,一个部门刚成立,无新员工,员工及部门信息无法输入; (4) 删除异常,一个订单取消,则删除部分员工信息(只经手了该订单)。
10.5 关系数据库的规范化 • 关系的数学定义 定义1 域(Domain)是值的集合。 例如:整数、实数,长度小于25字节的字符串集合等都可以域。
10.5 关系数据库的规范化 • 定义2 给定一组域D1,D2,D3,… Dn(可以有相同的)。D1,D2,D3,… Dn的笛卡尔积(Cartesian Product)为 D1×D2×D3×…×Dn= {(d1,d2,…,dn) | di∈Di,i=1,2,3…,n}。 其中每一个元素(d1,d2,…,dn)叫做一个n元组。元素中每一个值叫做一个分量。 • 例: • D1=男人集合(MAN)={王兵,李平,张英} • D2=女人集合(WOMAN)={丁梅,吴芳} • D3=儿童集合(CHILD)={王一,李一,李二}
10.5 关系数据库的规范化 • 例: • D1=男人集合(MAN)={王兵,李平,张英} • D2=女人集合(WOMAN)={丁梅,吴芳} • D3=儿童集合(CHILD)={王一,李一,李二} • D1×D2×D3 ={王兵,丁梅,王一},{王兵,丁梅,李一},{王兵,丁梅,李二},{王兵,吴芳,王一},{王兵,吴芳,李一},{王兵,吴芳,李二},{李平,丁梅,王一},{李平,丁梅,李一},{李平,丁梅,李二},…… 共18个元组。
10.5 关系数据库的规范化 • 定义3 • D1×D2×D3×…×Dn的子集叫做在域D1,D2,D3,… Dn上的关系,用R(D1,D2,…,Dn)来表示。每个元素是关系中的元组,用t表示。 • 例 MAN WOMAN CHILD 王兵 丁梅 王一 李平 吴芳 李一 李平 吴芳 李二 t[Di]表示t元组在属性Di上的值。 t1[MAN] = “王兵”
10.5 关系数据库的规范化 • 关系实质上是一个二维表。表的每一行是一个元组,每一列是一个属性(域)。 • 关系是元组的集合,也是所涉及的属性集的笛卡尔积的子集。 • 关系模式是这个元组集合的结构上的描述。 • 关系的概念对应于程序设计语言中变量的概念;关系模式则对应于程序设计语言中的类型定义的概念。如结构体。 • 所有的关系模式则构成数据库模式
10.5 关系数据库的规范化 • 关系为什么只是笛卡尔的子集呢? • 关系是由元组的语义确定的 • 笛卡尔积中使得元组语义为真的元素的集合 • 数据依赖 • 元组语义的一个重要体现就是对关系的约束条件 • 约束的一种就是属性值间的相互关连。即数据依赖。 • 数据依赖中最重要的为函数依赖。此外还有多值依赖。
10.5 关系数据库的规范化 • 函数依赖 • 定义4 • 考虑一个关系模式R,令α、β为属性集的子集。R上成立函数依赖 α ->β 的条件是: 如果对任意合法关系r(R)及r中任意两个元组t1,t2。如果t1[α]=t2[α],则t1[β] = t2[β]; • 完全函数依赖 • 传递函数依赖
10.5 关系数据库的规范化 • 完全函数依赖 • 在关系模式R中,如果X->Y,并且对于X的任何一个真子集X’,都有X’!->Y,则Y对X完全函数依赖。记作:X Y • 传递函数依赖 • 在关系模式R中,如果X->Y, (Y不包含于X),Y!->X,Y->Z,则称Z对X传递函数依赖。
10.5 关系数据库的规范化 数据库范式理论(Normal Form) • 第一范式:关系模式中的每个属性值都是不可再分的最小数据单位。 • 第二范式:每一个非主属性完全函数依赖于码。 • 第三范式:任何一个非主属性不传递依赖于码。
10.5 关系数据库的规范化 关系模式: R(u)=R(A1, A2, A3, …, An) 属性间存在函数依赖(Functional Dependency) 。 R学生(学号,姓名,出生地,出生日期,班级,专业,…) 其中出生地与出生日期无关,班级与专业有关,但所有属性与姓名有关,即函数依赖。
10.5 关系数据库的规范化 键:函数依赖中作为决定因素的属性或属性组是关系模式的键; 外部键:在关系模式R中某属性X并非是键,但却是另一个关系模式的键,则称X为外部键。主键和外部键提供了一个表示关系间联系的手段。 如:学生(学号,姓名,班级,专业) 宿舍(专业,楼号,地址)
10.5 关系数据库的规范化 第一范式:关系模式中的每个属性值都是不可再分的最小数据单位。
10.5 关系数据库的规范化 第一范式:关系模式中的每个属性值都是不可再分的最小数据单位。 从而可以实现查询、统计等功能。
10.5 关系数据库的规范化 • 第二范式:每一个非主属性完全函数依赖于码。
10.5 关系数据库的规范化 • 属性部分依赖于码,会导致: A.插入、删除异常,如删除某种牌号。 B.修改复杂,由于冗余大,则重复修改,造成修改数据不一致。
10.5 关系数据库的规范化 解决的办法:分解为2个表,即2个关系模式: 材料(牌号,C, Si, Mn, Cr) 标准(牌号,标准,Ni, P, S)
10.5 关系数据库的规范化 • 第三范式:任何一个非主属性不传递依赖于码。 • 例如1:职员(姓名,出生日期,年龄) • 例如2:储蓄(银行帐号、存款、取款、余款) • 例如3,发动机结构参数(推力,重量,推重比)
10.5 关系数据库的规范化 数据库范式理论(Normal Form) • 第一范式:关系模式中的每个属性值都是不可再分的最小数据单位。 • 第二范式:每一个非主属性完全函数依赖于码。 • 第三范式:任何一个非主属性不传递依赖于码。
10.6 关系模式的转换 • 构建E-R模型; • 实现从E-R模型转换为关系模式。
实体-关系模型(E-R模型) • 实体(Entity)——人、产品、企业 • 属性(Attribute)——特征、数据项 • 联系(Relationship)——表之间的关系 • 键/码(Key)——唯一标识属性 • 域(Domain)——取值范围
实体——学生 • 属性:学号、姓名、性别、专业
通常一个数据库是由多个表构成的,通常一个实体对应一个表。通常一个数据库是由多个表构成的,通常一个实体对应一个表。 实体之间的联系(relationship) • 一对一联系(1:1) • 一对多联系(1:n) • 多对多联系(m:n)
10.3 数据的完整性 • 实体间的联系
10.6 关系模式的转换 • 数据库设计涉及多学科,三分技术,七分管理,十二分基础数据,这是数据库建设的基本规律 。应该具备多方面的技术和知识,有: a. 计算机科学基础知识和程序设计技术; b. 数据库基础知识和数据库设计技术; c. 软件工程方法,软件开发规范; d. 应用领域的知识。
10.6 关系模式的转换 • 数据库设计的六个阶段
10.6 关系模式的转换 为谁用?功能?有哪些数据项? • 数据库设计的六个阶段 构建E-R模型。 创建基本表。确定数据类型。 数据存储。 应用程序开发。
10.6 关系模式的转换 • 构建E-R模型; • 实现从E-R模型转换为关系模式。 • 课堂提问:写出学生与选课E-R实体关系图。
10.6 关系模式的转换 • 学生与选课E-R图,转换为关系模式 学生(学号,姓名,年龄,专业) 课程(课程号,课程名称,学分) 选课(学号,课程号,成绩)
10.6 关系模式的转换 • 从E-R模型转换为关系模式的规则: (1)一般情况下,每个实体转换为一个关系模式,实体的属性就是关系的属性; (2)当是1对n关系时,n边转换为关系模式中增加1边的主码。。 (3) m对n情况,将每个联系也转换为一个关系模式,它的属性由与该联系相连的实体的主码及该联系的属性组成。
10.6 关系模式的转换 小结: • 按照转换规则,建立的数据库则满足3范式要求; • 一个关系模式就对应一个基本表;
10.7 SQL语言 • 数据库逻辑结构设计——基本表
10.7 SQL语言 • SQL (Structured Query Language)四大功能,特点: (1)一体化特点; (2)统一的语言,两种使用方式; (3)高度的非过程化。
10.7 SQL语言 • 数据定义功能 CREATE TABLE TEACHER CREATE TABLE S CREATE VIEW TEACHER-COURSE • 数据操纵 • (1)简单查询
10.7 SQL语言 • SELECT 列名序列 FROM 表名 [WHERE 条件表达式] [ORDER BY 排序依据列] 例1SELECT SNO, SNAME, SEX FROM S 例2 SELECT SNO, SNAME FROM S WHERE SPL= ’飞动’ 例3 SELECT BOOK-NO,TITLE,AUTHER, PRICE FROM BOOKS WHERE SORT-NO, LIKE TP%