数据库表设计的过程与决策

关系型数据库设计的过程与决策

说 明
数据库技术是计算机科学技术中发展最快的领域之一,也是应用最广的技术之一,它已经成为计算机信息系统与智能应用系统的核心技术和重要基础。
数据库设计是应用系统实现过程中必不可少的一环,是应用系统开发实现的基石,数据库设计影响最终的产品是否能够满足需求与后期开发的可扩展性。纵观数据库技术发展历史,从层次、网状数据模型发展到关系型数据库,再到非关系型数据库,关系模型的提出具有划时代的重大意义,也使关系型数据模型具有统治地位的数据模型。本文,对关系型数据库设计过程进行细化,详细描述关系型数据库设计所遵循的规范,对设计过程中遇到的问题进行分析与决策,形成一套完整的关系型数据库设计规范,对后续应用系统数据库设计有一定的指导作用。

目 录
1 绪论 1
1.1 数据库设计概述 1
1.2 术语解释 1
2 数据库设计过程 2
2.1 数据库设计基本步骤 3
2.1.1 需求分析 5
2.1.2 概念结构设计 5
2.1.3 逻辑结构设计 6
2.1.3.1 范式 6
2.1.4 物理结构设计 7
2.1.5 数据库的实施和维护 8
2.2 数据库设计的决策 8
2.2.1 数据库类型决策 8
2.2.2 数据库管理系统决策 10
2.2.3 逻辑结构设计决策 10
2.2.4 关系型数据结构与非关系型数据结构的结合 10
3 数据库设计实践 11
3.1 系统概述 11
3.2 系统需求分析 11
3.3 逻辑结构设计 15
3.4 系统物理结构设计 16
3.4.1 表结构设计 16
3.4.2 数据结构与模块的关系 16
3.4.3 数据库表 17
3.4.3.1 表汇总 17
3.4.3.2 物理关系图 18
3.4.3.3 表结构 19
3.5 数据库的实施与维护 23
3.5.1 安全性设计 23
3.5.2 用于数据库访问或操纵的软件配置项的详细设计 23
4 数据库设计的思考 24

1 绪论

应用系统的设计与开发过程中,数据库的设计是必不可少的一个环节,也是至关重要的一个环节,重视数据库设计不仅可以减少应用系统后期的维护,达到节约人力与物力的目的,同时还有利于应用系统功能的运行效率提高;具有扩展性的数据库设计不仅可降低后期需求变更或增加带来应用系统开发的复杂性,同时还可帮助用户节约操作应用系统的时间。

1.1 数据库设计概述

数据库设计是指对于一个给定的应用环境,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。【1】
在数据库设计的过程中,是对系统使用者(即企业中的应用部门)所需基础数据的整理,也是对各业务部门之间数据的描述和抽象。一个企业的数据库建设过程是企业管理模式的改革与提高的过程,业务部门数据以及各业务部门之间的数据的联系是和各部门的职能、整个企业的管理模式密切相关的。数据的收集、整理、组织和不断更新是数据库设计中的重要环节,基础数据的整理是数据库建设初期最繁琐复杂的工作,历史数据的整理入库利于后期进行数据分析与挖掘,改进业务管理,提高企业竞争力。
数据库设计应与系统设计相结合。数据库设计并不是与应用系统设计完全独立分离,相反数据库设计必须与应用系统设计紧密相连,不仅着重数据的结构特性,更应该重视行为特性,并二者结合完成设计。

1.2 术语解释

术语解 释
数据描述事物的符号。
数据库数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合。数据库中的数据按一定的数据模型组织、描述和储存,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。
数据模型数据模型也是一种模型,它是对现实世界数据特征的抽象。
实体客观存在并可相互区别的事物称为实体。
属性实体所具有的某一种特性称为属性
唯一标识实体的属性集称为码。
联系实体之间的联通通常是指不同的实体集之间的联系。实体之间的联系有一对一、一对多和多对多等多种类型。
关系数据库关系数据库的型称为关系数据库模式,是对关系数据库的描述,关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常称为关系数据库。
函数依赖设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元祖在X上的属性值相等,而在Y上的属性值不饿等,则称X函数确定Y或Y函数依赖于X,记作X->Y。
触发器触发器是用户定义在关系表上的一类由事件驱动的特殊过程。触发器又叫做事件-条件-动作规则。

表 1.1 术语解释

2 数据库设计过程

