《软件技术基础》之《数据库设计》

数据库设计理论

关系模式设计问题

关系模式的五元组表示:R(U, D, DOM, F)

  • R:关系名
  • U:组成该关系的属性名集合
  • D:属性组U中属性所来自的域
  • DOM:属性向域的映像集合
  • F:属性间数据的依赖关系集合

关系模式的简化三元组表示:R(U, F )

不好的模式举例

在这里插入图片描述
这个模式存在两个问题:

  • 数据冗余:浪费存储空间,引起异常
  • 操作异常:更新异常、删除异常、插入异常

模式分解

模式分解是解决数据冗余和操作异常的一种方法。
将前面的表按依赖关系集合F分成三个子表:
在这里插入图片描述

数据依赖

概念

  • 是现实世界属性间相互联系的抽象;
  • 是数据内在的性质;
  • 是语义的体现。

类型

  • 函数依赖(Functional Dependency,简记为 FD)
  • 多值依赖(Multivalued Dependency,简记为 MVD)

函数依赖

概念

  • 是属性(列)之间的联系;
  • 是属性之间在语义上的关联特性;
  • 是两个属性或属性集之间的约束。

符号说明

  • R表示一个有关系的模式
  • U={A1,A2,…,An}是R的所有属性的集合
  • F是R中函数依赖的集合
  • r是R所取的值
  • t[X]表示元组t在属性X上的取值,例如:t[Dname]= ‘ 杨勋 ’

定义
在这里插入图片描述
函数依赖图
左部(X)称为决定因子,右部(Y)称为依赖因子。
在这里插入图片描述
类型
在这里插入图片描述

逻辑蕴涵

定义
在这里插入图片描述
文字描述
若一个新的函数依赖不在集里,但能从集合里根据一定的规则推导出来,就说那个集合逻辑蕴涵这个新的函数依赖。

如果一个函数依赖能够由集合中的其他推出,则该函数依赖是多余的。

用函数依赖定义码

在这里插入图片描述
在这里插入图片描述

包含在任何候选码中的属性称为主属性(Prime Attribute)。不包含在任何候选码中的属性称为非主属性(Non-Key Attribute)

有时,单个属性是码;有时,整个属性组是码,称为全码(All-Key)

模式分解

定义
在这里插入图片描述
作用

  • 对关系模式进行分解,使之表达的语义概念单纯化;
  • 帮助消除不良设计中的一些问题,如冗余、不一致和异常。

时间代价
分解之后,检索操作需要做笛卡尔积或连接操作。

规范化

规范化主要作为验证和改进逻辑数据库设计的工具,使得逻辑设计能够:

  • 满足特定约束;
  • 避免不必要的数据重复。

范式(Normal Forma,NF)

概念
范式是一种关系的状态,是衡量关系模式的标准。

种类
1NF,2NF,3NF,BCNF

范式的种类与数据依赖有着直接的联系。

作用
数据冗余浪费存储空间,导致数据库难以保持一致性。
范式确保数据库模的一致性

为确定特定关系是否符合范式,需要检查关系中属性间的函数依赖,而不是检查关系中的当前实例。

1NF

在关系模式R的每个关系r中,如果每个属性值都是不可再分的原子值,那么称R是第一范式(1NF)的模式。

满足1NF的关系称为规范化的关系,否则称为非规范化的关系。

关系数据库研究的关系都是规范化的关系。

1NF不允许出现“表中有表”的现象。
在这里插入图片描述

2NF

在这里插入图片描述

只有在主键是复合属性下才可能不符合2NF

2NF分解算法
将关系模式R分解成2NF模式子集。
在这里插入图片描述

3NF

在这里插入图片描述
需要满足的两个条件:

  • R中的非主属性相互独立;
  • R中的非主属性函数依赖于主键。

在这里插入图片描述
3NF分解算法
将关系模式R分解成3NF模式子集。
在这里插入图片描述

2NF & 3NF

定理:如果R是3NF模式,那么R也是2NF模式。

局部依赖和传递依赖是关系模式产生数据冗余和异常的两个重要原因。由于3NF模式中不存在非主属性对候选键的局部依赖和传递依赖,因此3NF消除了很大一部分存储异常,具有较好的性能。而对于非1NF、1NF和2NF的关系模式,由于它们的性能较差,通常不宜作为数据库模式,需要将这些关系模式变换为3NF或更高级的范式,这种变换过程称为“关系的规范化处理”。

BCNF

在这里插入图片描述
原因:3NF模式中并未排除主属性对候选键的传递依赖。
在这里插入图片描述
BCNF分解算法
将R无损分解且保持依赖地分解成3NF模式集。
在这里插入图片描述

模式设计原则

关系模式分解一般应具有3个特性:

  • 达到BCNF,或3NF;
  • 无损分解;
  • 保持函数依赖。

