【Java工程师之路】[2-2.2]数据库设计和ER模型

来源:互联网 发布:招plc编程人 编辑:程序博客网 时间:2024/06/05 07:43

一.数据库系统生存期

软件生存期是指从软件的规划、研制、实现、投入运行后的维护,直到它被新的软件所取代而停止使用的整个期间。

定义2.1 我们把数据库应用系统从开始规划、设计、实现、维护到最后被新的系统取代而停止使用的整个期间,称为数据库系统生存期。

一般分为7个阶段:规划、需求分析、概念设计、逻辑设计、物理设计、实现、运行维护。

1.1 规划阶段

三步骤:

1)系统调查

2)可行性分析

3)确定数据库系统的总目标,制定计划。批准后进入数据库系统的开发工作。

1.2 需求分析阶段

分四步:

(1)分析用户活动,产生业务流程图

(2)确定系统范围,产生系统关联图

(3)分析用户活动涉及的数据,产生数据流图

数据流图(Data Flow Diagram ,简记为DFD)是从“数据”和“对数据的加工”两方面表达数据处理系统工作过程的一种图形表示法,具有直观、易于被用户和软件人员双方都能理解的一种表达系统功能的描述方式。

(4)分析系统数据,产生数据字典

数据字典是对数据描述的集中管理,它的功能呢个是存储和检索各种数据描述(称为元数据Metadata)。对数据库设计来说,数据字典是进行详细的数据收集和数据分析所获得的主要成果。

数据字典中通常包括数据项、数据结构、数据流、数据存储和处理过程5个部分。

1.3 概念设计阶段

概念设计的目标是产生反映用户单位信息需求的数据库概念结构,即概念模型。

1.概念设计的重要性

2.概念设计的主要步骤

(1)进行数据抽象,设计局部概念模型

设计概念结构时,常用的数据抽象方法是“聚集”和“概括”。聚集是将若干对象和它们之间的联系组合成一个新的对象。概括是将一组具有某些共同特性的对象抽象成更高一层意义上的对象。

(2)将局部概念模型综合成全局概念模型

3)评审

1.4 逻辑设计阶段

逻辑设计的目的是把概念设计阶段设计好的概念模型转换成与选用的具体机器上的DBMS所支持的数据模型相符合的逻辑结构(包括数据库逻辑模型和外模型)。

逻辑设计的主要步骤有五步:

(1)把概念模型转换成逻辑模型

(2)设计外模型

(3)设计应用程序与数据库的接口

(4)评价模型

评价数据库结构的方法通常有定量分析和性能测量。

定量分析有两个参数:处理频率和数据容量。处理频率是在数据库运行期间应用程序的使用次数。数据容量是数据库中记录的个数。数据库增长过程的具体表现就是这两个参数值的增加。

性能测试是指逻辑记录的访问数目。

(5)修正模型

1.5 物理设计阶段

对于给定的基本数据模型选取一个最适合应用环境的物理结构的过程,称为物理设计。

数据库的物理结构主要指数据库的存取记录格式、存取记录安排和存取方法。

物理设计分五步:

(1)存储记录结构设计

(2)确定数据存放位置

(3)存取方法的设计

(4)完整性和安全性考虑

(5)程序设计

1.6 数据库的实现

(1)定义数据库结构

(2)数据装载

(3)编制与调试应用程序

(4)数据库试运行

1.7 数据库的运行与维护

在数据库运行阶段,对数据库经常性的维护工作主要是由DBA完成的,它包括以下内容:

(1)数据库的转储和恢复

(2)数据库安全性、完整性控制

(3)数据库性能的监督、分析和改进

(4)数据库的重组织和重构造

二.ER模型的基本概念

2.1 ER模型的基本元素

ER模型的基本元素是:实体、联系和属性

1.实体

定义2.2 实体、实体集、实体类型的定义如下:

(1)实体(Entity)是一个数据对象,指应用中可以区别的客观存在的事物。

(2)实体集(Entity Set)是指同一类实体构成的集合。

(3)实体类型(Entity Type)是对实体集中的实体的定义。

2.联系

定义2.3 联系、联系集、联系类型的定义如下

(1)联系(Relationship)表示一个或多个实体之间的关联关系。

(2)联系集(Relationship Set)是指同一类联系构成的集合。

(3)联系类型(Relationship Type)是对联系集中联系的定义。

3.属性

定义2.4 实体的某一特性称为属性(Attribute)。在一个实体中,能够唯一标识实体的属性或属性集称为“实体标识符”。

2.2 属性的分类

1.简单属性和复合属性

简单属性(Simple Attribute)是不可再分割的属性。复合属性(Composite Attribute)是可再分解为其他属性的属性(即属性可嵌套)。

2.单值属性和多值属性

单值属性(Single -Value Attribute)指的是同一实体的属性只能取一个值。

多值属性(Multi-Value Attribute)指的是同一实体的某些属性可能取多个值。

多值属性进行变换的方法:

(1)将原来的多值属性用几个新的单值属性来表示。

