570 likes | 730 Views
VB6 程序设计. 第三部分 数据库基础及数据建模. ★ 产学研中心. 内容. 受训对象 课程 重点、难点 授课内容 习题思考 信息反馈. 课程. 学时 :2 学时 总课时: 90 分钟 授课大纲:. 重点、难点. 在软件开发过程中的数据库设计流程 数据库系统的设计步骤. 2 、数据库设计流程. 1 、数据库设计概述 2 、需求分析 3 、概念结构设计 4 、逻辑结构设计 5 、物理设计与实施. 2.1.1 、 数据库设计概述.
E N D
VB6程序设计 第三部分 数据库基础及数据建模 ★产学研中心
内容 • 受训对象 • 课程 • 重点、难点 • 授课内容 • 习题思考 • 信息反馈
课程 • 学时:2 学时 • 总课时:90分钟 • 授课大纲:
重点、难点 • 在软件开发过程中的数据库设计流程 • 数据库系统的设计步骤
2、数据库设计流程 • 1、数据库设计概述 • 2、需求分析 • 3、概念结构设计 • 4、逻辑结构设计 • 5、物理设计与实施
2.1.1、 数据库设计概述 • 数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。 • 数据库设计通常是在一个通用的DBMS支持下进行,即利用现成的DBMS为基础。 • 在数据库领域内,常把使用数据库的各类系统称为数据库应用系统(DBAS)。
2.1.2 、数据库与信息系统 • 信息系统是提供信息,辅助人们对环境进行控制和决策的系统。数据库是信息系统的核心。它把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。 • 信息系统一般分为三类:数据处理系统(EDP)、信息管理系统(MIS)、决策支持系统(DSS)。
2.1.3、 数据库设计的特点 • 1)数据库设计是硬件和软件的结合。 • 2)数据库应用系统的设计包括两部分: • 结构设计就是设计各级数据库模式,决定数据库系统的信息内容。 • 行为设计它决定数据库系统的功能,是事务处理等应用程序的设计。
2.1.3、 数据库设计的特点(Cont.) • 根据系统的结构和行为两方面特性,系统设计开发分为两个部分,一部分是作为数据库应用系统核心和基石的数据库设计,另一部分是相应的数据库应用软件的设计开发。这两部分是紧密相关、相辅相成的,组成统一的数据库工程,如图2.1.1所示。
概念模型设计 功能模型 功能说明 逻辑数据库设计 事务设计 物理数据库设计 程序说明 子模式设计 应用程序设计 建立数据库 程序调试 数据库 程序运行 现实世界 数据分析 功能分析 图2.1.1、结构设计和行为设计示意图
2.1.4、 数据库设计步骤 • 1)数据库系统的分析和设计阶段 • ① 需求分析; • ② 概念结构设计; • ③ 逻辑结构设计; • ④ 物理结构设计; • ⑤ 应用程序设计及调试; • ⑥ 性能测试与确认。
2.1.4、 数据库设计步骤(Cont.) • 2)数据库系统实现和运行 • ⑦ 数据库实施; • ⑧ 数据库运行; • ⑨ 数据库维护; • ⑩ 数据库重组。
需求收集和分析 需求分析阶段 设计概念结构 概念设计阶段 应用需求(数据、处理) 设计逻辑结构 逻辑设计阶段 数据模型优化 转化规则、 DBMS功能、优化方法 设计物理结构 物理设计阶段 评价设计,性能预测 应用要求,DBMS详细特征 物理实现 数据库实施 试验运行 使用、维护数据库 数据库运行、维护 图2.1.2、 数据库设计步骤
2.2、 需求分析 • 需求分析是整个数据库设计过程中最重要的步骤之一,是后继各阶段的基础。 • 2.2.1 收集资料 • 2.2.2 分析整理 • 2.2.3 数据流图 • 2.2.4 数据字典 • 2.2.5 用户确认
2.2.1、收集资料 • 该阶段必须耐心细致地了解现行业务处理流程、对新系统的要求、收集全部数据资料,如报表、合同、档案、单据、计划等等。 • 用户需求主要包括以下三方面: • ① 信息需求,用户要从数据库获得的信息内容。信息需求定义了新系统应该提供的所有信息,应描述清楚系统中数据的性质及其联系。
2.2.1、收集资料(Cont.) • ② 处理需求,即完成什么处理功能及处理方式。处理需求定义了新系统数据处理的操作,应描述操作执行的场合、频率、操作对数据的影响等等。 • ③ 安全性和完整性要求。在定义信息需求和处理需求的同时必须相应确定安全性、完整性约束。
2.2.2、分析整理 • 分析的过程是对所收集到的数据进行抽象的过程。抽象是对实际事物或事件的人为处理,抽取共同的本质特性,忽略细微末节,并用各种概念精确地加以描述,这些概念组成某种模型。 • 数据分析与抽象是数据库设计的基础,数据分析和抽象可以同时进行,并往往从局部入手。例如,在库存清单中有下面几个数据:
2.2.2、分析整理(Cont.) • 零件号 零件名称 数量 单价 总价 • 其中,总价=单价×数量 • 所以总价是通过计算得到的二次数据,不是基本数据元素,不必作为基本数据在数据库里存储。像这样对所收集到的数据逐个进行筛选和认定需要很大的工作量。
2.2.3、数据流图 • 一般采用数据流图(Data Flow Diagram)来描述系统的功能。 DFD可以形象地描述事务处理与所需数据的关联,便于用结构化系统分析方法,自顶向下,逐层分解,步步细化。 • 在数据流图中,用命名的箭头表示数据流,用圆圈表示处理,用矩形或其它形状表示数据存储。
借书单 资格核查 书籍 读者 借书登记 图2.2.1、数据流图例子
2.2.4、数据字典 • 除了用一套DFD描述数据的动态走向外,还要从原始的数据资料中分析整理出下述数据信息: • 数据元素的名称、同义词、性质、取值范围、提供者(来源)、使用者(去向)、控制权限、保密要求、使用频率。 • 数据量。
2.2.4、数据字典(Cont.) • 数据之间联系的语义说明。 • 各个部门对数据的要求及数据处理要求。 • 通过细致的调查研究,对组织的各种数据需求进行详细描述,并由此产生这个组织的数据字典。
2.2.4、数据字典(Cont.) • 需求分析阶段的成果应形成文档资料,主要包括: • 各项业务的数据流程图DFD及有关说明。 • 对各类数据描述的集合,即数据字典(Data Dictionary) DD。 • 数据字典在需求分析阶段建立,在整个数据库设计的各个阶段将不断修改、充实和完善。
2.2.5、用户确认 • 需求分析得到的DFD图集和数据字典中的内容必须返回用户,并且用非专业术语与用户交流。在反馈时,设计者与用户一起检查与修改那些没有如实反映现实世界的错误或遗漏。修改DFD图、补充数据字典的过程可能需要反复多次,最终取得用户的认可。
2.3、概念结构设计 • 2.3.1 基本E—R模型的扩充 • 2.3.2 设计局部E—R图 • 2.3.3 综合成初步E—R图
2.3.1.1、E—R方法的基本步骤包括 • 1)设计局部E—R图; • 2)综合成初步E—R图; • 3)优化成基本E—R图。
数据流图,数据字典 需求分析 征求用户意见直到满意为 止 局部E—R图 数据抽象、局部视图设计 综合E—R图 视图集成 逻辑结构设计 2.3.1.2、概念结构设计步骤
2.3.1.3、基本E—R模型的扩充 • 所谓实体子类是指实体中有一定共同特点的子集。例如,学生实体中包含本科生、研究生、大专生三个子类。相对于子类而言,学生实体可以称为超类。 • 为了在表示形式上有所区别,子类用双边矩形框表示:用带小圆圈的直线联系子类与超类。
1 负责人 职工 1 n 领导 任职 职工 n 2.3.1.4、联系单一化示例 例1:将图中的“负责人”作为“职工”实体的一个子类。把实体内部的联系转换成单—‘联系。
职工 保养工 操作工 职工 m m m m 使用 使用 保养 保养 n n n n 设备 设备 2.3.1.4、联系单一化示例(Cont.)
2.3.1.4、联系单一化示例(Cont.) • 例2:将图中的“工人”实体分为“操作工”和“保养工”两个子类,把两个实体间的多个联系转换成实体与子类之间的单一联系。
2.3.2、设计局部E—R图 • 一个应用的局部E—R图反映出具体应用的视图。首先,根据需求分析阶段产生的各个部门的数据流图和数据字典中相关数据,设计出各项应用的局部E—R图。 • 1.确定实体和属性 • 2.确定联系类型 • 3.画出局部E—R图
2.3.3、综合成初步E—R图 • 1.局部E—R图的合并 • 2.消除冲突 • ① 属性冲突。如属性域的冲突和属性取值精度或单位的冲突等。 • ② 命名冲突。包括属性名、实体名、联系名之间的同名异义或者异名同义问题。 • ③ 结构冲突。
2.3.4、初步E—R图的优化 • 1.消除冗余属性 • 2.消除冗余联系
2.4、逻辑结构设计 • 概念设计的结果得到一个与计算机、软硬件的具体性能无关的全局概念模式。数据库逻辑设计的任务是将概念结构转换成特定DBMS所支持的数据模型的过程。
2.4、逻辑结构设计(Cont.) • 逻辑设计过程可分为如图所示的具体步骤,即:① 初始关系模式设计;② 规范化处理;③ 模式评价与修正。
处理需求 E—R模型 DBMS特性 从E—R图导出初始数据库模式 关系模式规范化 模式评价 模式修正 是 是否修正? 以DBMS语法描述 进入物理数据阶段 2.4.1、关系数据库逻辑设计
2.4.1、初始关系模式设计(Cont.) • 1.转换原则 • 关系模型的特点之一是概念的单一性。无论是实体还是实体间的联系都用关系来表示。关系的这个特点使得转换工作比较直接。具体转换原则如下: • ① 一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的关键字就是关系的关键字。 • ② 一个1:1的联系转换为一个关系。每个实体的关键字都是关系的候选关键字。
2.4.1、初始关系模式设计(Cont.) • ③ 一个1:n的联系转换为一个关系。多方实体的关键字是关系的关键字。 • ④ 一个n:m的联系转换为一个关系。联系中各实体关键字的组合组成关系的关键字(组合关键字)。 • ⑤ 具有相同关键字的关系可以合并。
2.4.1、初始关系模式设计(Cont.) • 2.实例 • 将汽车修理管理信息系统E—R图转换成一组初始关系模式。 • 1)把每一实体转换为一个关系 • 实体:修理工 • 对应的关系:修理工(工号,姓名,地址,电话,出生年月,进厂日期,小时工资) • 实体:汽车 • 对应关系:汽车(牌号,型号,生产厂)
2.4.1.1、把每一实体转换为一个关系 • 实体:修理单 • 对应关系:修理单(编号,牌号,工号,项目,修理小时,送修日期,完工日期) • 实体:零件 • 对应关系:零件库存表(零件号,零件名,成本,价格,库存量,最小库存,订货量) • 实体:车主 • 对应关系:车主(车主名,地址,电话)
2.4.1.2、把每一 联系转换为关系 • 联系:使用 • 所联系的实体及关键字:修理单(关键字是“编号”),零件库存表(关键字是“零件号”) • 对应关系:零件用量表(编号,零件号,数量) • 联系:属于
2.4.1.2、把每一 联系转换为关系(Cont.) • 所联系的实体及关键字:汽车(关键字是“牌号”),车主(关键字是“车主名”) • 对应关系:汽车归属表(车主名,牌号) • 联系:修理 • 所联系的实体及关键字:修理单(关键字是“编号”),汽车(关键字是“牌号”),修理工(关键字是“工号:) • 对应关系:修理(编号,牌号,工号,项目,修理小时,送修日期,完工日期)
2.4.1.3、改进转换结果 • 修理工(工号,姓名,地址,电话,出生年月,进厂日期,小时工资) • 修理单(编号,牌号,工号,项目,修理小时,送修日期,完工日期) • 汽车(牌号,型号,生产厂,车主名) • 车主(车主名,地址,电话) • 零件库存表(零件号,零件名,成本,价格,库存量,最小库存,订货量) • 零件用量表(编号,零件号,数量)
2.4.2.1、规范化处理 • 首先要确定规范化的级别,即要求所有的关系模式都达到第几范式。由于函数依赖是现实环境中最重要的、最大量的数据依赖,一般提出3NF或BCNF的要求就足够了。 • 第一范式(1NF):在关系模式R中的每一个具体关系r中,如果每个属性值都是不可再分的最小数据单位,则称R是第一范式的关系。
第二范式(2NF):如果关系模式R(U,F)中的所有非主属性都完全依赖于任意一个候选关键字,则称关系R 是属于第二范式的。 • 第三范式(3NF):如果关系模式R(U,F)中的所有非主属性对任何候选关键字都不存在传递信赖,则称关系R是属于第三范式的。 • BCNF:如果关系模式R(U,F)的所有属性(包括主属性和非主属性)都不传递依赖于R的任何候选关键字,那么称关系R是属于BCNF的。或是关系模式R,如果每个决定因素都包含关键字(而不是被关键字所包含),则BCNF的关系模式。
例如:有一个在线书店,用来跟踪关于书、作者、客户和订单的信息。下面信息是在数据库模型中需要包含的信息的子集(没有规范化的):Author,Name,Publisher,Book1,Edition1,Description1,Cost1,Book2,Edit2,Cost2,Description2.例如:有一个在线书店,用来跟踪关于书、作者、客户和订单的信息。下面信息是在数据库模型中需要包含的信息的子集(没有规范化的):Author,Name,Publisher,Book1,Edition1,Description1,Cost1,Book2,Edit2,Cost2,Description2. 1、获得第一范式,必须将数据分解成逻辑单元,每个单元有一个主码,并保证每个表没有重复的记录组。 AUTHOR(#Author_ID Name Publisher Address)
BOOK(#ISBN #EDITION Name Cost Description) 2、第二范式 BOOk(# ISBN Name), EDITION(#Edition Cost Description ) 3、第三范式 AUTHOR(#Author_ID Name Pub_ID) PUBLISHER(#Pub_ID Name Address)
2.4.2.2、规范化理论在数据库设计中的应用 • 1)在需求分析阶段,用数据依赖概念分析和表示各个数据项之间的联系。 • 2)在概念结构设计阶段,以规范化理论为指导,确定关键字,消除初步E—R图中冗余的联系。 • 3)在逻辑结构设计阶段,从E—R图向数据模型转换过程中,用模式合并与分解方法达到规范化级别。
2.4.3、模式评价与修正 • 模式评价的目的是检查所设计的数据库模式是否满足用户的功能要求,效率如何,确定需要加以修正的部分。模式评价主要包括功能和性能两个方面。