一个好的模式设计方法应符合3条原则:

  • 表达性:数据等价和语义等价,即无损分解和保持依赖集
  • 分离性:关系中只存储有直接关系的属性值;清除冗余和异常现象
  • 最小冗余性:模式个数和模式中属性总数应最少

优化流程:
在这里插入图片描述

数据库应用设计方法

E-R模型

  • 面向问题的概念模型
  • 用简单的图形方式(E-R图)描述显示世界中的数据
  • E-R图中不涉及数据在数据库中的表示和存取方法
  • 非常接近人的思维方式

实体

  • 是客观世界中描述客观事物的概念,是一个数据对象
  • 方框表示,方框内注明实体的名称

属性

  • 实体具有的某种特性,用来详细描述一个实体
  • 椭圆形框表示,椭圆形框内注明属性的名称,并用无向边将属性与对应的实体连接起来
  • 实体的主键用下划线加以标注

在这里插入图片描述

联系

  • 一个或多个实体之间的关联关系
  • 菱形框表示,菱形框内注明联系的名称,并用无向边将其与相关的实体连接起来
  • 联系也可能会有自己的属性,用于描述联系的特征,但联系本身没有标识符

在这里插入图片描述

数量关系表示

两个实体型之间的联系:

  • 一对一联系(1:1)
    在这里插入图片描述
    在这里插入图片描述

  • 一对多联系(1:n)
    在这里插入图片描述
    在这里插入图片描述

  • 多对多联系(m:n)
    在这里插入图片描述
    在这里插入图片描述
    同一实体型之内的联系:
    在这里插入图片描述
    多个实体型之间的联系:
    在这里插入图片描述

属性分类

简单属性和复合属性

简单属性是不可再分的属性
复合属性是可以再划分为更小的部分(即属性可以嵌套)
在这里插入图片描述
单值属性和多值属性
在这里插入图片描述
多值属性的2种变换方法:

  • 方法一:将原来的多值属性用几个新的单值属性来表示。例如患者的联系电话可以用家庭电话、办公电话、移动电话等进行分解
  • 方法二:将原来的多值属性用一个新的实体类型表示。这个新的实体类型和原来的实体类型之间是 1∶N联系,新的实体依赖于原来的实体而存在,因此称新的实体为弱实体

在E-R模型中,弱实体用双线矩形框表示,与弱实体相关的联系用双菱形框表示

在这里插入图片描述
派生属性

  • 通过具有相互依赖的属性推导出来的属性称为派生属性
  • 虚线椭圆形框表示,虚线椭圆形框内注明派生属性的名称,并用无向边将派生属性与对应的实体连接起来
    在这里插入图片描述
    空值属性
    当实体在某个属性上没有值时应该用空值(Null Value)。

数据库设计方法

在这里插入图片描述
在这里插入图片描述
软件的生命周期可以分为6个阶段:
在这里插入图片描述
在这里插入图片描述

需求分析

在软件的生命周期中,需求分析阶段是最为重要的一个阶段。
在这里插入图片描述
需求分析步骤:
在这里插入图片描述

数据字典

在这里插入图片描述

模型设计(概念、逻辑、 物理)

概念设计

概念设计的目标是生成能够准确反映用户组织和使用信息需求的抽象结构,即概念模式。
设计人员把客观世界的具体需求通过提炼和抽象,转换为信息世界的概念模式,再将概念模式转换为数字化的数据模型。

最常用的模式就是 实体-关系模型(E-R)

E-R方法
在这里插入图片描述
全局E-R视图集成过程中的冲突消除
在这里插入图片描述

逻辑结构设计

在这里插入图片描述

ER转换

在这里插入图片描述
在这里插入图片描述
实例:
在这里插入图片描述

模式优化

用关系规范化理论对数据模型进行优化

  • 确定范式的使用
    采用各级范式来确定关系模式中的各种关系是否符合规范,检测数据依赖关系、函数依赖关系,传递依赖等。
  • 实施规范化
    根据需求规则说明书,分析实际应用环境中,确定对关系模式的选择和使用是否得当,以及是否需要调整和改进。

物理设计

在这里插入图片描述

运行与维护

DB连接访问

在这里插入图片描述
在这里插入图片描述
ODBC的体系结构:
在这里插入图片描述
ODBC的开发使用:
在这里插入图片描述

ADO

在这里插入图片描述

JDBC

在这里插入图片描述
在这里插入图片描述

数据库高级开发技术

游标

在这里插入图片描述
游标操作
在这里插入图片描述

存储过程

在这里插入图片描述
存储过程类型:
在这里插入图片描述
在这里插入图片描述
示例:
在这里插入图片描述
在这里插入图片描述

触发器

在这里插入图片描述
在这里插入图片描述
触发器操作:
在这里插入图片描述
在这里插入图片描述

函数

在这里插入图片描述
函数的优点:
在这里插入图片描述
自定义函数:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

存储过程和自定义函数的区别:
在这里插入图片描述