开发应用系统的过程一般包括需求分析、产品原型设计、应用系统概要设计、数据库设计、系统详细设计、系统框架搭建、功能实现、系统测试、系统上线、系统维护等等。在开发过程中,数据库设计从广义上讲,既是对数据库本身的设计,也是对应用系统的设计,不仅要分析数据结构,更要结合业务与数据操作分析整个系统的数据流向。

2.1 数据库设计基本步骤

数据库设计一般分为以下6个阶段:

  1. 需求分析阶段;
  2. 概念设计阶段;
  3. 逻辑设计阶段;
  4. 物理设计阶段;
  5. 数据库实施阶段;
  6. 数据库运行和维护阶段。


图 2.1 数据库设计阶段
数据库设计开始之前,首先要确定参与设计工作的人员,包括需求分析人员,数据库设计人员、系统开发人员、数据库管理员和用户,其中数据库设计人员和系统开发人员可为同一人,人员角色可重叠。需求分析人员和数据库设计人员是核心,自始至终参与数据库设计,其水平决定了数据库的质量。用户和数据库管理人员是系统的使用者,也是需求来源,他们的积极参与可以加速数据库设计工作。

2.1.1 需求分析

用户需求是多变且不可控的,所以确定用户的最终需求是一件很困难的事情,需求分析人员必须不断深入与用户交流,才能逐步确定用户的实际需求,只有需求的明确,才能让数据库设计人员设计出高质量的数据库。
数据库设计人员根据需求分析人员设计的产品原型,首先要了解用户的组织机构情况及其业务活动,结合原型确定系统边界,自顶向下,逐层分解的方式分析系统。在分析过程中不仅要考虑到当前的实际需求,也要长远考虑用户下一步的需求,尽量做到可扩展,可兼容历史数据。

2.1.2 概念结构设计

将需求分析阶段抽象为数据结构,要求如下:

  1. 数据结构能真实反映现实世界;
  2. 易于理解;
  3. 易于更改与扩展;
  4. 易于向关系、网状、层次等数据模型转换。

可以通过E-R模型工具来描述概念结构,E-R模型通常使用E-R图来展现,包括实体、属性、实体之间的联系。实体间的联系分为以下三种:

  1. 一对一联系(1:1)

实体集A中的每个实体至多有一个实体集B中的实体与之联系,则称A与B具有一对一联系。

  1. 一对多联系(1:n)

实体集A中的每个实体有n个在实体集B中的实体与之联系,则称A与B具有一对多联系。

  1. 多对多联系(m:n)

实体集A中的每个实体有n个在实体集B中的实体与之联系,反之依然,则称A与B具有多对多联系。

2.1.3 逻辑结构设计

如何将概念结构E-R图转换为与选用的数据库管理工具(如MySql、SQLServer、Redis等)所支持的数据模型相符合的逻辑结构,是逻辑结构设计阶段的工作。
数据库管理工具包括关系型数据库和非关系型数据库,本文只讨论将E-R图向关系型数据库转换的方法与原则。
每个实体集可以转换为一张表结构,每个实体都应有其独有的编码,即每张表有其唯一的ID。根据实体间的联系转换不同的关系模式:一对一联系可将两个实体合并为一张表,也可在任意一张表中添加另一表的外键;一对多联系也可将两个实体合并,但是会造成数据的冗余,也可将n端的实体所建表中添加一外键;多对多联系最好建立一张中间联系表,用来描述两个实体之间的联系。
由上述内容可知,概念结构向逻辑结构转换的结果不是唯一的,那如何来判断设计的逻辑结构是一个好的是数据结构呢?我们可以借助数据库逻辑设计的一个有力的工具——关系数据库的规范化理论来解决此类问题。

2.1.3.1 范式

关系型数据中的关系是要满足一定要求的,满足不同程度要求的为不同范式。满足最低要求的叫第一范式,简称1NF;在第一范式中满足进一步要求的为第二范式,其余依此类推。一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。【1】

  1. 第一范式(1NF)

所谓第一范式(1NF)是指在关系模型中,对于添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项,而不能是集合,数组,记录等非原子数据项。即实体中的某个属性有多个值时,必须拆分为不同的属性。在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。

  1. 第二范式(2NF)

