数据库原理与应用笔记(七):数据库设计

简介: 数据库设计

7.1数据库设计概述

7.1.1数据库设计的特点

7.1.2数据库设计方法

7.1.3数据库设计的基本步骤

7.1.4数据库设计过程中的各种模式

7.2需求分析

7.2.1需求分析的任务

7.2.2需求分析的方法

7.2.3数据字典

7.3概念结构设计

7.3.1概念模型

7.3.2 E-R 模型

7.3.3 扩展的E-R模型

7.3.4概念结构设计

7.4 逻辑结构设计

7.4.1E-R图象关系模型的转换

7.4.2 数据模型的优化

7.4.3设计用户子模式

7.5物理结构设计

7.5.1 数据库物理设计的内容和方法

7.5.2 关系模式存取方法选择

7.5.3 确定数据库的存储结构

7.5.4 评价物理结构

7.6数据库的实施和维护

7.6.1 数据的载入和应用程序的调试

7.6.2 数据库的试运行

7.6.3 数据库的运行和维护


7.1数据库设计概述

数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求

信息管理要求是指在数据库中应该存储和管理哪些数据对象;数据操作要求是指对数据对象需要进行哪些操作,如查询、增、删、改、统计等操作。


数据库设计的目标是什么?

是为用户和各种应用系统提供一个信息基础设施和高效的运行环境。高效的运行环境指数据库数据的存取效率、数据库存储空间的利用率、数据库系统运行管理的效率等都是高的。

7.1.1数据库设计的特点

1.数据库建设的基本规律
“三分技术,七分管理,十二分基础数据”
2.结构(数据)设计和行为(处理)设计相结合
整个设计过程中要把数据库结构设计和对数据的处理设计密切结合起来

7.1.2数据库设计方法

从事数据库设计的专业人员应该具备如下知识和技术:

计算机的基础知识
软件设计的方法和技巧
程序设计的方法和技巧
数据的基本知识
数据库设计技术
应用领域的知识


数据库设计方法有:新奥尔良(New Orleans)方法、基于E-R模型的设计方法、3NF(第三范式)的设计方法、面向对象的数据库设计方法、统一建模语言UML方法

7.1.3数据库设计的基本步骤

按照结构化系统设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为6个阶段:

需求分析
概念结构设计
逻辑结构设计
物理结构设计
数据库实施
数据库运行和维护

如图所示20200624221954808.png

在数据库设计过程中,需求分析和概念结构设计可以独立于任何数据库管理系统进行,逻辑结构设计和物理结构设计与选用的数据库管理系统密切相关。

以下有几个关键点需要牢记:

①需求分析的整个设计过程的基础,是最困难和最耗时间的一步

②概念结构设计是整个数据库设计的关键

②概念结构设计是整个数据库设计的关键

逻辑结构设计是将概念结构转换为某个数据库管理系统所支持的数据模型,并对其进行优化

物理结构设计是为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)

⑤数据库实施阶段,设计人员运用数据库管理系统提供的数据库语言及其宿主语言,根据逻辑设计和物理设计的结果建立数据库,编写与调试应用程序,组织数据入库,并进行试运行

⑥数据库系统运行过程中必须不断地对其进行评估、调整与修改


下图是各个设计过程各个阶段关于数据特性的设计描述

20200624222830945.png

7.1.4数据库设计过程中的各种模式

数据库设计的不同阶段形成数据库的各级模式20200624222946417.png

7.2需求分析

7.2.1需求分析的任务

需求分析的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)的工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库


调查的重点是“数据”和“处理”,通过调查、收集与分析,获得用户对数据库的如下要求:

①信息要求。指用户需要从数据库中获得信息的内容和性质。由信息要求可以导出数据要求,即在数据库中需要存储的哪些数据。

②处理要去。指用户要完成的数据处理功能,对性能处理的要求。

③安全性与完整性要求。


什么意思呢?

因为用户不一定是专业人员,所以可能对想要的东西表达不是很清楚,就需要设计人员去和用户进行深入的探讨!

7.2.2需求分析的方法

调查用户需求的具体步骤是:

2020062422433132.png

常用的调查方法有:20200624224354146.png20200624224931116.png

7.2.3数据字典

数据字典是进行详细的数据收集和数据分析所获得的主要成果,是关于数据库中数据的描述,即元数据,而不是数据本身。数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实、完善的。它在数据库设计中占有很重要的地位。

1.数据项

数据项是不可再分的数据单位。对数据项的描述通常包括以下内容:20200624225014874.png

2.数据结构

数据结构反映了数据之间的组合关系。对数据结构的描述通常包括以下内容:

20200624225103305.png

3.数据流

数据流是数据结构在系统内传输的路径。对数据流的描述通常包括以下内容:

20200624225144178.png

4.数据存储

数据存储是数据结构停留或保存的地方,也是数据流的来源和去向之一。对数据存储的描述通常包括以下内容:

2020062422523247.png

5.处理过程

