第4章 数据库技术及应用 软件开发技术基础 计算机教学实验中心 2006
问题的提出 什么是数据库? DBMS? 数据库技术的发展及未来? 有哪些常用的数据库系统平台? 数据库中数据如何存放?怎样组织? 什么是数据模型? 数据之间的联系? 什么是数据规范化?如何规范化?
第一部分:数据库技术基础 数据模型 规范化理论 关系数据库标准语言SQL
一、数据模型 数字化过程的三个世界 概念模型 数据模型
数字化过程的三个世界 从现实生活中的客观事物到存放于计算机中的数据,这样一个加工过程可划分为三个世界: 现实世界:事物的客观存在,由事物及其性质反映。 信息世界:是对现实世界的抽象,事物在信息世界中称为实体。反映事物及其之间联系的模型称为(实体)概念模型。 数据世界:信息的数据化。用记录和数据项分别描述信息世界中的实体及属性。实体模型数据化后称为数据模型。
概念模型 概念模型是逻辑模型,是求解问题数字化的前期处理过程的产物。它是设计人员对求解问题研究和抽象的结果,也是设计人员和用户之间交流的工具。
基本概念 实体(Entity)客观存在并可互相区别的事物称为实体。 属性(Attribute) 实体具有的特性称为属性。属性组合起来表征了一个学生。 主键(Key) 唯一标识实体的属性或属性组。 域(Domain) 属性的取值范围。 实体类型(Entity Type)具有相同属性的实体所具有的共同特征和性质。用实体名及属性名集合来抽象。例如,学生(学号、姓名、性别、出生年月、系、班级)。 实体集(Entity Set)同种实体的集合。全体学生就是一个实体集。
举例
联系(Relationship) 实体之间存在着三类联系: ⑴ 一对一联系(1:1):实体集A中的每一个实体最多与实体集B中的一个实体,反之亦然。 ⑵ 一对多联系(1:n):实体集A中的每一个实体与实体集B中的n个实体(n>=0)联系,而实体集B中的每一个实体与实体集A最多只有一个实体联系。如班级集和学生集是一对多联系。 ⑶ 多对多联系(m:n):实体集A中的每一个实体与实体集B中的n个实体(n>=0)联系,而实体集B中的每一个实体与实体集A中的m个(m>=0)实体联系。如课程和学生之间的联系。
一对一联系举例(学校:校长)
一对多联系举例(学校:学生)
多对多联系举例(课程:学生) 课程 学生 选课
举例 如学生课程、学生与课程之间的多对多联系: 学生(学号、姓名、性别、年龄) 课程(课程号,课程名,学分) 选课(学号,课程号,成绩) 特点: (1)建立在严格的数学基础上。 (2)简单:结构简单、清晰易用。 (3)存取路径透明。 缺点:查询效率不高。
概念模型的表示方法 实体-联系(E-R Entity-Relation)图是由美籍华人Peter Chen在1976年提出的。 实体:用矩形表示 属性:用椭圆表示 联系:用菱形表示 学生 学号 选课
举例 学生 选修 学号 姓名 性别 年龄 课程 课程号 课程名 学分 成绩 m n
实体模型举例 以教学管理为例: 教学由学生、课程、教师、学习、任课等实体组成。 学生属性:学号、姓名、性别、年龄、班级 课程属性:课程号、课程名称 教师属性:姓名、课程号、课时 学习属性:学号、课程号、分数 任课属性:教师名、课程号、教室
教学实体模型示意图 课程 学习 任课 教师 学生 学号、姓名、性别、班级 姓名、课程号、课时 课程号、课程名 教师名、课程号、教室 学号、课程名、教室
数据模型 关系模型:用关系(表)来描述实体及实体之间的联系。 关系:表 元组:表中的一行 属性:表的一列 主码:唯一确定元组的属性或属性组。 关系的描述方式: 关系名(属性1,属性2, …,属性n) 学生(学号、姓名、性别、出生年月、系、班级)
数据模型 从现实生活中的客观事物到存放于计算机中的数据,这样一个加工过程可划分为三个世界: 现实世界、观念世界和数据世界 在现实世界中,分析客观事物,找出要求解的对象集合,研究这些对象、认识它们的本质及其规律。 在概念世界中,将求解的事物映射为实体,找出实体之间的各种联系,用E-R图来描述。 在数据世界中,将实体模型转换为能够在计算机中处理的数据模型。
现实世界 现实世界 是存在于人脑之外的客观世界,事物及其相互联系就存在于这个世界中。 事物可用“对象”和“性质”来描述 又有“共同事物”和“特殊事物”两个不同级别。
观念世界 观念世界 是现实世界在人脑中的反映,客观事物在概念世界中称为“实体”。 反映事物联系的是实体模型。 实体用“对象”和“属性”来描述 又分为“个体实体”和“总体实体”两个级别。
数据世界 数据世界 是数据在观念世界中信息的数据化,现实世界中的事物及联系在这个世界中用数据模型来描述。 数据模型反映的是数据间的联系。 数据用“数据记录”和“数据项”来描述; 又分为“数据类型”和“数据值”两个不同级别。
数据加工三个阶段的关系 数据 世界 抽 象 过 程 观念 世界 现实 世界 客观世界是信息之源,是设计DB的出发点。 实体模型和数据模型是对客观事物的两级抽象描述。 数据库的核心问题是数据模型。 数 据 模 型 数据 数据分级 数据 世界 记录 项 项 值 抽 象 过 程 实 体 模 型 实体 实体分级 观念 世界 对象 属性 总体 个体 结论: 要得到正确的数据模型,必须首先充分了解客观事物。 事物 事物分级 现实 世界 事物 及 联系 对象 性质 共同 特殊
数据模型(DB)的设计 命名数据模型(数据库名称) 以示区别不同的模型,例如:成绩库.MDB 命名记录类型(数据库结构) 定义数据库记录结构,例如:成绩库记录 学号、课程号、分数 命名每个记录中的数据项(字段) XH(学号)、CNO(课程号)、SCORE(分数) 说明各个记录类型之间的联系 指出各数据项的数据特征 数据类型、长度、值域等。例如,XH ,字符型,长度为7
三种数据模型 数据模型的好坏直接影响到DB的性能。当前较流行的设计方法有三种:关系、层次和网络方法;对应的模型为: 关系模型、层次模型、网络模型。
层次模型 描述层次(树形)结构的模型。 特点: 每个模型中只有一个称为根的最高结点 其它结点都只能和一个父结点相连接(1:M) 查询、访问都必须从根结点开始 最有影响的层次模型的DBS是60年代末,IBM公司推出的IMS层次模型数据库系统。
层次模型示意图 校长 校长办公室 各学院 …… 各职能处 计算机系 电子系 信控系 …计算机教学实验中心 网络所 ….. 软件教研室 校长办公室 各学院 …… 各职能处 ( 电信学院) 计算机系 电子系 信控系 …计算机教学实验中心 网络所 ….. 软件教研室
网络模型 图结构模型,其特点: 可有0个或多个结点无双亲 允许结点有多个双亲 允许结点间有2种以上的关系 存取、访问必须按事先定义好的路径进行(从指定出发点) 最有影响的网络模型是美国数据系统语言协会推出的DBTG系统,也称CODASYL(Conference On DAta SYstem Language)
关系模型 关系模型是由IBM公司的E.F.Codd于1970年首次提出的. 其组织形式是一张二维表,一个表即一个关系;其特点: 一个关系一张表 数据独立性高 操作简单 一行是一个记录 一列是一个数据项(字段)
数据操纵 指查询操作和更新操作: 关系操作的特点是集合操作方式,即操作对象和结果都是集合,而不是单记录的操作方式。 查询操作有选择、投影、连接、并、交、差等; 更新操作有插入、删除和修改。 关系操作的特点是集合操作方式,即操作对象和结果都是集合,而不是单记录的操作方式。
完整性约束 实体完整性约束 关系中元组关键字不能为空且取值惟一。 参照完整性约束 在关系数据库中,关系与关系之间的联系是通过公共属性实现的。这个公共属性是一个关系的关键字,在另一个关系中称为外部关键字(外键)。 系和学生表之间的联系是通过系名实现的,系名是系信息表的关键字,是学生信息表的外键。 系名的取值必须符合实体完整性规则。系信息表称为参照关系,学生信息表称为依赖关系。
S# C# GRADE TNAME TAGE OFFICE 二、关系的规范化概念 如何评价关系模型的好坏,这关系到如何设计关系模型(关系框架)的问题。以SCT关系为例说明存在的问题: SCT关系是由S#(学号)、C#(课程号),GRADE(成绩)、TNAME(教师姓名)、TAGE(教师年龄)、OFFICE(办公室)属性组成。 SCT关系 (学生课程教师关系) S# C# GRADE TNAME TAGE OFFICE S1 C1 90 周 45 301 S1 C2 91 刘 39 302 S1 C3 85 刘 39 302 S1 C4 87 王 51 301 S2 C1 92 周 45 301 S3 C1 75 周 45 301 S3 C2 56 刘 39 302
关系模式的存储异常问题 在上述SCT关系中,至少存在下列问题: 数据冗余 更新异常 插入异常 删除异常
S# C# GRADE TNAME TAGE OFFICE 如果某门课程有100个学生选修,就要出现100个元组(记录),相应的教这门功课的教师的姓名、年龄、办公室也要出现100次。 SCT关系 (学生课程教师关系) S# C# GRADE TNAME TAGE OFFICE S1 C1 90 周 45 301 S1 C2 91 刘 39 302 S1 C3 85 刘 39 302 S1 C4 87 王 51 301 S2 C1 92 周 45 301 S3 C1 75 周 45 301 S3 C2 56 刘 39 302
S# C# GRADE TNAME TAGE OFFICE 对SCT关系中的元组进行修改,可能导致出现存储数据不一致的情况。例如,要修改第一元组中的OFFICE值时,将‘301’改为‘303’,会出现周老师的办公室号码不一致,除非修改所有周老师元组(记录)中的办公室号码。 SCT关系 (学生课程教师关系) S# C# GRADE TNAME TAGE OFFICE S1 C1 90 周 45 303 S1 C2 91 刘 39 302 S1 C3 85 刘 39 302 S1 C4 87 王 51 301 S2 C1 92 周 45 301 S3 C1 75 周 45 301 S3 C2 56 刘 39 302
S# C# GRADE TNAME TAGE OFFICE 如果某课程决定由张老师担任,但在还不知道哪些学生选修前,无法将张老师的记录插入关系中。因为,在SCT关系中(S#,C#)是主关键字,在C#不确定的情况下,根据关系模型的实体完整性规则,不允许主关键字中出现空值。因此,在C#不确定的情况下,不能插入该记录。 SCT关系 (学生课程教师关系) S# C# GRADE TNAME TAGE OFFICE S1 C1 90 周 45 301 S1 C2 91 刘 39 302 S1 C3 85 刘 39 302 S1 C4 87 王 51 301 S2 C1 92 周 45 301 S3 C1 75 周 45 301 S3 C2 56 刘 39 302 C5 张 30 304
S# C# GRADE TNAME TAGE OFFICE SCT关系 (学生课程教师关系) S# C# GRADE TNAME TAGE OFFICE S1 C1 90 周 45 301 S1 C2 91 刘 39 302 S1 C3 85 刘 39 302 S1 C4 87 王 51 301 S2 C1 92 周 45 301 S3 C1 75 周 45 301 S3 C2 56 刘 39 302
关系的规范化举例 显然,SCT关系的性能是很差的。如果将SCT关系分解为两个子关系SC和CT,即SC(S#,C#,GRADE)、CT(C#,TNAME,TAGE,OFFICE) 上述存储异常问题将消失。 C# TNAME TAGE OFFICE C1 周 45 301 C2 刘 39 302 C3 刘 39 302 C4 王 51 301 S# C# GRADE S1 C1 90 S1 C2 91 S1 C3 85 S1 C4 87 S2 C1 92 S3 C1 75 S3 C2 56 SC关系 CT关系
产生储异常问题的原因 为什么会产生存储异常的问题呢?这与每个关系模式中各属性值之间的联系有关。在SCT关系中,(S#,C#)是主关键字,它们的值唯一决定其它所有属性的值,形成一种依赖关系。TANME、TAGE、OFFICE的属性值由课程号C#决定,与学号S#无直接联系。把无直接联系的教师属性和学生学号放在一起,就产生了存储异常的问题。 因此,模式设计时强调“独立的联系,独立表达”。这是一条设计原则。将SCT分解为SC、CT,就符合这条设计原则。 通常,将结构较简单的关系取代结构较复杂关系(简单和复杂是指数据相关性而言)的过程称为关系的规范化。
数据依赖 描述同一关系内各属性之间的相互关系被称为数据依赖。 数据依赖有许多种类型,这里只介绍函数依赖、完全函数依赖和传递依赖的概念。 关系BORROW
关系BORROW 书证号 姓名 单位 住址 书号 书名 日期 8212102 陆华 自控86 女生宿舍206 6201 自控原理 93.07.06 0621 张山 自控教研室 花园路312号 6201 自控原理 93.03.02 0621 张山 自控教研室 花园路312号 3104 数据处理 93.04.04 0621 张山 自控教研室 花园路312号 5112 晶体管电路 93.06.05 8212103 何白 自控86 女生宿舍206 5112 晶体管电路 93.07.06 书证号 姓名 单位 住址 书号 书名 日期
函数依赖 定义:在关系R中,如果每个属性(或属性组)A的值只有一个属性B的值与之对应,就称属性B函数依赖于属性(或属性组)A, 举例,在关系BORROW中,各属性之间的函数依赖可描述为: 借书证号 姓名 借书证号 单位 借书证号 住址 书号 书名 (借书证号,书号) 日期 知道了“借书证号”,就知道了“姓名”、“单位”和“住址”,即“借书证号”决定了“姓名”、“单位”和“住址”。
主属性、非主属性 定义: 如果关系模式R中的某属性A是候选关键字的一部分,则称A是关系模式R中的主属性,反之则为非主属性。 例如,关系BORROW中,候选关键字只有一个(借书证号,书号),所以,“借书证号”和“书号”组是主属性,其它属性都是非主属性。
完全函数依赖 定义:如果非主属性B函数依赖于构成某个候选关键字的一组主属性A,而不函数依赖于A的任何一个真子集,则称B完全函数依赖于A;反之,则称B部分函数依赖于A。 记为: ƒ A B
完全函数依赖举例 ƒ {借书证号,书号} 日期 举例:在关系BORROW中,只有属性“日期”完全函数依赖于关键字({借书证号,书号}),其它非主属性都是部分函数依赖于关键字。 这里,{借书证号,书号}是主属性,“日期”是非主属性,“借书证号“和 “书号”都是{借书证号,书号}的真子集,因有{借书证号,书号}日期,而 借书证号 日期, 书号 日期(不函数依赖),所以, ƒ {借书证号,书号} 日期
部分函数依赖 部分函数依赖: 在SC关系中,“GRADE”函数依赖于主关键字{S#、C#},但决定“GRADE”的只是“C#”,与“S#”无关。所以,“GRADE”部分函数依赖于“C#”。 S# C# GRADE S1 C1 90 S1 C2 91 S1 C3 85 S1 C4 87 S2 C1 92 S3 C1 75 S3 C2 56 SC关系
关系BICYCLE 品 名 厂 家 厂 长 产 地 年产量 单 价 黄山牌26男车 黄山自行车厂 刘同利 合肥 20000 336.00 品 名 厂 家 厂 长 产 地 年产量 单 价 黄山牌26男车 黄山自行车厂 刘同利 合肥 20000 336.00 黄山牌26坤车 黄山自行车厂 刘同利 合肥 23000 326.00 红旗牌24坤车 海河自行车厂 王山 天津 76000 310.00 大象牌28男车 生发自行车厂 丁三元 广州 10000 310.00 大象牌28加重 生发自行车厂 丁三元 广州 50000 340.00 大象牌28跑车 生发自行车厂 丁三元 广州 10000 371.00 大象牌26男车 生发自行车厂 丁三元 广州 30000 320.00 大象牌26坤车 生发自行车厂 丁三元 广州 50000 320.00 大象牌24坤车 生发自行车厂 丁三元 广州 10000 305.00
传递函数依赖 定义:设R是一个关系模式,X、Y和Z是的子集,若X→Y,Y→Z,且X不函数依赖于Y,称Z传递函数依赖于X。 记为: 举例,关系BICYCLE中的“厂长”和“产地”,传递函数依赖于“品名”。因为, 品名 厂家,厂家 厂长 品名 厂家,厂家 产地 所以,厂长、产地传递函数依赖于品名。 t X Z 品名 厂长, 品名 产地 t
传递函数依赖举例 传递依赖的关系:学生住宿的“楼号”依赖于“学号”,学生应交的住宿费是由“楼号”决定的,即“收费”依赖于“楼号”,“楼号”依赖于“学号”、而“收费”又依赖于“楼号” 学号 楼号 学号 楼号 收费 100 2 500 120 4 600 130 150 8 800 180 学生住宿收费表 (有传递依赖的关系) 楼号 收费 所以, 学号 收费 t 进行分解,可以 消除传递依赖
关系规范化——范式 第一范式——1NF 第二范式——2NF 第三范式——3NF Boyce-Codd范式——BCNF 第四范式——4NF 关系规范化有不同的标准,将规范标准称之为范式。可以把范式看成是用范式定义消除数据冗余的程度。范式分为: 第一范式——1NF 第二范式——2NF 第三范式——3NF Boyce-Codd范式——BCNF 第四范式——4NF 第五范式——5NF 它们满足下列关系: 5NF 4NF BCNF 3NF 2NF 1NF
非规范化关系 表中具有复合数据项和多值数据项的都不是规范化的表。 复合数据项 多值数据项 工 资 职工号 姓 名 基本工资 职务工资 工 资 职工号 姓 名 基本工资 职务工资 工龄工资 多值数据项 职工号 姓 名 职称 系名 系办公地址 学历 毕业年份 大学 研究生 1963 1982 001 张强 教授 计算机 1-205 002 李刚 讲师 电信 2-204 大学 1989
转化非规范化关系举例 表中具有复合数据项和多值数据项的都不是规范化的表。 消除复合数据项 消除多值数据项 职工号 基本工资 职务工资 工龄工资 姓 名 消除多值数据项 职工号 姓 名 职称 系名 系办公地址 学历 毕业年份 001 张强 教授 计算机 1-205 大学 1963 001 张强 教授 计算机 1-205 研究生 1982 002 李刚 讲师 电信 2-204 大学 1989
第一范式——1NF 定义:所有符合关系定义(二维表格)的关系被称为规范关系,或称为第一范式,记为1NF。 或曰: 每个属性都必须是原子值,即仅仅是一个简单值而不含内部结构。 如果关系模式R的每个关系的各个属性值都是基本数据项,则称R为第一范式。
第一范式的讨论 关系BORROW虽然满足了1NF,但还存在不规范的问题。 数据冗余 一个学生要借10本书,他的有关信息要重复存放10次; 数据冗余 一个学生要借10本书,他的有关信息要重复存放10次; 插入问题 若某学生没借过书,则有关信息无法插入;因为,作为主关键字(借书证号,书号)的“书号”无值; 删除问题 若某学生归还了借阅的全部图书,则有关他的信息将全被删除(丢失)。 结论: 作为关系模式来说,在某些应用中,只满足1NF还不够,还要进一步规范化。
第二范式——2NF 如果R是1NF,并且每个非主属性都完全函数依赖于关键字,则称R为第二范式,记为2NF。 关系BORROW不是第二范式,因为其属性“姓名”、“单位”、“住址”、“书名”都不完全函数依赖于唯一的候选关键字 {借书证号,书号}。 作下列投影运算,就可将其分解为2NF的关系: READER = 借书证号、姓名、单位、住址(BORROW) BOOK = 书号、书名(BORROW) BORROW = 借书证号、书号、日期(BORROW)
2NF的关系(a)READER关系 借书证号 姓 名 单 位 住 址 2NF的关系BOOK 8612101 陆华 自控86 女生宿舍206 借书证号 姓 名 单 位 住 址 8612101 陆华 自控86 女生宿舍206 0621 张山 自控教研室 花园路312号 8612103 何白 自控86 女生宿舍206 8603211 李维 自控86 男生宿舍101 书号 书 名 6201 自控原理 3104 数据处理 5112 晶体管电路 0116 机械制造 0229 金相分析 2NF的关系BOOK
2NF的关系(c)关系BORROW 借书证号 书 号 日 期 8612102 6201 93.07.06 借书证号 书 号 日 期 8612102 6201 93.07.06 0621 6201 93.03.02 0621 3104 93.04.04 0621 5112 93.06.05 8612103 5112 93.07.06 8603211 0116 93.05.05 8603211 0229 93.05.05
关系BICYCLE 品 名 厂 家 厂 长 产地 年产量 单 价 黄山牌26男车 黄山自行车厂 刘同利 合肥 20000 336.00 品 名 厂 家 厂 长 产地 年产量 单 价 黄山牌26男车 黄山自行车厂 刘同利 合肥 20000 336.00 黄山牌26坤车 黄山自行车厂 刘同利 合肥 23000 326.00 红旗牌24坤车 海河自行车厂 王山 天津 76000 310.00 大象牌28男车 生发自行车厂 丁三元 广州 10000 310.00 大象牌28加重 生发自行车厂 丁三元 广州 50000 340.00 大象牌28跑车 生发自行车厂 丁三元 广州 10000 371.00 大象牌26男车 生发自行车厂 丁三元 广州 30000 320.00 大象牌26坤车 生发自行车厂 丁三元 广州 50000 320.00 大象牌24坤车 生发自行车厂 丁三元 广州 10000 305.00
第三范式——3NF 如果关系模式R满足2NF,且它的任何一个非主属性都不传递依赖于任何候选关键字,则称R为第三范式,记为3NF。 例关系BICYCLE满足第二范式,但不满足第三范式,因为: t 品名 厂家, 厂家 厂长 t 品名 厂家, 厂家 产地 去掉其中的传递依赖关系,即可得到满足第三范式的关系。 例如,新关系BICYCLE和(c)新关系BICYCLE_PLANT。
第三范式——3NF 举例 (a)关系BICYCLE 品 名 厂 家 厂 长 产地 年产量 单 价 品 名 厂 家 厂 长 产地 年产量 单 价 黄山牌26男车 黄山自行车厂 刘同利 合肥 20000 336.00 黄山牌26坤车 黄山自行车厂 刘同利 合肥 23000 326.00 红旗牌24坤车 海河自行车厂 王山 天津 76000 310.00 大象牌28男车 生发自行车厂 丁三元 广州 10000 310.00 大象牌28加重 生发自行车厂 丁三元 广州 50000 340.00 大象牌28跑车 生发自行车厂 丁三元 广州 10000 371.00 大象牌26男车 生发自行车厂 丁三元 广州 30000 320.00 大象牌26坤车 生发自行车厂 丁三元 广州 50000 320.00 大象牌24坤车 生发自行车厂 丁三元 广州 10000 305.00
第三范式——3NF 举例 经投影操作: BICYCLE= 品名、厂家、年产量、单价(BICYCLE) 得: (b)新关系BICYCLE 品 名 厂 家 年产量 单 价 黄山牌26男车 黄山自行车厂 20000 336.00 黄山牌26坤车 黄山自行车厂 23000 326.00 红旗牌24坤车 海河自行车厂 76000 310.00 大象牌28男车 生发自行车厂 10000 310.00 大象牌28加重 生发自行车厂 50000 340.00 大象牌28跑车 生发自行车厂 10000 371.00 大象牌26男车 生发自行车厂 30000 320.00 大象牌26坤车 生发自行车厂 50000 320.00 大象牌24坤车 生发自行车厂 10000 305.00
第三范式——3NF 举例 经投影操作: BICYCLE_PLANT=厂家,厂长,产地(BICYCLE),得 厂 家 厂 长 产 地 黄山自行车厂 刘同利 合肥 海河自行车厂 王山 天津 生发自行车厂 丁三元 广州 (c)新关系BICYCLE_PLANT 新关系(b)BICYCLE和(c)BICYCLE_PLANT 满足第三范式的关系。
综合举例-SCT关系 SCT关系是由S#(学号)、C#(课程号),GRADE(成绩)、TNAME(教师姓名)、TAGE(教师年龄)、OFFICE(办公室)属性组成。 S# C# GRADE TNAME TAGE OFFICE S1 C1 90 周 45 301 S1 C2 91 刘 39 302 S1 C3 85 刘 39 30 S1 C4 87 王 51 301 S2 C1 92 周 45 301 S3 C1 75 周 45 301 S3 C2 56 刘 39 302 SCT关系 (学生课程教师关系) SCT是1NF,而不是2NF。因为(S#,C#)是SCT的候选关键字,TNAME是非主属性,C#是(S#,C#)的一个真子集,C#TNAME。
SCT从1NF分解为2NF 将SCT关系分解为两个子关系SC和CT,即SC(S#,C#,GRADE)、CT(C#,TNAME,TAGE,OFFICE),即得到两个2NF关系。 SC关系 CT关系 C# TNAME TAGE OFFICE C1 周 45 301 C2 刘 39 302 C3 刘 39 302 C4 王 51 301 S# C# GRADE S1 C1 90 S1 C2 91 S1 C3 85 S1 C4 87 S2 C1 92 S3 C1 75 S3 C2 56 CT还有冗余,TAGE传递依赖于C#,可再进行分解。
CT从2NF分解为3NF CT=C#,TNAME(CT) TO= TNAME,OFFICE(CT),得两个满足3NF的关系: TO关系 TNAME TAGE OFFICE 周 45 301 刘 39 302 王 51 301
总结 一般而言,分解到3NF就能满足应用需要。 范式级别越高,产生的新关系就越多,数据查询时就不得不进行大量的联结运算。 非规范关系消去重复组或空白 变为1NF关系; 1NF关系中消去非主属性对候选 关键字的部分依赖变为2NF关系; 再消去非主属性对候选关键字的 传递依赖变成3NF; 随之消去所有部分依赖就变成 BCNF关系; 若消去函数依赖以外的所有多值 依赖,就变成4NF关系; 最后,消去所有不按候选关键字 进行连接运算的连接相关性,得 到5NF关系。 关系世界(规范与非规范关系) 1NF 2NF 3NF BCNF 4NF 5NF 一般而言,分解到3NF就能满足应用需要。 范式级别越高,产生的新关系就越多,数据查询时就不得不进行大量的联结运算。
结束语 谢谢! 欢迎参加到中心网站课程的学习讨论中来。 中心网址: http://ctec.xjtu.edu.cn 我的E-mail地址: LZQ@ctec.xjtu.edu.cn 谢谢!
基本概念 数据(Data)是用来记录信息的可识别的符号,是信息的具体表现形式。 数据表示 可用实体(Entity)、属性(Attribute)和属性值(Attribute Value)表示。 (“C52001”,“Java技术与应用”,3,48) 数据处理(Data Processing)是表示一系列活动的一个总过程,包括收集、存储、加工、检索和发布数据;并在此过程中过滤掉无关数据,抽取最有价值的相关数据,以供计算机进一步处理使用。 数据处理是计算机应用中的最大的一个分支。最初指在计算机上加工商业、企业的信息和数据,现在常用来泛指非科技工程方面的计算、管理和操纵任何形式的数据资料。
数据库(DataBase) 在计算机上合理存放的相互关联的数据的集合,被称为数据库。 它具有下列特点: 最小冗余(尽可能不重复) 可以最优方式提供数据共享 数据的独立性 实现数据的统一管理和数据安全的保障 数据库技术是数据处理最有效的手段。 数据库的特点是:数据冗余小、共享度高、数据结构化强、数据独立性强、数据控制统一管理和数据安全有保障等。
数据库管理系统(DBMS) DBMS是在OS支持下工作的数据库管理软件。 对内,它负责管理数据库; 对外,它向用户提供一整套命令,用于合法用户对数据库的各种操作;包括创建DB、定义数据、增、删、改DB记录、统计计算等。
DBMS的功能 数据定义 DBMS提供了数据定义语言DDL。用户利用DDL可以方便地定义DB中数据的逻辑结构。 数据操纵 用户利用提供的数据操纵语言DML 可以方便地实现对数据的各种操作。 完整性约束检查 支持常用的完整性检查(指数据必须符合一定的规则,如学号必须惟一)。 访问控制 DB中数据可以共享,但只有合法用户才能访问授权的数据。 并发控制 允许多用户同时访问DB,但要避免并发操作可能带来的不一致性问题。 数据库恢复 返回
数据库技术发展的历史 它起源于60年代末。30多年来,在理论上、实现技术上都有很大的发展。 世界第一个数据库IDS于1964年由美国通用电气公司开发成功(它是网状结构的数据库)。 1969年,美国的IBM公司研制了世界上第一个层次数据库管理系统IMS(Information Management System)。 1970年,IBM公司E.F.Codd发表了一篇题为“大型共享DB数据的关系模型”论文,提出了RDB模型的概念、关系代数和关系演算,从而奠定了RDB的理论基础。 如今,数据库技术已成为计算机学科的一个重要研究领域,DB已成为MIS、OA、CAM等领域的主要工具之一。
数据管理的发展阶段 数据管理经历了4个发展阶段: 手工管理阶段 文件系统阶段 数据库系统阶段 分布式数据库系统阶段
手工管理阶段(46~50年代中期) 计算机硬件技术落后,还没有像磁盘这样的存储介质,数据无法永久存储,也没有OS和其他处理数据的软件,而只有CPU指令系统和汇编语言软件。早期计算机数据处理应用没有专门管理数据的软件,程序自带数据。 其特点是: 数据独立性差,不能共享; 数据冗余 无法集中式管理 主要用于科学计算 应用程序1 应用程序n …... 数据组1 数据组n 101101011101011101110001100100110
文件系统阶段(50~60年代) 数据以文件形式存放于外存中,数据由文件系统FS和OS统一管理,数据通过程序方式来实现操作。 其特点是: 文件系统是应用程序和数据间的公共接口、统一存取 文件由用户自定义,格式和内容不统一,难于共享 数据冗余度大 数据共享性和数据独立性不强是文件管理阶段的缺点。文件系统本身无法解决这些问题。 应用程序1 应用程序n …... 数据组1 数据组m 文件 系统
数据库系统阶段(60年代~至今) 由DBMS实现对DB的定义、管理和操作。DBMS是用户和数据间的接口,特别是网络和通信技术的发展,使异地、异机间的数据共享成为现实。其特点是: 能为多用户共享 数据冗余度最小 可以交互方式或程序方式操作 问题: 异地共享一处数据,容易造成网络通信“堵塞” 应用程序1 应用程序n …... DBMS DB
分布式数据库系统阶段(80年代中期) 分布式数据库DDBS(Distributed DBS)技术是DB技术和网络、通信技术的结晶产物。 其主要特点: 处理的数据分散在各个结点上,每个结点的数据由本地的DBMS管理,各结点间可以数据共享; 充分利用、发挥各个结点的资源优势,减轻网络负担。 DBMS1 DBMSi DB1 DBi DDBMS …..
数据库应用及发展趋势 近年来,在计算机领域出现了许多新技术,例如分布式处理技术、并行处理技术、人工智能、多媒体处理技术、模糊技术和面向对象技术等。 随着与其他学科内容的结合,出现了一些更适合特定领域的新型数据库技术,例如工程数据库、模糊数据库、统计数据库、时态数据库和演绎数据库等。 其主要趋势包括:分布式数据库、面向对象数据库、多媒体数据库和并行数据库等。
面向应用领域的数据库 工程数据库 统计数据库 时态数据库 空间数据库
工程数据库 专用于存放工程数据的DB。工程数据包括产品设计数据、产品模型数据、材料数据、绘图数据、成组技术编码数据、测试数据和质量优化数据等等。 工程数据数据库管理系统的目的是改进一个企业的工程信息的流动、质量和利用率。 例子: 广西计算中心实验室的 “超媒体工程数据库” 小浪底工程数据库 中国本草工程数据库 国家防汛指挥系统工程防洪工程数据库管理系统 中科院过程工程所的化学工程数据库 http://gibbs.ipe.ac.cn/sdb/frame_database.htm
统计数据库 管理统计数据的数据库。这类数据库包含有大量的数据记录,其目的是向用户提供各种统计汇总信息,而不仅仅是提供单个记录的信息。这些统计汇总信息可以起到数据分析、数据挖掘和决策支持等作用。 例子: 广西进出口统计数据库 联合国粮农组织提供的粮农统计数据库 盐城市科学技术统计数据库 海洋经济统计信息数据库 世界银行铁路统计数据库 中国产业统计数据库 中国统计数据库
http://www.cnmidc.com/tj/tj.asp提供的各种统计DB
联合国粮农组织http://apps.fao.org/default-c.htm提供的粮农统计DB
时态数据库 能够处理时间信息的数据库。现实世界的数据应该具有时效性。而传统数据库缺乏记录和处理时间信息的能力。 时态数据库所处理的时间一般有三种: 事务时间、有效时间和用户自定义时间 事务时间是指信息被放入数据库时的时间,处理方法是存储所有数据库的状态,即每处理一个事务就存储一个数据库状态,修改只能对最后一个状态进行,但可以查询任意一个状态。 有效时间是有效地模型化企业的时间,处理方法是对数据库中的每个关系只记录单个历史状态,每个历史状态是能够表示有效时间的完整的历史关系,每个事务的提交将导致一个新的历史状态的产生。上述两种处理方法是同时使用的。 另外,还允许用户自定义时间属性。
应用实例: 地理信息系统、土地利用动态监测数据库、天气预报数据库、数字地球等。
空间数据库 以描述空间位置和点、线、面、体特征的拓扑结构的位置数据及描述这些特征的性能的属性数据为对象的数据库。 其中位置数据为空间数据,用于表示空间物体的位置、形状、大小和分布特征等信息的数据,用于描述所有二维、三维和多维分布的关于区域的信息,它不仅可表示物体本身的空间位置及状态的信息,还可表示物体的空间关系的信息。 地图制图和遥感图像处理是空间数据库应用较早的领域。空间数据库的目的是利用数据库技术实现空间数据的有效存储、管理和检索,为各种空间数据库用户使用。
应用实例 20万数字地质图空间数据库基于我国唯一的、实测的、全国性的1∶20万区域地质调查结果,包含了1163幅1∶20万地质图数据,覆盖了整个国土范围的72%,总数据量达到了90GB,是目前我国规模空前的数字地质调查产品。 数据库的建成将为国家和省级各部门进行区域规划、地质灾害监测、地质调查、找矿勘查、宏观决策等提供信息服务。
http://www.sdinfo.net.cn/3kongjian/main.htm上的空间DB
数据库的发展趋势 分布式数据库 模糊数据库 演绎数据库 面向对象数据库 多媒体数据库 主动数据库
分布式数据库 在集中式数据库系统中,数据、软件和存储设备都在单个物理场所中,而分布式数据库将数据存储在若干不同地域的物理场所。 分布式数据库主要有两种分布策略: 第一种策略是将中心数据库分开存储,每个远程数据库主机只存放与各自的局部区域有关的数据。局部区域的文件变动可以通过批处理方式与中心数据库的数据调整同步,时间往往安排在夜间。 第二种策略是将中心数据库在远程数据库主机上提供完整的备份。要求数据库在下班时间进行数据的更新。分布式数据库系统减少了单个集中式中心站点的故障风险,但由于数据是分布式访问,给数据安全控制带来复杂化的问题。
某省邮电总局数据采集中心 分布式数据库 模糊数据库 演绎数据库 面向对象数据库 多媒体数据库 主动数据库
模糊数据库 能够处理模糊数据的数据库。一般的数据库都是以二值逻辑和精确的数据工具为基础的,不能表示许多模糊不清的事情。 随着模糊数学理论体系的建立,现在已经可以用数量来描述模糊事件并能进行模糊运算。把不完全性、不确定性和模糊性引入数据库系统中,就形成了模糊数据库。 模糊数据库的研究主要有两个方面:一是如何在数据库中存放模糊数据;二是定义和建立模糊数据上的代数运算。 模糊数据的表示方法主要有模糊区间数、模糊中心数、模糊集合数和隶属函数等。
北京久合成数字系统有限公司的非线编硬盘播出系统
演绎数据库 具有演绎推理能力的数据库。一般是通过使用一个数据库管理系统和一个规则管理系统相结合来实现。 将推理用的事实数据存放在数据库中,称为外延数据库;用逻辑规则定义要导出的事实,称为内涵数据库。 如何有效地计算逻辑规则推理是其主要的研究内容,包括两个方面:递归查询的优化和规则的一致性维护等。 演绎数据库包括逻辑数据库和知识库。
鱼病诊断专家系统 http://202.205.89.188/expertsys/fishdisease/diagnosis/onthespot.asp
面向对象数据库 面向对象数据库应具有传统数据库所具有的特征,如持久性、并发控制、可恢复性、一致性和查询数据库的能力。 一个面向对象的数据库系统必须满足两个标准:它首先应该是一个数据库管理系统,其次又是一个面向对象的系统,即在一个可能的范围内,它与当前的一批面向对象的程序设计语言一致。其面向对象的特征包括复杂对象、对象标识、封装性、类型或类、继承性、可扩充性及计算完备性。 例子:JDataStore ,Oracle
多媒体数据库 用于处理多媒体(multimedia)数据(包括数值、字符串、文本、图形、图像、声音、视频等)的数据库。 管理多媒体数据的数据库系统本身就是一个多媒体系统。在目前绝大多数的多媒体系统中,多媒体数据是存放在外部文件中的,而在数据库中只存放指向该文件的指针。这样,数据操纵可以直接对文件进行,而不必通过数据库管理系统。这就是说,多媒体数据还没有放入数据库中,即还不能称为多媒体数据库管理系统,只能称多媒体数据处理系统。从发展的观点来看,真正的多媒体数据库管理系统迟早会出现。
北京市农业实用技术多媒体数据库 http://www.agri.ac.cn/datebase/nydmt/cx/search.htm
中国经济真菌多媒体数据库 http://www1.im.ac.cn/jjzj/index.htm
主动数据库 是指数据库具有各种主动进行服务的功能,并使用一种统一、方便的机制来实现各种主动的需求。 主动的需求可以是:实时监控功能、错误自动恢复功能、方便的人-机交互接口、自适应和自学习功能等。 主动数据库中有一些预先嵌入的规则,系统内提供一个自动监视模块,它会主动地随时检查这些规则中包含的各种事件是否已经发生,一旦发生,就主动触发某个动作。例如可以把完整性约束、存取控制、例外处理、监督和警告等功能以一种统一的机制来实现。 还有诸如数据仓库、并行数据库、嵌入式数据库和移动数据库等。 返回
数据库系统平台简介 桌面数据库 大型商业数据库 开源数据库 新型Java数据库 国产数据库
1、桌面数据库 Access 是微软提供的一种小型桌面关系数据库管理系统。它具有关系数据库管理系统的基本功能。另外,还可以编写用户使用界面和可供打印的报表,很容易制作一个小型的MIS系统。 XBase 作为个人计算机系统中使用最广泛的小型数据库管理系统,具有方便、廉价、简单易用等优势,并向下兼容Dbase、Foxbase等早期的数据库管理系统。它有良好的普及性,在小型企业数据库管理与WWW结合等方面具有一定优势,但它难于管理大型数据库。
2、大型商业数据库 Oracle是目前世界上最流行的大型关系数据库管理系统,具有移植性好、使用方便、功能强大、性能强大等特点,适用于各类大、中、小、微机和专用服务器环境。Oracle具有许多优点:采用标准SQL、具有丰富的开发工具、数据安全级别为C2级、支持大型数据库、数据类型支持数字、字符、大至2GB的二进制数据,为数据库的面向对象存储提供数据支持。 Oracle适合大中型企业使用,在电子政务,电信、证券和银行企业中使用比较广泛。 SQL Server 、IBM的DB2,Sybase和Informix等。
3、开源数据库 开源数据库是指开放源代码的数据库,Linux系统下最受程序员喜爱的三种DB是MySQL、PostgreSQL和Oracle。其中MySQL、PostgreSQL是开源数据库的优秀代表。 开源数据库具有速度快、易用性好、支持SQL语言、支持各种网络环境、可移植性、开放和价格低廉(甚至免费)等特点。
MySQL MySQL数据库管理系统是MySQL开放式源代码组织提供的小型关系数据库管理系统,可运行在多种操作系统平台上,是一种具有客户机/服务器体系结构的分布式数据库管理系统。 MySQL适用于网络环境,可在Internet上共享。由于它追求的是简单、跨平台、零成本和高执行效率,因此它特别适合互联网企业(例如动态网站建设),许多互联网上的办公和交易系统采用MySQL数据库。
PostgreSQL PostgreSQL是一种相对较复杂的对象-关系型数据库管理系统(ORDBMS),也是目前功能最强大、特性最丰富和最复杂的开源数据库之一,它的某些特性甚至连商业数据库都不具备。 PostgreSQL主要在Unix或Linux平台上使用,目前也推出了Windows版本。
4、新型Java数据库 伴随着互联网的发展,使用Java语言编写的面向对象数据库管理系统也应运而生。 JDataStore是Borland公司推出的纯Java数据库,主要用于J2EE平台,具有跨平台的移植性,与Borland新一代Java开发工具Jbuilder配合使用。
5、国产数据库 据中国软件评测中心对国内、外数据库的调查结果显示,以东软OpenBASE等为代表的国产数据库除了具有自主版权外,在技术方面已经接近国外先进水平。 国产数据库有价格低和实施周期短等优势。目前,已经获得实际应用的国产数据库主要包括: 1.东软公司开发的东软OpenBASE; 2.九江华易软件有限公司开发的华易数据库管理系统HYSQL; 3.人大金仓公司开发的Kingbase ES金鼎DBMS; 4.武汉华工达梦数据库有限公司研制的DM3; 5.北京国信贝斯软件有限公司推出的iBASE数据库。
OpenBASE OpenBASE是东软集团研制开发的我国第一个具有自主知识产权的商品化的大型DBMS,从1992年开始推广。 返回
基本概念 关系模型 其特点是: 表中每一列属性都是不能再细分的基本单元 不允许有重复的列 不允许有相同的记录 行、列次序均无关 是数学化的模型,它把数据看作二维表中的元素,表就是其关系。 其特点是: 表中每一列属性都是不能再细分的基本单元 不允许有重复的列 不允许有相同的记录 行、列次序均无关
关键字(Key) 候选关键字(Candidate Key) 在给定关系中,具有唯一标识特性的一个或多个属性被称为该关系的候选关键字。例如,学生关系中的学号。 主关键字(Primary Key) 有时候选关键字多于一个,从中选取一个作为操作的根据,称其为主关键字。
关系运算 这里从数据库操作的角度讨论关系运算。包括: 选择运算 针对元组 投影运算 针对属性 联结运算 自然联结运算
学生关系STUDENT STUDENT 学号 姓名 班级 性别 操行 数学 英语 自控原理 1 2 3 4 5 6 7 8 学号 姓名 班级 性别 操行 数学 英语 自控原理 8612101沈小平 自控86 女 优 85 76 76 8612162 陆华 自控86 女 优 96 92 95 8612104 王华 自控86 女 优 91 92 99 8612106 郭勇 自控86 男 优 89 96 96 8612107 魏明 自控86 男 优 89 85 82 …… …… …
选择运算 从指定关系中选择出符合条件的元组(记录)组成一个新的关系。 举例,从STUDENT关系中,选出三好学生候选人名单,条件是:操行为‘优’,其它三门功课的总成绩不低于270分。 选择运算条件: CP=“操行=‘优’ AND 数学+英语+自控原理>=270"
优秀学生关系EXC_ST EXC_ST 1 2 3 4 5 6 7 8 满足:“操行=‘优’ AND 数学+英语+自控原理>=270" 1 2 3 4 5 6 7 8 学号 姓名 班级 性别 操行 数学 英语 自控原理 8612162 陆华 自控86 女 优 96 92 95 8612104 王华 自控86 女 优 91 92 99 8612106 郭勇 自控86 男 优 89 96 96 满足:“操行=‘优’ AND 数学+英语+自控原理>=270"
选择运算举例 记录的集合 选择运算(选取小于H且跳过 间隔的两个记录的那些记录) A、B、C、 D、E、F、 G、H、G、 …… X、Y、Z
投影运算 从指定关系的属性(字段)集合中选取部分属性组成同类的一个新关系。由于属性减少而出现的重复元组被自动删除。 举例,生成学生英语成绩关系ENGLISH,只包含“姓名”、“班级”、“英语”三项属性。
英语成绩关系ENGLISH ENGLISH 姓名 班级 英语 沈小平 自控86 76 陆华 自控86 92 王华 自控86 92 姓名 班级 英语 沈小平 自控86 76 陆华 自控86 92 王华 自控86 92 郭勇 自控86 96 魏明 自控86 85 ……
投影运算举例 记录的集合: 投影运算(选择记录中奇数的属性,组成新的记录)。 1. A1(a1、a2、a3、a4、a5、a6) …… 10. A10(a1、a2、a3、a4、a5、a6) 投影运算(选择记录中奇数的属性,组成新的记录)。 1. A1(a1、a3、a5) 2. A2(a1、a3、a5) 3. A3(a1、a3、a5) …… 10. A10(a1、a3、a5)
自然联结 对于两个有公共属性的关系,把其中公共属性值相同的元组挑选出来,构成一个新的关系,称之为自然联结。 自然连接的特点: 关系A和关系B中有同名的属性; 构成新关系的条件是关系A和B中同名属性的值相等; 形成新关系的属性集合是关系A、B属性集合的并集。
体育关系PE …… 学号 姓名 体育 8612101 沈小平 优 8612162 陆华 良 8612104 王华 良 学号 姓名 体育 8612101 沈小平 优 8612162 陆华 良 8612104 王华 良 8612106 郭勇 优 8612107 魏明 良 …… 沈小平 自控86 女 优 85 76 76 8612162 陆华 自控86 女 优 96 92 95 8612104 王华 自控86 女 优 91 92 99 8612106 郭勇 自控86 男 优 89 96 96
自然联结举例 设有体育成绩关系PE。三好学生的标准之一是体育成绩达到“优”或“良”。将PE和STUDENT关系合并,生成新的关系ST_MARK,并从中选出三好学生简况表。如下图所示。 学号 姓名 班级 性别 操行 数学 英语 自控原理 体育 8612162 陆华 自控86 女 优 96 92 95 良 8612104 王华 自控86 女 优 91 92 99 良 8612106 郭勇 自控86 男 优 89 96 96 优 定义查询条件: 操行=“优” AND 数学+英语+自控原理>=270 AND (体育=“优” OR 体育="良")
并运算 并运算 如果R和S为同类关系,则它们的并记为R ∪ S,仍然是R和S的同类关系,由属于R或属于S的元组组成。 记为: R ∪ S={ t|t∈R t∈S } 示意图为: R ∪ S
交运算 交运算 同类关系R和S的交记为R ∩ S,是由既属于R又属于S的元组组成。 记为: R ∩ S = { t| t R t S } 示意图为: S R ∩ S R
差运算 差运算 同类关系R和S的差记为R-S,是由属于R而不属于S的元组组成; 记为: R-S = { t| tR tS } 示意图为: R S R-S
并运算举例 有同类关系R和S,如下所示: 关系R∪S 关系S 关系R 名称 颜色 长度 的确良 白 1000 的确良 黑 2000 名称 颜色 长度 的确良 白 1000 的确良 黑 2000 华达呢 黑 2000 关系S 名称 颜色 长度 的确良 黑 2000 华达呢 黑 2000 关系R 名称 颜色 长度 的确良 白 1000 华达呢 黑 2000
交运算举例 关系S 关系R 关系R∩S 名称 颜色 长度 名称 颜色 长度 的确良 黑 2000 的确良 白 1000 华达呢 黑 2000 名称 颜色 长度 的确良 黑 2000 华达呢 黑 2000 名称 颜色 长度 的确良 白 1000 华达呢 黑 2000 关系R∩S 名称 颜色 长度 华达呢 黑 2000
差运算举例 关系S 关系R 关系R-S 名称 颜色 长度 名称 颜色 长度 的确良 黑 2000 的确良 白 1000 华达呢 黑 2000 名称 颜色 长度 的确良 黑 2000 华达呢 黑 2000 名称 颜色 长度 的确良 白 1000 华达呢 黑 2000 关系R-S 名称 颜色 长度 的确良 白 1000 返回