Download presentation
Presentation is loading. Please wait.
Published byFrancisca San Martín Modified 5年之前
1
第6章 数据库建模 大多数软件系统都需要处理大量数据,数据库是软件系统的重要组成部分,数据库也是软件系统的基础。在面向数据流的软件设计方法中,是以需求分析阶段产生的数据流图为基础,按一定的步骤映射成软件结构,并由此建立E-R图,确定数据库结构。而在面向对象的软件开发过程中,通常是先建立设计模型,然后将永久类及永久类之间的关系映射为数据库的表结构等,我们将在第7章的第9节介绍采用人工和建模工具的自动映射方法。 2019年5月3日星期五
2
第6章 数据库建模 6.1 从业务需求创建数据模型的流程 6.2 定义数据需求 6.3 定义概念模型 6.4 设计逻辑数据模型
6.5 设计物理数据模型 6.6 数据模型的优化与发布 2019年5月3日星期五
3
6.1 从业务需求创建数据模型的流程 1. 问题引入 第四章中的用例建模是属于需求分析阶段任务,需求分析之后就是系统建模阶段,系统建模阶段包括功能建模和数据库建模两部分,上一章介绍的是系统建模中的功能建模部分,这里将介绍数据库建模,那么数据库建模的基本过程是怎样的呢? 2019年5月3日星期五
4
6.1 从业务需求创建数据模型的流程 2. 解答问题 数据库建模主要涉及3个阶段,即建立概念模型、逻辑模型和物理模型。如图6-1所示是数据库建模的流程。 2019年5月3日星期五
5
6.1 从业务需求创建数据模型的流程 图6-1 数据库建模基本流程 2019年5月3日星期五
6
6.1 从业务需求创建数据模型的流程 3. 分析问题 数据库建模指的是对现实世界各类数据的抽象组织,确定数据库需管辖的范围、数据的组织形式等直至转化成现实的数据库。将经过系统分析后抽象出来的概念模型转化为物理模型后,用Visio或PowerDesign等工具建立数据库实体以及各实体之间关系的过程(实体一般是表)。 2019年5月3日星期五
7
6.1 从业务需求创建数据模型的流程 建模过程中的主要活动包括:
(1) 确定数据及其相关过程(如实地销售人员需要查看在线产品目录并提交新客户订单)。 (2) 定义数据(如数据类型、大小和默认值)。 (3) 确保数据的完整性(使用业务规则和验证检查)。 (4) 定义操作过程(如安全检查和备份)。 (5) 选择数据存储技术(如关系、分层或索引存储技术)。 2019年5月3日星期五
8
以上数据建模过程又可以概括为概念建模、逻辑建模和物理建模。
6.1 从业务需求创建数据模型的流程 以上数据建模过程又可以概括为概念建模、逻辑建模和物理建模。
9
概念建模是把用户的信息需求统一到一个整体逻辑结构中,此结构能表达用户的要求,且独立于任何数据库管理系统软件和硬件。
6.1 从业务需求创建数据模型的流程 概念建模是把用户的信息需求统一到一个整体逻辑结构中,此结构能表达用户的要求,且独立于任何数据库管理系统软件和硬件。
10
6.1 从业务需求创建数据模型的流程 逻辑建模是把概念建模阶段得到的结果转换为选用的DBMS所支持的数据模型相符合的逻辑结构。对于关系型数据库而言,逻辑建模的结果是一组关系模式的定义。
11
6.1 从业务需求创建数据模型的流程 物理建模是对给定的逻辑数据模型选取一个最适合应用要求的物理结构,包括数据库的存储记录格式、存储记录安排、存取方法等,数据库的物理建模完全依赖给定的硬件环境和数据库产品。
12
6.2 定义数据需求 1. 问题引入 数据库建模的作用是分析和设计需要存储在数据库中的数据的模型。在建模之前,就必须确定哪些数据需要存储到数据库,这个过程就是定义数据需求的过程,这一过程的成果将为下阶段概念模型设计打好基础,那如何确定数据需求呢? 2019年5月3日星期五
13
6.2 定义数据需求 2. 解答问题 确定数据需求的方法一般有跟班作业、开调查会、请专人介绍、询问、设计调查表请用户填写、查阅记录等。一般需要根据具体情况选用一种或多种方法。 2019年5月3日星期五
14
需求分析的过程一般是: 6.2 定义数据需求 (1) 调查组织机构总体情况; (2) 熟悉业务活动; (3) 明确用户需求;
(4) 确定系统边界。
15
其中数据流图(顺序图或协作图或活动图)可以用作明确用户需求和确定系统边界两个步骤中,帮助设计者了解数据如何流动,并发现需要存储的对象。
6.2 定义数据需求 其中数据流图(顺序图或协作图或活动图)可以用作明确用户需求和确定系统边界两个步骤中,帮助设计者了解数据如何流动,并发现需要存储的对象。
16
在PowerDesign中创建一个RequirementModel将上述对象添加上去,如图6-2所示。
6.2 定义数据需求 在客户服务系统中,需要存储的对象有: 客户资料 来电咨询信息 产品及项目信息 派工单 经验库 系统用户 在PowerDesign中创建一个RequirementModel将上述对象添加上去,如图6-2所示。
17
6.2 定义数据需求 图6-2 数据需求模型 2019年5月3日星期五
18
6.2 定义数据需求 3. 分析问题 要设计一个良好的数据库系统,明确应用环境对系统的要求是首要的和基本的。因此,收集和分析应用环境的需求应作为数据库设计的第一步。在这一阶段收集到的基础数据和一组数据流程图是下一步进行概念设计的基础。数据库需求分析包括: 2019年5月3日星期五
19
6.2 定义数据需求 (1) 收集资料。收集资料的工作是数据库设计人员和用户共同完成的任务。强调各级用户的参与是数据库应用系统设计的特点之一。 (2) 分析整理。分析的过程是对所收集到的数据进行抽象的过程。 (3) 数据流程图。在系统分析中通常采用数据流程图来描述系统的数据流向和对数据的处理功能。在面向对象的分析设计中,数据流程图往往不被包含在系统分析中,而可以综合考虑顺序图、协作图和活动图。 (4) 用户确认。 2019年5月3日星期五
20
6.3 定义概念模型 1. 问题引入 概念建模是把用户的信息需求统一到一个整体逻辑结构中,此结构能表达用户的要求,且独立于任何数据库管理系统软件和硬件。请将上述客户服务系统中的信息需求进行概念建模 2019年5月3日星期五
21
6.3 定义概念模型 2. 解答问题 通过使用PowerDesigner的概念建模工具“File->new->ConceptualDataModel”进行概念建模,得到以下结果,如图6-3所示,其中,“产品项目”是指“产品”和“项目”,这两者放在一起存储和处理,用“类型”来区分(后面所出现的“产品项目”与该处意义相同)。 2019年5月3日星期五
22
图6-3 概念模型 2019年5月3日星期五
23
6.3 定义概念模型 3. 分析问题 概念模型也称信息模型,它是按用户的观点来对数据和信息建模。概念模型是现实世界到机器世界的一个中间层次。表示概念模型最常用的是“实体-关系”图。 概念模型用于信息世界的建模,它是真实世界到信息世界的第一层抽象,它是数据库设计的有力工具,也是数据库开发人员与用户之间进行交流的语言。因此概念模型既要有较强的表达能力,又应该简单、清晰、易于理解。目前最常用的是实体-联系模型,即E-R图。 2019年5月3日星期五
24
实体-联系模型中主要包括实体、属性、联系等概念,其中联系主要有以下几个类型:
6.3 定义概念模型 实体-联系模型中主要包括实体、属性、联系等概念,其中联系主要有以下几个类型: 2019年5月3日星期五
25
6.3 定义概念模型 (1) 一对一联系:实体集A中的每一个实体,实体集B中至多有一个实体与之有联系,反之亦然,则称实体集A与B具有一对一联系,记为1:1。如班级与班长的联系,一个班只有一个班长,一个班长也只能在一个班级中任职。 2019年5月3日星期五
26
6.3 定义概念模型 (2) 一对多联系:实体集A中的每一个实体,实体集B中有n(n≥0)个实体与之有联系;而实体集B中的每一个实体,实体集A中至多有一个与之有联系,则称实体集A与B具有一对多联系,记为1:n。如客户和来电咨询的联系,一个客户可以多次来电咨询,一个来电咨询只能由一个客户产生。 2019年5月3日星期五
27
6.3 定义概念模型 (3) 多对多联系:实体集A中的每一个实体,实体集B中有n(n≥0)个实体与之相联系;而实体集B中的每一个实体,实体集A中有m(m≥0)个与之相联系,则称实体集A与B具有多对多联系,记为m:n。如教师与学生的联系,一个教师可以教多名学生,一名学生也可以上多位老师的课。 2019年5月3日星期五
28
6.3 定义概念模型 (4) 其它类型的联系 两个以上实体集之间也存在1:1、1:n、m:n的联系。如教师、课程、参考书的联系。注意把这三个实体之间的联系与两两直接的多个联系区分开来。 同一个实体集的各实体之间也存在1:1、1:n、m:n的联系。如职工和职工之间有直接领导的联系。 2019年5月3日星期五
29
6.4 设计逻辑数据模型 1. 问题引入 上述概念建模只是一个主要与客户进行沟通的模型,客户确认之后,我们可以针对具体的数据库管理系统进行更详细的描述,请根据上述概念模型设计出该数据系统的逻辑模型。 2019年5月3日星期五
30
6.4 设计逻辑数据模型 2. 解答问题 PowerDesigner工具对于概念模型和逻辑模型的创建集成在一起,在概念模型中只需要进行简单描述即可,而在逻辑模型中就必须更加详细的描述数据,如数据的类型、是否是主标识符以及是否可以为空等。如图6-4、6-5所示。 2019年5月3日星期五
31
6.4 设计逻辑数据模型 图6-4 逻辑模型之实体定义 2019年5月3日星期五
32
图6-5 逻辑模型
33
6.4 设计逻辑数据模型 3. 分析问题 概念结构是独立于任何一种数据模型的,在实际应用中,一般所用的数据库环境已经给定(如SQL Server或Oracel或MySql)。由于目前使用的数据库基本上都是关系数据库,因此首先需要将E-R图转换为关系模型。 在进行转换时需要注意以下几个内容: 2019年5月3日星期五
34
6.4 设计逻辑数据模型 (1) 属性 不要引入任何不必要的属性。属性服务于三个目的:
标识它的拥有者的实体 指向另一个实体 简化实体描述 如果有一些实体存在公共的属性,合并这些属性。切记其主要目的是形成带最少个数属性的最少数量表格的数据库,避免冗余。
35
6.4 设计逻辑数据模型 (2) 键 RDBMS使用关联寻址,即它由键来标识和定位行。因此,关系型数据库系统需要可唯一标识表中行的键。
键有许多类型,如下: 主键 外键 候选键 备选键 复合键
36
6.4 设计逻辑数据模型 任何唯一标识表中行的属性(或属性集)都是主键的候选键。这样的属性叫候选键。基于熟悉程度和易用性等因素,从候选键中选择一个作为主键。任何候选键但不是主键的属性称为备选键。当唯一标识表中的行的键由一个以上属性组成时,称为复合主键。外键总是代表关系。
37
6.4 设计逻辑数据模型 (3) 实体 在数据库设计中,有些属性需要获得更多属性来限定它们自己,使其成为实体。你可以建立一个新的实体来表示重要的属性组;或者有些属性是需要具有可维护性的,如“类型”等,也可以将其作为实体创建出来。
38
6.5 设计物理数据模型 1. 问题引入 请将上述逻辑模型映射为数据库中的表。 2019年5月3日星期五
39
6.5 设计物理数据模型 2. 解答问题 PowerDesigner的物理模型工具“File->New->PhysicalDiagram”可以帮助我们将逻辑模型映射为表结构,也可以通过逻辑模型直接生成物理模型“Tools->Generate Physical Data Model”。如图6-6所示。 2019年5月3日星期五
40
图6-6 物理模型 2019年5月3日星期五
41
3. 分析问题 将逻辑模型转换为物理表格的过程也就是E-R图转换为表的过程,尤其对于E-R图中的关系需要进行合理表述。下面描述的是转换规则。
6.5 设计物理数据模型 3. 分析问题 将逻辑模型转换为物理表格的过程也就是E-R图转换为表的过程,尤其对于E-R图中的关系需要进行合理表述。下面描述的是转换规则。 2019年5月3日星期五
42
6.5 设计物理数据模型 (1) 一个实体转换为一个关系模式
一般E-R图中的一个实体转换为一个关系模式,实体的属性就是关系的属性,实体的主键就是关系的主键。如图6-7所示。 图6-7 实体转换为关系
43
6.5 设计物理数据模型 (2) 一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。比如“一个职工负责一个产品”,根据此规则,主要有两种转换方式。 与职工端合并 职工(工号,姓名,产品号) 产品(产品号,产品名) 其中“职工.产品号”为外键。 与产品端合并 职工(工号,姓名) 产品(产品号,产品名,负责人工号) 其中“产品.负责人工号”为外键。
44
(3) 一个1:n联系主要是与n端对应的关系模式合并,外键位于n端实体。如“一个客户服务人员可以记录多个经验信息”。如图6-8所示。
6.5 设计物理数据模型 (3) 一个1:n联系主要是与n端对应的关系模式合并,外键位于n端实体。如“一个客户服务人员可以记录多个经验信息”。如图6-8所示。
45
6.5 设计物理数据模型 图6-8 1:n联系
46
(4) 一个m:n联系可以转换为一个独立的关系模式。如“客户购买产品”
6.5 设计物理数据模型 (4) 一个m:n联系可以转换为一个独立的关系模式。如“客户购买产品” 该关系的属性包括联系自身的属性,以及与联系相连的实体的属性。各实体的码组成关系码或关系码的一部分。如图6-9所示。
47
6.5 设计物理数据模型 图6-9 m:n联系
48
6.6 数据模型的优化与发布 1. 问题引入 冗余意味着数据的重复。冗余增加了更新、新增和删除数据的时间,同时也增加了磁盘空间的使用,一次磁盘的输入输出也增加了。针对前面设计的物理模型,检查设计的成果是否规范合理,对物理模型进行优化后发布到数据库。 2019年5月3日星期五
49
6.6 数据模型的优化与发布 2. 解答问题 有了关系模型,可以对其作进一步的优化处理,其方法为: (1) 确定数据依赖。
(2) 对数据依赖进行极小化处理,消除冗余联系(参看范式理论)。 (3) 确定范式级别,根据应用环境,对某些模式进行合并或分解。 2019年5月3日星期五
50
6.6 数据模型的优化与发布 以上工作理论性比较强,主要目的是设计一个数据冗余尽量少的关系模式。下面这步则是考虑效率问题了。
2019年5月3日星期五
51
6.6 数据模型的优化与发布 (4) 对关系模式进行必要的分解。
如果一个关系模式的属性特别多,就应该考虑是否可以对这个关系进行垂直分解。如果有些属性是经常访问的,而有些属性是很少访问的,则应该把它们分解为两个关系模式。
52
6.6 数据模型的优化与发布 发布数据库可以通过PowerDesigner的以下步骤来完成:
配置的前提是要在系统中装有对应数据库系统的驱动程序。 (1) 选择【Database】->【Generate Database】菜单命令。 (2) 点击【General】按钮,在出现的窗体中选择【Direct Generation】,如果没有配置好数据源,就要点窗体中的数据库的图标,配置Data Sourcce。 (3) 选择【ODBC machine data source】选项,点击【Configure】按钮。 (4) 点击添加Data Source,选择用户数据源(只用于当前机器)。 (5) 选择对应数据库驱动,填写新建的数据源的名字即可。
53
6.6 数据模型的优化与发布 规范化是一种科学的方法,通过使用某些规则把复杂的表结构分解为简单的表结构。使用这种方法可以降低表中的冗余和消除不一致和磁盘空间利用的问题。 规范化有几个要点:可以产生更快的排序和索引,每个表更少索引、更少NULL会使得数据库更加紧凑。规范化帮助简化表的结构。为了实现一个好的数据库设计,必须遵循一些规则:
54
6.6 数据模型的优化与发布 (1) 每一个表格有一个标识符; (2) 每一个表格应当存储单个实体类型的数据; (3) 接受NULL的列应当避免; (4) 值或列的重复应当避免。
55
6.6 数据模型的优化与发布 范式用来保证各种类型的不规范和不一致性不会引入到数据库。一个表结构总是以某种范式而存在,最重要的和最被广泛使用的范式有: 第一范式 第二范式 第三范式 BCNF范式 通常情况下,满足第三范式即可成为比较合理规范的数据库结构。
56
总结 数据库建模主要涉及3个阶段,即建立概念模型、逻辑模型和物理模型。
要设计一个良好的数据库系统,明确应用环境对系统的要求是首要的和基本的。因此,收集和分析应用环境的需求应作为数据库设计的第一步。 概念建模是把用户的信息需求统一到一个整体逻辑结构中,此结构能表达用户的要求,且独立于任何数据库管理系统软件和硬件。 逻辑建模是把概念建模阶段得到的结果转换为选用的DBMS所支持的数据模型相符合的逻辑结构。对于关系型数据库而言,逻辑建模的结果是一组关系模式的定义。 2019年5月3日星期五
57
总结 物理建模是对给定的逻辑数据模型选取一个最适合应用要求的物理结构,包括数据库的存储记录格式、存储记录安排、存取方法等,数据库的物理建模完全依赖给定的硬件环境和数据库产品。 范式用来保证各种类型的不规范和不一致性不会引入到数据库。一个表结构总是以某种范式而存在,最重要的和最被广泛使用的范式有: 第一范式 第二范式 第三范式 BCNF范式 2019年5月3日星期五
Similar presentations