处理过程的具体处理逻辑一般用判定表或判定树来描述。数据字典中只需要描述处理过程的说明性信息即可,通常包括一下内容:2020062422533668.png

最后需要注意的两点是:

(1)需求分析阶段的一个重要而困难的任务是收集将来应用所涉及的数据,设计人员应充分考虑到可能的扩充和改变,使设计易于更改、系统易于扩充

(2)必须强调用户的参与

7.3概念结构设计

将需求分析所得到的用户需求抽象为信息结构(即概念模型)的过程就是概念结构设计,概念结构设计是数据库设计的关键

7.3.1概念模型20200624230401699.png

7.3.2 E-R 模型

在笔记一已经阐述过一些E-R模型的概念,比如(1)两个实体型之间的联系如下图所示

20200624230436443.png

例子如下:

20200624230652493.png

(2)两个以上的实体型之间的联系的例子如下图

2020062423062855.png

(3)单个实体型内的联系例子如下:

2020062423072042.png

2.E-R图

E-R图提供了表示实体型、属性和联系的方法

(1)实体型用矩形表示,矩形框内写明实体名。

(2)属性用椭圆形表示,并用无向边将其与相应的实体型连接起来。

(3)联系用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体型连接起来,同时在无向边旁标上联系的类型(1:1、1:n或m:n)

例:


20200624231011509.png

7.3.3 扩展的E-R模型

扩展就是让E-R图表达能力更强,这里仅举例一些经过扩展的E-R图

20200624231100499.png


7.3.4概念结构设计

1.实体与属性的划分原则

为了简化E-R的处置,现实世界的事物能作为属性对待的尽量作为属性对待

那么,什么样的事物可以作为属性对待呢?

①作为属性,不能再具有需要描述的性质
②属性不能与其他实体具有联系


2.E-R图的集成

各子系统的E-R图之间的冲突主要有三类:属性冲突、命名冲突和结构冲突

①属性冲突主要包括两类冲突

一是属性域冲突,即属性值的类型、取值范围或取值集合不同。比如某个属性有的单位把定义为整数,有的单位把它定义为字符型

二是取值单位冲突。比如有的单位以斤为做单位,有的以公斤为单位


②命名冲突主要包括两类冲突

一是同名异义
二是异名同义

③结构冲突主要包括三类冲突

一是同一对象在不同的应用中具有不同的抽象
二是同一实体在不同子系统的E-R图中所包含的属性个数和属性排列次序不完全相同
三是实体间的联系在不同的E-R图中为不同的类型

总的意思就是

↓↓↓

其实笼统的来说,就是在这里是这样,在那里就变成了另外的样子

7.4 逻辑结构设计

逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用数据库管理系统产品所支持的数据模型相符合的逻辑结构

7.4.1E-R图象关系模型的转换

E-R图转换为关系模型实际上就是要将实体型、实体的属性和实体型之间的联系转换为关系模式。下面介绍转换的一般原则。一个实体型转换为一个关系模式,关系的属性就是实体的属性,关系的码就是实体的码。

对于实体型间的联系具有以下不同的情况:

(1)一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并

(2)一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并

(3)一个m:n联系转换为一个关系模式

(4)三个或三个以上的实体间的一个多元联系可以转换为一个关系模式

(5)具有相同码的关系模式可以合并


7.4.2 数据模型的优化

数据库逻辑设计的结果不是唯一的,进行数据模型的优化方法为:

(1)确定数据依赖

(2)对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系

(3)按照数据依赖的理论对关系模式逐一进行分析

(4)根据需求分析阶段得到的处理要求分析对于这样的应用环境这些模式是否合适,确定是否要对某些模式进行合并或分解

(5)对关系模式进行必要分解,提高数据操作效率和存储空间利用率


7.4.3设计用户子模式

简单说分为以下三点

(1)使用更符合用户习惯的别名

(2)可以对不同级别的用户定义不同的视图

(3)简化用户对系统的使用


7.5物理结构设计

数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依赖于选定的数据库管理系统。为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计

数据库的物理设计通常分为两步:

(1)确定数据库的物理结构
(2)对物理结构进行评价

7.5.1 数据库物理设计的内容和方法

首先对要运行的事务进行详细分析,获得选择物理数据库设计所需要的参数;其次,要充分了解所用关系数据库管理系统的内部特征,特别是系统提供的存取方法和存取结构

通常关系数据库物理设计的内容主要包括为关系模式选择存取方式,以及设计关系、索引等数据库文件的物理存储结构

7.5.2 关系模式存取方法选择

1.B+树索引存取方法的选择
2.hash索引存取方法的选择
3.聚蔟存取方法的选择

索引是数据结构的必修知识,所以这里不再对存取方法进行详细的叙述

7.5.3 确定数据库的存储结构

1确定数据的存放位置

为了提高系统性能,应该根据应用情况将数据的易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放

2.确定系统配置

在进行物理设计的时候需要对系统提供的系统配置变量和存储分配参数进行赋值,以改善系统的性能