第二范式(2NF)要求实体的属性完全依赖于主关键字。所谓完全依赖是指不能存在仅依赖主关键字一部分的属性,如果存在,那么这个属性和主关键字的这一部分应该分离出来形成一个新的实体,新实体与原实体之间是一对多的关系。为实现区分通常需要为表加上一个列,以存储各个实例的唯一标识。简而言之,第二范式就是在第一范式的基础上属性完全依赖于主键。

  1. 第三范式(3NF)

第三范式(3NF)是第二范式(2NF)的一个子集,即满足第三范式(3NF)必须满足第二范式(2NF)。简而言之,第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。

  1. 巴斯-科德范式(BCNF)

在3NF基础上,任何非主属性不能对主键子集依赖(在3NF基础上消除对主码子集的依赖)

图 2.2 规范化过程

2.1.4 物理结构设计

为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理结构设计。通常分为两步:确定数据库的物理结构和对物理结构进行评价。

2.1.5 数据库的实施和维护

数据库的实施阶段包括两项重要的工作,一项是数据的载入,另一项是应用程序的编码和调试。
一般系统的数据量较大,而且来源由不同部门不同单位,数据的结构和格式等可能与新系统的数据库结构有相当的差距。数据载入需要将各数据源的数据抽取整理转换为符合新设计的数据库结构,输入数据库。这项工作相当费时费力,所以建议与应用程序设计同时进行,数据入库的同时调试应用程序。
数据库运行阶段,数据维护工作主要包括以下几方面:

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

2.2 数据库设计的决策

数据库设计不仅要规范化,更要与应用相结合,从需求出发,根据设计约束优化数据结构。

2.2.1 数据库类型决策

不同的需求、不同的约束条件决定了我们能选择的数据库类型,数据库类型包括两类:

  1. 关系数据库

关系型数据库,存储的格式可以直观地反映实体间的关系。关系型数据库和常见的表格比较相似,关系型数据库中表与表之间是有很多复杂的关联关系的。常见的关系型数据库有Mysql,SqlServer等。在轻量或者小型的应用中,使用不同的关系型数据库对系统的性能影响不大,但是在构建大型应用时,则需要根据应用的业务需求和性能需求,选择合适的关系型数据库。

  1. NoSQL非关系型数据库

NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。[2]
NoSQL数据库大致上分为四类:键值存储,列存储,文档存储和图形存储。常见的非关系型数据有HBase,Redis,MongodDB等。
对比二者之间的优缺点如下:

关系型数据库非关系型数据库
优点
- 易于维护:表结构
- 使用方便:SQL语言通用
- 复杂操作:支持SQL,支持复杂查询

- 格式灵活:存储格式可以是key,value、文档、图片形式等。
- 速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘。
- 高扩展性
- 成本低:nosql数据库部署简单,基本都是开源软件
缺点
- 读写性能比较差
- 固定的表结构,灵活度稍欠
- 硬盘I/O是一个很大的瓶颈

- 不提供sql支持
- 无事务处理
- 数据结构相对复杂,复杂查询方面稍欠。

表 2.1 关系型与非关系型数据库优缺点对比
结合需求分析,一般业务型系统,比如HR管理系统,成本系统,客户关系管理系统等,我们一般选用关系型数据库,因为此类系统数据操作复杂,数据结构化明显不易变更,数据实时性要求不高,数据量不是特别巨大,安全性要求较高。两种类型的数据库也可结合使用,一般型业务数据存储我们可以采用关系型数据库,对实时型要求较高的数据我们也可采用非关系型数据库,二者结合同步数据的方式达到满足不同的需求。

2.2.2 数据库管理系统决策

当今市场上数据库管理系统百花齐放,各不相同,如何选择一款适合的数据库管理系统成为一个难题。我们可以从一下几个方面来思考:

  1. 数据库管理系统的性能分析。包括响应时间、数据单位时间吞吐量、内存使用情况、系统输入/输出速率、SQL语句执行,性能管理等。
  2. 结合应用系统需求的约束,选择数据库管理系统。比如是否满足读取速率约束、高并发要求等。
  3. 数据库管理系统的可移植性和可扩展性。对平台的支持,多CPU并行模式的支持,分布式部署的支持等。
  4. 数据库管理系统是否开源。在满足需求的同时,开源的管理系统能节约成本,利益最大化。

2.2.3 逻辑结构设计决策

逻辑结构设计时一般要求遵循范式设计,但并不是遵循范式等级越高越好,有时打破范式对我们的约束反而可以带来意想不到的效果。这里我们需要结合产品原型,具体分析每个属性的展示方式,比如有些属性出现频率较高,但需要多表联合查询,这时我们可以将此类属性添加入主表中,以提高查询效率;比如有些数据结构可变性较大,又仅用于数据展示,不作为查询条件也不做更改,这时我们可以将此类数据存储为字符串,或者JSON格式的数据。