(2)将原来的多值属性用一个新的实体类型表示。

3.存储属性和派生属性

可从其他属性值推导出值的属性,称为派生属性(Derived Attribute)。派生属性的值不必存储在数据库内,而其他需要存储值的属性称为存储属性(Stored Attribute)。

4.允许为空值的属性

当实体在某个属性上没有值时应使用空值(Null Value)。

2.3 联系的设计

1.联系的元数

定义2.5 一个联系涉及到的实体集个数,称为该联系的元数或度数(Degree)。

2.联系类型的约束

1)基数约束

二元联系的映射基数(Mapping Cardinalities

定义2.6 实体集E1E2之间有二元联系,则参与一个联系中的实体数目称为映射基数。

(2)参与约束

定义2.7 如果实体集E中的每个实体都参与联系集R的至少一个联系中,我们称实体集E“完全参与”实体集R。如果实体集E中只有部分实体参与联系R的联系中,我们称实体集E“部分参与”联系集R。在ER图中表示时,完全参与用双边线表示,部分参与用单边线表示。

2.4 ER模型的操作

2.5 采用ER模型的数据库概念设计步骤

1.设计局部ER模型

2.设计全局ER模型

3.全局ER模型的优化

三.系模型的基本概念

3.1 关系模型的基本术语

定义2.8 用二维表格表示实体集,用关键码表示实体之间联系的数据模型称为关系模型(Realtional Model)。

在关系模型中,字段称为属性,字段值称为属性值,记录类型称为关系模式。记录称为元组(Tuple),元组的集合称为关系(Relation)或实例(Instance)。

关系中属性个数称为“元数”(Arity),元组个数称为“基数”(Cardinality)。

关键码(key,简称键)由一个或多个属性组成。在实际使用中,有以下几种键。

(1)超键(Super Key):在关系中能惟一标识元组的属性称为关系模式的超键。

(2)候选键(Candidate Key):不含有多余属性的超键称为候选键。也就是在候选键中,若在删除属性,就不是键了。

(3)主键(Primary Key):用户选作元组标识的候选键称为主键。

(4)外键(Foreign Key):如果模式R中属性K是其他模式的主键,那么K在模式R中为外键。

3.2 关系的定义和性质

定义2.9 关系式一个属性数目相同的元组的集合。

3.3 三类完整性规则

1.实体完整性规则(Entity Integrity Rule

这条规则要求关系中元组在组成主键的属性上不能有空值。如果出现空值,那么主键值就起不了惟一标识元组的作用。

2.参照完整性规则(Reference Integrity Rule

定义2.10 参照完整性规则的形式定义如下:

如果属性集K是关系模式R1的主键,K也是关系模式R2的外键,那么在R2的关系中,K的取值只允许两种可能,或者为空值,或者等于R1关系中的某个主键值。

3.用户定义的完整性规则

四.ER模型到关系模型的转换

4.1 ER图转换成关系模式集的算法

4.2 采用ER模型的逻辑设计步骤

关系数据库的逻辑设计的结果是一组关系模式的定义。分五步

1.导出出事关系模式集

2.规范化处理

3.模式评价

4.模式修正

5.设计子模式

五.增强的ER模型

增强的ER模型(Enhanced-ER模型,简称为EER模型)

5.1 弱实体和强实体

定义2.11 一个实体对于另一个实体(称为强实体)具有很强的依赖关系,而且该实现主键的一部分或全部从其强实体中获得,则称该实体为弱实体。

强实体与弱实体的联系只能是1:11:N

5.2 子类实体与超类实体

定义2.12 当较低层上实体类型表达了与之联系的较高层上的实体类型的特殊情况时,就称较高层上实体类型为超类型(Supertype),较低层上实体类型为子类型(Subtype)。

在数据库设计中,从子类到超类的抽象化过程称为“概化”,这是自底向上的概念综合(Synthesis);从超类到子类的具体化过程称为“特化”,这是自顶向下的概念发挥(Refinement)。

子类与超类有两个性质:

(1)子类与超类之间具有继承性特点,即子类实体继承超类实体的所有属性。但子类实体本身还可以包含比超类实体更多的属性。

(2)这种继承性是通过子类实体和超类实体有相同的实体标识符实现的。

有两种约束适用于特化工程:不相交约束和完备性约束

(1)不相交约束(Disjointness Constraint

不相交约束是指特化的子类是否相交。不相交约束又分成不相交和重叠两种情况:

① 不相交(Disjoint)约束规定了在特化过程中,子类必须是不相交的。这意味着一个实体至多是特化中一个子类的成员。

② 重叠(Overlap)约束规定了在特化过程中,子类可以是相交的。这意味着一个实体可出现在特化中的多个子类里。

(2)完备性约束(Complete Constraint

① 整体特化(Total  Specialization)约束指定超类中的每个实体必须是特化中某个子类的成员。

② 部分特化(Partial Specialization)约束允许超类中的实体可以不属于任何一个子类。

原创粉丝点击