[架构之路-129]-《软考-系统架构设计师》-数据库-1-数据库基础层次模型数据库设计过程
Posted 文火冰糖的硅基工坊
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[架构之路-129]-《软考-系统架构设计师》-数据库-1-数据库基础层次模型数据库设计过程相关的知识,希望对你有一定的参考价值。
前言:
第13章 数据库
第1节 数据库基础
1.1 什么是数据库
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是结构化的数据存储与访问。
是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
数据库是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。当今世界是一个充满着数据的互联网世界,充斥着大量的数据。即这个互联网世界就是数据世界。
数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。
数据库是一个按数据结构来存储和管理数据的计算机软件系统。数据库的概念实际包括两层意思:
(1)数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。
(2)数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。
数据库作为最重要的基础软件,是确保计算机系统稳定运行的基石。
1.2 数据库的类型
(1)关系型数据库:SQLite、Oracle、mysql
特性:
1、关系型数据库,是指采用了关系模型来组织数据的数据库;
2、关系型数据库的最大特点就是事务的一致性,结构化数据存储;
3、简单来说,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
优点:
1、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;
2、使用方便:通用的SQL语言使得操作关系型数据库非常方便;
3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率;
4、支持SQL,可用于复杂的查询。
缺点:
1、为了维护一致性所付出的巨大代价就是其读写性能比较差;
2、固定的表结构;
3、高并发读写需求;
4、海量数据的高效率读写;
(2)键值对 - 非关系型数据库MongoDb、redis、HBase
特性:
1、使用键值对存储数据;
2、分布式;
3、一般不支持ACID特性;
4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。
优点:
1、无需经过sql层的解析,读写性能很高;
2、基于键值对,数据没有耦合性,容易扩展;
3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。
缺点:
1、不提供sql支持,学习和使用成本较高;
2、无事务处理,附加功能bi和报表等支持也不好;
(3)分布式数据库
所谓的分布式数据库技术,就是结合了数据库技术与分布式技术的一种结合。具体指的是把那些在地理意义上分散开的各个数据库节点,但在计算机系统逻辑上又是属于同一个系统的数据结合起来的一种数据库技术。既有着数据库间的协调性也有着数据的分布性。这个系统并不注重系统的集中控制,而是注重每个数据库节点的自治性,此外为了让程序员能够在编写程序时可以减轻工作量以及系统出错的可能性,一般都是完全不考虑数据的分布情况,这样的结果就使得系统数据的分布情况一直保持着透明性。
数据独立性概念在分布式数据库管理系统中同样是十分重要的一环,但是不仅如此,分布式数据管理系统还增加了一个叫分布式透明性的新概念。这个新概念的作用是让数据进行转移时使程序正确性不受影响,就像数据并没有在编写程序时被分布一样。
在分布式数据库里,数据冗杂是一种被需要的特性,这点和一般的集中式数据库系统不一样。
第一点是为了提高局部的应用性而要在那些被需要的数据库节点复制数据。
第二点是因为如果某个数据库节点出现系统错误,在修复好之前,可以通过操作其他的数据库节点里复制好的数据来让系统能够继续使用,提高系统的有效性。
(4)其他数据库
1.3 数据库管理系统DBMS
数据库管理系统(Database Management System)是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。它对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
它可以支持多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。
大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。MySQL就是一种数据库管理系统, SQL语句就是操作数据库的语句。
1.4 关系型数据库与excel文档的关系
广义上讲,excel文档就是一个关系型数据库:
excel的每个页sheet就是关系型数据库的一个表。
excel文件有多个sheet,就相当于关系型数据库有多个表格。
不同的表格,可以有不同的列属性。
excel表格中的每个列,就相当于数据库的表的属性。
EXCEL是一种相对简单的数据库,并不是说给功能强大的才叫数据库,
它都可以实现视图和筛选等功能。
数据库和excel一样,都是以文件的方式永久性保存数据。文件的内容都是非明文的方式存储。
都需要通过专门的管理工具才能解析数据库文件中的内容。
excel类似与MySQL数据库管理工具。
1.5 数据库常见基本术语
在数据库设计中,hibernate,iBatis等ORM框架的使用中经常听说主键,外键,主表,从表,关联表,父表,子表之类的术语,弄懂它们之前的区别与联系对于数据库设计和ORM框架的学习使用是非常有必要的。
(1) 数据库角度而言
主键:一般情况下,满足第一范式的表都有一个主键Primary key,用于唯一标示数据库中的一个字段。
外键:外键是相对于数据库设计中的参考完整性而言,它与主键之间是彼此依赖的关系。假设现在有两个表,产品分类表ProductCategory(主键CategoryId)和产品信息表Product(主键ProductId),每类产品都属于一个分类。那么如果产品信息表肯定需要参考产品分类表进行定义。因为如果没有产品分类表,又何谈产品分类呢。所以产品信息表Product需要引用ProductCategory中的主键CategoryId 进行产品分类定义,Product表中引用CategoryId的字段就是外键。在概念模型(Concept Model)中,从产品分类角度看,产品分类和产品之间就是一对多的关系,一个分类下可以有多个产品。从产品角度看,产品和产品分类之间是多对一的关系,多种产品属于一个分类。
主表:在数据库中建立的表格即Table,其中存在主键(primary key)用于与其它表相关联,并且作为在主表中的唯一性标识。(摘自百度百科)
从表:以主表的主键(primary key)值为外键 (Foreign Key)的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。(摘自百度百科)
关联表:两个数据库及其(数据)表之间的数据的相互依赖和影响关系。
比如现有某学校三个数据表:学生(学号,姓名),课程(课程名,课程编号),选课(学号,课程号,成绩)。选课表中的“学号”,“课程号”必须是另外两个表中存在的数据,才有意义;而且一旦另外两表中的某一学生或课程被删除,选课表中的相应学号或课程号必须自动删除。这就是一种关联关系。它实际上是保证数据完整性的一种做法.
父表,子表的说法其实在PowerDesigner中解释可能更加恰当,这里就不多说了。
第2节 数据库模式与层次模型
2.1 数据库的三级层次模型
所谓模式是指用数据描述语言精确定义的数据模型。
数据模式的三个层次:外部层、概念层和内部层。
构成数据库系统的三级模式结构:外模式、概念模式、内模式,如图所示。
不管数据库管理系统的功能如何变化、操作系统的平台如何不同、数据模型如何不同等,数据库系统的三级模式结构的特征基本上保持不变。
数据库的三级模式结构是对数据的三个抽象级别。
2.2 数据库的三层模式结构的好处
保证了数据的独立性:概念模式和内模式分开,保证数据的物理独立性,把外模式和概念模式分开,保证数据逻辑的独立性。
简化用户接口:用户不需要了解数据库实际存储情况,也不需要对数据库存储结构了解,只要按照外模式编写应用程序就可以访问数据库。
有利于数据共享:所有用户使用统一概念模式导出的不同外模式,减少数据冗余,有利于多种应用程序间共享数据。
有利于数据安全保密:每个用户只能操作属于自己的外模式数据视图,不能对数据库其他部分进行修改,保证了数据安全性。
2.3 数据库模式的含义
(1)外模式
又称用户模式,业务模式,在传统的数据库系统中定义为子模式,子模式是概念模式的子集。
外模式按用户视图定义数据,也可以从概念模式中导出。
外模式是与每个具体的应用程序和它使用的高级编程语言相关联的。
相同的数据库,不同的用户视图(通过映射完成),看到不同的内容。
(2)概念模式
又称逻辑模式,是现实世界和数据存储之间的扭带。
概念模式是为了实现数据库数据的共享进行数据库设计之后,得到的全局性数据逻辑关系的抽象和描述,它独立于数据的物理存储结构,是所有用户的共同的逻辑数据视图。
概念模式是独立于具体应用和物理环境的,是数据库中全体数据的逻辑表示,与具体的物理存储无关,也无具体的编程语言无关。
(3)内模式
又称物理模式,用以描述数据在数据库中的物理存储和物理存取方式。
内模式与数据的物理存储(操作系统)和硬件有关。
所有的这些模式都必须在使用数据库之前进行定义。数据库管理系统提供模式描述语言 DDL,用以严格地描述一个数据库中所有实体的定义,经编译之后存储在数据库中。
数据库设计的过程就是综合内外模式, 产生概念模式,根据使用的DBMS产生物理模式。再由概念模式导出用户视图, 就是用户看到的逻辑数据。
2.4 两层映射
在这三个抽象级别之间,为了实现数据的转换,数据库管理系统必须提供两层映射功能,即外模式和概念模式的映射,概念模式和内部模式的映射。
(1)外模式和概念模式的映射
定义了外模式和概念模式之间的对应关系,通常在外模式中给出描述。
这层映射的作用是实现逻辑数据的独立性。当数据的整体逻辑结构改变时,如果某个外模式保持不变,相应的外模式和概念模式的映射关系需要改变,因而该外模式对应的应用程序不用改变。
(2)概念模式和内部模式的映射
存在于概念层,由DBMS建立两者之间的逐一对应关系。
这层映射的作用是实现物理数据的独立性。当数据库的物理存储模式修改时,如改变存储设备和存取方法时,概念模式可以保持不变,相应的内模式和概念模式的映射关系需要改变,应用程序也不用改变。
2.5 数据库视图
第3节 数据库设计过程(数据建模过程)
3.1 什么是数据库设计
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。
数据库设计(Database Design)是指根据用户的需求,在某一具体的数据库管理系统上,设计数据库的结构和建立数据库的过程。数据库系统需要操作系统的支持。
MySQL是数据库管理系统,数据库设计并不是要设计和开发一个数据库管理系统,而是设计如何利用数据库管理系统来管理应用程序所需要的数据。
数据库设计是建立数据库及其应用系统的技术,是信息系统开发和建设中的核心技术。由于数据库应用系统的复杂性,为了支持相关程序运行,数据库设计就变得异常复杂,因此最佳设计不可能一蹴而就,而只能是一种“反复探寻,逐步求精”的过程,也就是规划和结构化数据库中的数据对象以及这些数据对象之间关系的过程。
数据库设计的设计内容包括:需求分析、概念结构设计、逻辑结构设计、物理结构设计、数据库的实施和数据库的运行和维护。
数据库设计过程就是按照规范设计的方法,考虑数据库及其应用系统开发全过程,将数据库设计分为以下 6 个阶段(以图书馆座位预约系统为例):
至今,数据库设计的很多工作仍需要人工来做,除了关系型数据库已有一套较完整的数据范式理论(数据库设计 模式)可用来部分地指导数据库设计之外,尚缺乏一套完善的数据库设计理论、方法和工具,以实现数据库设计的自动化或交互式的半自动化设计。所以数据库设计今后的研究发展方向是研究数据库设计理论,寻求能够更有效地表达语义关系的数据模型,为各阶段的设计提供自动或半自动的设计工具和集成化的开发环境,使数据库的设计更加工程化、更加规范化和更加方便易行,使得在数据库的设计中充分体现软件工程的先进思想和方法。
1. 需求分析:数据规格说明书+数据流程图
需求分析是数据库设计的第一步,是最困难、最耗费时间的一步,也是整个设计过程的基础。
在这阶段的我们的主要任务是对现实世界中学生、老师、管理员的需求进行详细调查,然后通过分析,逐步明确他们对系统的需求:包括业务处理需求和数据需求。
调查和分析用户的业务活动和数据的使用情况,弄清所用数据的种类、范围、数量以及它们在业务活动中交流的情况,确定用户对数据库系统的使用要求和各种约束条件等,形成用户需求规约。
需求分析是在用户调查的基础上,通过分析,逐步明确用户对系统的需求,包括数据需求和围绕这些数据的业务处理需求。在需求分析中,通过自顶向下,逐步分解的方法分析系统。
数据库需求分析的结果是:客户的数据需求!!!
分析的结果采用数据流程图(DFD)进行图形化的描述。
需求分析是否做的充分和准确,直接决定了在其上构建数据库的速度与质量。需求分析做的不好,会导致整个数据库设计返工重做。
最开始对学生做成问卷调查:了解到,学生使用系统最不想使用的是功能复杂的多功能系统,所以系统尽量简单明了。
2. 概要设计与ER模型
概要设计是数据库设计的关键。
概要设计是对用户要求描述的现实世界(可能是一个工厂、一个商场或者一个学校等),通过对其中诸处的分类、聚集和概括,建立抽象的概念数据模型。
这个概念模型应反映现实世界各部门的信息结构、信息流动情况、信息间的互相制约关系以及各部门对信息储存、查询和加工的要求等。所建立的模型应避开数据库在计算机上的具体实现细节,用一种抽象的形式表示出来。以扩充的实体—(E-R模型)联系模型方法为例:
第一步先明确现实世界各部门所含的各种实体及其属性、实体间的联系以及对信息的制约条件等,从而给出各部门内所用信息的局部描述(在数据库中称为用户的局部视图)。
第二步再将前面得到的多个用户的局部视图集成为一个全局视图,即用户要描述的现实世界的概念数据模型。
该过程通过综合、归纳与抽象用户数据需求,形成一个具体 DBMS 的概念模型,也就是绘制数据库的 E-R 图。E-R 图主要用于在项目团队内部,设计人员和客户之间进行沟通,把我们的设计理念和用户的需求更好的结合确认需求信息的正确性和完整性。
E-R图转为关系模型:
用 户(学号,姓名,性别,院系,班级,密码)
管 理 员(姓名,电话,楼层,密码)
座 位(楼层,区域,座位号,管理员)
预 约 表(学号,订单编号,座位号,开始时间,结束时间)
信用评估(学号,预约次数,违约次数,信用评分)
3. 逻辑结构设计:逻辑模型与数据库表
逻辑结构设计主要工作是将现实世界的概念数据模型设计成数据库的一种逻辑模式,即适应于某种特定数据库管理系统所支持的逻辑数据模式。与此同时,可能还需为各种数据处理应用领域产生相应的逻辑子模式。这一步设计的结果就是所谓“逻辑数据库”。
将 E-R 图转换为多张数据库的表,进行逻辑设计,确认各表的主外键,并应用数据库设计的三大范式进行审核,对其优化。在这阶段,E-R 图非常重要,作为逻辑结构设计的最重要的输入。
大家要学会根据各个实体定义的属性来画出总体的 E-R 图。
4. 物理设计阶段:物理存储与物理存取方法
物理设计阶段根据特定数据库管理系统所提供的多种存储结构和存取方法等依赖于具体计算机结构的各项物理设计措施,对具体的应用任务选定最合适的物理存储结构(包括文件类型、索引结构和数据的存放次序与位逻辑等)、存取方法和存取路径等。这一步设计的结果就是所谓“物理数据库”。
经项目组开会讨论确定 E-R 图后,根据项目的技术实现,团队开发能力及项目的成本预算,选择具体的数据库管理工具(如 SQL 或 Oracle 等)进行物理实现的设计!
1)座位表
2)信用积分表
3)管理员表
4)用户表
5)预约座位表
5. 数据库验证与实施阶段(编码实施)
在上述设计的基础上,收集数据并具体建立一个数据库,运行一些典型的应用任务来验证数据库设计的正确性和合理性。一般,一个大型数据库的设计过程往往需要经过多次循环反复。当设计的某步发现问题时,可能就需要返回到前面去进行修改。因此,在做上述数据库设计时就应考虑到今后修改设计的可能性和方便性。
运用 DBMS 提供的数据库查询语言(SQL)、工具及宿主语言(例如 Java),根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。
6. 数据库运行和维护阶段(后期维护、持续改进)
数据库应用系统经过试运行后即可投入正式运行。
以上是关于[架构之路-129]-《软考-系统架构设计师》-数据库-1-数据库基础层次模型数据库设计过程的主要内容,如果未能解决你的问题,请参考以下文章
[架构之路-111]-《软考-系统架构设计师》-软件架构设计-4-特定领域软件架构
[架构之路-109]-《软考-系统架构设计师》-软件架构设计-2-软件架构概述:架构风格
[架构之路-118]-《软考-系统架构设计师》-软架构设计-11-可靠性相关设计
[架构之路-110]-《软考-系统架构设计师》-软件架构设计-3-架构描述语言ADL与UML