2.2.4 关系型数据结构与非关系型数据结构的结合

当今大多数的关系型数据库管理系统已经开始支持非关系型数据存储。MySQL数据库从5.7版本新增对JSON的支持,提供JSON的查询修改、返回JSON属性等函数,MySQL8.0新增文档存储;SQL Server 2016版开始支持JSON格式数据类型;PostgreSQL对JSON格式数据也有很好的读写支持。数据库设计过程中不能固化思维,多多与时俱进,结合数据库管理系统的新特性,优化数据库结构,JSON类型的出现也为传统的关系型数据库设计者们打开了新思路。

3 数据库设计实践

结合实际项目——产品数据库,分析数据库设计的过程与遇到的问题。

3.1 系统概述

产品数据库系统用于管理各个阶段的数据和文件,提高XX公司产品全生命周期的设计、执行等效率。开发功能有:信息检索功能、文件上传、文件下载功能、文档生成。项目的需方:XX设计处、用户:XX设计处、开发方:XX所;计划运行现场:XX所测试服务器,内网环境。
系统功能模块如下:

图 3.1 系统功能模块图

3.2 系统需求分析

产品数据库需求列表如下:

序号需求名称任务描述
1数据库结构设计项目包括产品库、项目库,每一个库中都包含数据和文件,数据之间有层级关系。数据库结构设计是所有功能的基础。
2信息检索功能信息检索分为产品库和项目库检索;产品库中检索信息有产品系列、XXXX标准数据、外型图;项目库中检索信息有项目名称、平台编号、项目详情、文件。
3文件上传文件上传类型:文档类文件、表格类文件、图形类文件等。文档上传位置:数据库中本地文件夹存储。文档上传:信息需要保存在数据库中。
4文件下载检索出文件后,可以对文件进行下载,可以同时对多个文件进行下载,下载要有进度条,下载失败最多进行三次下载。详细要求请查看信息结构图。
5文档生成点击生成文档的类型,前端输入相关信息,根据生成文档的逻辑从数据库调用相关信息生成固定模板的文档。
6文档预览文档生成后,在前端可以对文档进行预览。预览的时候尽量保证文档类型、格式不变。文档预览时候不可以对文档进行修改。

表 3.1 需求列表
产品数据库原型设计图如下:

图 3.2 产品系列检索页面

图 3.3 项目详细页面

图 3.4 XXXX标准数据检索结果页

图 3.5 文档生成
根据系统原型与需求文档的描述,由此可知,这是一个基础信息查询系统,系统数据量不是特别大,实时性要求不高,基本都是结构化数据,所以我们可以选用关系型数据库,数据库管理系统可以选择MySQL数据库,MySQL数据库开源免费,节约成本,而且满足应用系统的需求与约束。

3.3 逻辑结构设计

根据需求分析人员提供的需求文档以及原型图,进行逻辑结构设计,如下:

图 3.6 E-R图
主要分为项目信息、产品信息和基础信息。

  1. 项目信息

项目信息部分分为5个实体,与项目基础信息为一对多的关系,目前需求中只体现了一对一的关系,但是考虑到后期可能增加项目管控等需求,故将部分项目执行、项目技术人员配置、项目方案和项目跟踪的项目属性单独作为一个实体,以便后期的数据库扩展。

  1. 产品信息

产品信息用户需求不明确,可变性较大,每个产品的属性可增可减,但没有复杂的数据操作,故将产品信息的数据结构动态设计,产品之间有层级关系,产品属性可动态设置,属性值与产品和属性相关联,满足了用户的需求。

  1. 基础信息

基础信息包括文件信息和枚举信息,二者结构相似。以枚举信息为例,枚举分为枚举类型和枚举值两个实体,枚举类型有层级为树形结构,枚举值和枚举类型是一对多的关系,一个枚举类型可以包含多个枚举值。

3.4 系统物理结构设计

3.4.1 表结构设计