嵌入式SQL(ESQL)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Java软件需求分析、概要设计、详细设计数据库设计是Java软件开发的一系列重要步骤,下面分别进行详细介绍。 Java软件需求分析 Java软件需求分析是软件开发的第一步,它涉及到对软件的需求进行深入全面的研究,了解用户的需求和期望,并根据这些需求和期望建立一个可行的软件开发方案。Java软件需求分析需要采用多种技术手段,如面试用户、需求调研、竞品分析等,确保软件能够满足用户的要求,具有较高的用户体验和市场竞争力。 Java软件概要设计 Java软件概要设计是在需求分析基础上进行的,在需求分析的基础上,进行大致的设计,包括架构设计和模块划分设计等,是一次全面的系统设计,涉及到功能模块、性能、并发、安全等各个方面。Java软件概要设计需要进行多次调整和优化,确保软件的可行性和适应性,并最终进行详细设计。 Java软件详细设计 Java软件详细设计是在概要设计完成后,对软件进行进一步的细化设计,将问题具体化并提供详细的解决方案,在达到要求的同时尽可能的降低实现难度。Java软件详细设计需要考虑到软件的可维护性、可扩展性、性能、安全等各方面因素。详细设计是Java软件开发的关键步骤,对代码编写的质量和工程实施效率影响至关重要。 Java数据库设计模板 Java数据库设计是Java软件开发中的重要步骤之一,需要根据软件的需求,对数据库进行设计,此时可以选择使用信息建模工具,如ERwin、PowerDesigner等。数据库设计需要保证数据库的规范化,减少数据冗余和数据泄漏,提高数据使用的安全性和有效性。常用的Java数据库设计模板有:实体关系模型、UML类图、数据流程图等,这些模板可以帮助开发者有效地进行数据库设计,提高Java软件的开发效率和质量。 ### 回答2: Java软件开发过程中,需求分析、概要设计、详细设计数据库设计都是非常关键的环节。下面通过以下四个方面来说明模板的作用: 1. 需求分析模板 需求分析是Java软件开发的第一步,对于整个项目的成功关系到它的正确性与完整性。需求分析模板包含以下几个方面:业务描述、功能需求、性能需求、接口需求和其他相关需求。这些都是开发团队了解需求并达成共识的基础。 2. 概要设计模板 概要设计模板主要是为了规范Java软件项目的总体设计,在这个阶段中,开发团队应对整个系统进行整体的设计,包括整个系统的架构、模块划分、主要技术方案、关键算法选择等等。通过概要设计模板开发团队进行详细分析与讨论可以确保项目的可行性。 3. 详细设计模板 详细设计模板是对概要设计模板的补充和细化。在此阶段中,开发团队将进一步深入地设计系统中各个模块的详细设计方案,包括各个类之间的接口定义、数据结构设计、中间件组件选择、交互协议定义等等。详细设计模板的作用便是将概要设计的总体规划转化为更具体、更具执行性的方案。 4. 数据库设计模板 数据库是Java软件项目中核心的组成部分之一,因此,数据的设计模板是非常重要的。在这个环节中,开发团队应该深入了解项目实际需求,并根据需求设计出适当的数据库存储模式。关于数据的设计,包含一些列的数据表之间的关系、数据表字段的定义,以及数据存储的相关要求。数据库设计的模板非常重要,一旦设计错误,也可能会导致系统无法正常运行,因此,正确的设计模板是至关重要的。 综上可以看出,Java软件需求分析、概要设计、详细设计数据库设计模板是整个Java软件开发过程中非常重要的一部分。它们可以规范开发团队的行动,并确保项目的可执行性和开发效率。因此,选用正确的模板可以在Java软件开发中帮助团队节省大量时间和金钱。 ### 回答3: Java软件需求分析通常分为四个阶段:需求收集、需求分析、需求规格说明和详细设计。其中,需求收集可以通过与客户交流、考虑业务流程、分析用户行为等方式收集需求;需求分析则需要基于收集到的需求,明确软件功能、性能、可靠性、安全性等各方面的要求;需求规格说明则是根据分析结果,撰写文档明确软件需求;详细设计则是在需求规格明确的基础上,制定开发计划,定义开发流程,完成软件架构、模块设计、接口设计等。 Java软件概要设计是在需求规格说明的基础上进行的,包括系统架构、模块划分、数据流程图等等,主要是为了明确系统的大体框架、功能模块和关键技术,使开发人员对系统的实现过程有一个整体性的认识。 Java软件详细设计是在概要设计基础上进行的,包括详细的模块设计、软件界面设计数据库设计等等。详细设计需要充分考虑开发的各个方面,从技术细节到用户体验方面都要有深入的分析和设计数据库设计模板是指规范了数据库设计的文档,包括逻辑设计、物理设计以及数据库操作等。它是Java软件开发流程中很重要的一环,因为数据库是整个系统的核心,设计需要考虑数据安全、性能优化等方面,以保证系统的稳定性和可扩展性。数据库设计模板可以根据实际需要进行修改和补充,以达到最佳的设计效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UestcXiye

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值