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

简介: 数据库设计

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)数据库的重组织与重构造


相关文章
|
5天前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
33 11
|
1月前
|
人工智能 容灾 关系型数据库
【AI应用启航workshop】构建高可用数据库、拥抱AI智能问数
12月25日(周三)14:00-16:30参与线上闭门会,阿里云诚邀您一同开启AI应用实践之旅!
|
2月前
|
架构师 数据库
大厂面试高频:数据库乐观锁的实现原理、以及应用场景
数据库乐观锁是必知必会的技术栈,也是大厂面试高频,十分重要,本文解析数据库乐观锁。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
大厂面试高频:数据库乐观锁的实现原理、以及应用场景
|
2月前
|
存储 缓存 网络安全
南大通用GBase 8s 数据库 RHAC集群基本原理和搭建步骤
南大通用GBase 8s 数据库 RHAC集群基本原理和搭建步骤
|
2月前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
2月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
71 3
|
2月前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
80 2
|
23小时前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
5天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
63 0
|
1月前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
63 3