根据ER图依据第三范式设计表物理结构,根据产品、属性、属性值三者关系,加之灵活性约束,设计产品属性属性值关系表,灵活组合三者。
依据文件版本管理的约束,文件设置文件夹表。
产品系列数据结构由4张表组成:products_series(产品系列),attributions(产品系列属性),attr_val(属性值),prod_attr_val(产品属性和属性值关系表);
项目数据结构由5张表组成:projects_base(项目基础信息),projects_tecstaffing(项目技术人员配置),projects_trace(项目跟踪),proj_schema(项目方案),proj_execution(项目执行);
文件数据管理由2张表组成:floder(文件夹),file(文件);
枚举类型数据由两张表组成:enum_type(枚举类),enumerate(枚举值);
用户数据有2张表:sys_user(系统用户),department(部门)。

3.4.2 数据结构与模块的关系

各个数据结构与访问这些数据结构的各个程序之间的对应关系如下:

产品系列(001)产品属性(002)文档生成(003)文件上传(004)执行项目(005)售前项目(006)文件管理(007)枚举管理(008)
产品系列
产品系列属性
属性值
产品属性和属性值关系表
项目基础信息
项目技术人员配置
项目跟踪
项目方案
项目执行
文件夹
文件
枚举类
枚举值
系统用户
部门

3.4.3 数据库表

3.4.3.1 表汇总
表名功能说明
products_series产品系列
attributions产品系列属性
attr_val属性值
prod_attr_val产品属性和属性值关系表
projects_base项目基础信息
projects_tecstaffing项目技术人员配置
projects_trace项目跟踪
proj_schema项目方案
proj_execution项目执行
floder文件夹
file文件
enum_type枚举类
enumerate枚举值
sys_user系统用户
department部门

表 3.2 表汇总

3.4.3.2 物理关系图

表物理关系图如下:

表 3.3 物理关系图

3.4.3.3 表结构
  1. products_series

表名:产品系列

IdxField NameData TypeDescription
PKprod_idbigint产品系列ID
prod_namevarchar( 100 ) DEFAULT ‘’产品系列名称
prod_descriptionvarchar( 500 ) DEFAULT ‘’产品系列描述
prod_parentidbigint DEFAULT 0产品系列父节点
prod_levelint DEFAULT 0产品系列等级
prod_sortint DEFAULT 0产品系列排序
prod_typeint DEFAULT 0产品系列类型
prod_type_namevarchar( 100 ) DEFAULT ‘’产品系列类型名称
prod_tagvarchar( 200 ) DEFAULT ‘’产品系列标签(多标签使用","逗号分割)
prod_stateint DEFAULT 0产品系列状态
versionint DEFAULT 1版本
is_deletedtinyint UNSIGNED DEFAULT 0是否删除
FKcreate_userbigint DEFAULT 0创建人
create_timetimestamp DEFAULT CURRENT_TIMESTAMP创建时间
FKupdate_userbigint DEFAULT 0更新人
update_timetimestamp DEFAULT CURRENT_TIMESTAMP更新时间
Indexes
pk_products_series_pro_idON prod_id
  1. attributions

表名:产品系列属性

IdxField NameData TypeDescription
PKattr_idbigint DEFAULT 0属性Id
attr_namevarchar( 100 ) DEFAULT ‘’属性名称
attr_codevarchar( 100 ) DEFAULT ‘’属性Code
attr_descriptionvarchar( 500 ) DEFAULT ‘’属性描述
FKattr_pro_idbigint DEFAULT 0属性产品系列ID
attr_typeint DEFAULT 0属性类型
attr_type_namevarchar( 50 ) DEFAULT ‘’属性类型名称
attr_tagvarchar( 200 ) DEFAULT ‘’属性标签
attr_stateint DEFAULT 0属性状态
versionint DEFAULT 0版本
is_deletedtinyint UNSIGNED DEFAULT 0是否删除
FKcreate_userbigint DEFAULT 0创建人
create_timetimestamp DEFAULT CURRENT_TIMESTAMP创建时间
FKupdate_userbigint DEFAULT 0更新人
update_timetimestamp DEFAULT CURRENT_TIMESTAMP更新时间
FKattr_parentidbigint属性父节点
attr_levelint属性等级
attr_sortint属性排序
Indexes
pk_attributions_attr_idON attr_id
Foreign Keys
fk_attributions(attr_pro_id)ref products_series(prod_id)
  1. attr_val

表名:属性值