7.5.4 评价物理结构

就是不断的评估,选择最好的结构,给用户最好的体验

7.6数据库的实施和维护

7.6.1 数据的载入和应用程序的调试

数据库应用程序的设计应该与数据库设计同时进行

7.6.2 数据库的试运行

数据库的试运行需要注意两点,第一是组织数据入库是费时费力的事情,所以在组织入库的时候应该分批地组织数据入库,需要先输入小批量数据做调试用,待试运行基本合格后再大批量输入数据,逐步增加数据量,逐步完成运行评价;第二是在数据库试运行阶段需要做好数据库的转储和恢复工作

7.6.3 数据库的运行和维护

数据库的维护工作主要包括以下四个方面

(1)数据库的转储和恢复
(2)数据库的安全性,完整性控制
(3)数据库性能的监督、分析和改造
(4)数据库的重组织与重构造


相关文章
|
2月前
|
存储 关系型数据库 数据库
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
本文通过一个 Agentic RAG 应用的完整构建流程,展示了如何借助 RDS Supabase 快速搭建具备知识处理与智能决策能力的 AI 应用,展示从数据准备到应用部署的全流程,相较于传统开发模式效率大幅提升。
附部署代码|云数据库RDS 全托管 Supabase服务:小白轻松搞定开发AI应用
|
3月前
|
安全 druid Nacos
0 代码改造实现应用运行时数据库密码无损轮转
本文探讨了敏感数据的安全风险及降低账密泄漏风险的策略。国家颁布的《网络安全二级等保2.0标准》强调了企业数据安全的重要性。文章介绍了Nacos作为配置中心在提升数据库访问安全性方面的应用,并结合阿里云KMS、Druid连接池和Spring Cloud Alibaba社区推出的数据源动态轮转方案。该方案实现了加密配置统一托管、帐密全托管、双层权限管控等功能,将帐密切换时间从数小时优化到一秒,显著提升了安全性和效率。未来,MSE Nacos和KMS将扩展至更多组件如NoSQL、MQ等,提供一站式安全服务,助力AI时代的应用安全。
236 14
|
2月前
|
安全 Java Nacos
0代码改动实现Spring应用数据库帐密自动轮转
Nacos作为国内被广泛使用的配置中心,已经成为应用侧的基础设施产品,近年来安全问题被更多关注,这是中国国内软件行业逐渐迈向成熟的标志,也是必经之路,Nacos提供配置加密存储-运行时轮转的核心安全能力,将在应用安全领域承担更多职责。
|
1月前
|
存储 人工智能 数据库
视图是什么?为什么要用视图呢?数据库视图:定义、特点与应用
本文三桥君深入探讨数据库视图的概念与应用,从定义特点到实际价值全面解析。视图作为虚拟表具备动态更新、简化查询、数据安全等优势,能实现多角度数据展示并保持数据库重构的灵活性。产品专家三桥君还分析了视图与基表关系、创建维护要点及性能影响,强调视图是提升数据库管理效率的重要工具。三桥君通过系统讲解,帮助读者掌握这一常被忽视却功能强大的数据库特性。
271 0
|
3月前
|
SQL 数据库
软考软件评测师——数据库系统应用
本文介绍了关系数据库的基础知识与应用,涵盖候选码定义、自然连接特点、实体间关系(如1:n和m:n)、属性分类(复合、多值与派生属性)以及数据库设计规范。同时详细解析了E-R图转换原则、范式应用(如4NF)及Armstrong公理体系。通过历年真题分析,结合具体场景(如银行信用卡额度、教学管理等),深入探讨了候选键求解、视图操作规范及SQL语句编写技巧。内容旨在帮助读者全面掌握关系数据库理论与实践技能。
|
7月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
177 19
|
3月前
|
人工智能 运维 关系型数据库
数据库运维:mysql 数据库迁移方法-mysqldump
本文介绍了MySQL数据库迁移的方法与技巧,重点探讨了数据量大小对迁移方式的影响。对于10GB以下的小型数据库,推荐使用mysqldump进行逻辑导出和source导入;10GB以上可考虑mydumper与myloader工具;100GB以上则建议物理迁移。文中还提供了统计数据库及表空间大小的SQL语句,并讲解了如何使用mysqldump导出存储过程、函数和数据结构。通过结合实际应用场景选择合适的工具与方法,可实现高效的数据迁移。
583 1
|
4月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
3月前
|
SQL 关系型数据库 MySQL
Go语言数据库编程:使用 `database/sql` 与 MySQL/PostgreSQL
Go语言通过`database/sql`标准库提供统一数据库操作接口,支持MySQL、PostgreSQL等多种数据库。本文介绍了驱动安装、连接数据库、基本增删改查操作、预处理语句、事务处理及错误管理等内容,涵盖实际开发中常用的技巧与注意事项,适合快速掌握Go语言数据库编程基础。
208 62

热门文章

最新文章