表名属性值
列名描述默认值数据类型
(精度范围)
空/
非空
约束条件
id属相值IDbigint唯一
attr_id属性ID0bigint
val_value属性值‘’varchar( 100 )
val_value_name属性值显示名称‘’varchar( 255 )
val_value_id属性值关联表Idbigint
val_unit属性值单位‘’varchar( 50 )
val_type属性值类型(如 int,float,varchar,file(文件类型),folder(文件夹),enum(下拉),check(多选))0bigint
val_type_name属性值类型名称‘’varchar( 100 )
val_tag属性值标签‘’varchar( 200 )
val_state属性值状态0int
version版本0int
is_deleted是否删除0tinyint UNSIGNED
create_user创建人bigint
create_time创建时间CURRENT_TIMESTAMPtimestamp
update_user更新人bigint
update_time更新时间CURRENT_TIMESTAMPtimestamp
  1. prod_attr_val

表名:产品属性和属性值关系表

IdxField NameData TypeDescription
PKprod_rela_idbigint产品属性关系ID
FKprod_idbigint产品系列ID
FKattr_idbigint属性ID
FKval_idbigint属性值ID
stateint DEFAULT 0状态
versionint DEFAULT 1版本
is_deletedint DEFAULT 0是否删除
FKcreate_userbigint创建人
create_timetimestamp DEFAULT CURRENT_TIMESTAMP创建时间
FKupdate_userbigint更新人
update_timetimestamp DEFAULT CURRENT_TIMESTAMP更新时间
Indexes
pk_prod_attr_val_prod_rela_idON prod_rela_id
Foreign Keys
fk_prod_attr_val( prod_id ) ref products_series(prod_id)
fk_prod_attr_val_attributions( attr_id ) ref attributions(attr_id)
fk_prod_attr_val_attr_val( val_id ) ref attr_val (id)

3.5 数据库的实施与维护

3.5.1 安全性设计

  1. 防止用户直接操作数据库的方法

用户只能用帐号登陆到应用软件,通过应用软件访问数据库,而没有其他途径操作数据库。

  1. 用户账户密码加密方法

(对用户帐号的密码进行加密处理,确保在任何地方都不会出现密码的明文。)

3.5.2 用于数据库访问或操纵的软件配置项的详细设计

系统配置项如下:

  1. 数据库配置项:

mysql:
ip: 127.0.0.1
port: 3306
driverClassName: com.p6spy.engine.spy.P6SpyDriver
_#com.mysql.cj.jdbc.Driver
_database: product_db
username: root
password: 123456
url: jdbc:p6spy:mysql:// f r a m e w o r k . m y s q l . i p : {framework.mysql.ip}: framework.mysql.ip:{framework.mysql.port}/${framework.mysql.database}?serverTimezone=CTT&characterEncoding=utf8&useUnicode=true&useSSL=false&autoReconnect=true&zeroDateTimeBehavior=round&allowMultiQueries=true
spring:
datasource:
driver-class-name: ${framework.mysql.driverClassName}
url: ${framework.mysql.url}
username: ${framework.mysql.username}
password: ${framework.mysql.password}
type: com.alibaba.druid.pool.DruidDataSource
druid:
initial-size: 10
min-idle: 8
max-active: 20
_#max-wait: 60000
_max-idle: 8

4 数据库设计的思考

数据、应用需求和计算机硬件技术是推动数据库发展的三个主要动力或三个重要因素。进入21世纪以来,数据和应用需要都发生了巨大的变化,硬件技术有了飞速的发展,尤其是大数据时代的到来,数据库技术、更广义的数据管理技术和数据处理技术遇到了前所未有的挑战,也迎来了新的发展机遇。
结合工业4.0,智能制造、智能设计、智能运维等工作的开展,数据来源更加多样化,数据量也是越来越巨大,对于海量数据的存储和管理,要求数据库具有高度的可扩展性和可伸缩性,以满足不断增长的数据量。
数据类型越来越多样和异构,从结构化数据扩展到文本、图形图像、音频、视频等多媒体数据,XML、HTML等半结构化/非结构化数据,还有流数据、队列数据和程序数据等。这些都要求数据库具有存储和处理多样异构数据的能力,特别是这些异构化的数据的联系表示、存储和处理能力。
大数据管理、内存数据库、数据仓库、分布式数据库、数据挖掘等等,围绕着数据展开的多种多样的技术层出不穷,只有不断的探索和学习,联系实际,秉承着开放包容的心态才能设计出更优质的数据库系统。

参考资料

  1. 数据库系统概论 / 王珊,萨师煊 2014.9(5)
  2. 计算机科学导论 / 罗琼 2016.08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Rainbow酱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值