[架构之路-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访问数据库中的数据,

数据库管理员也通过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. 数据库运行和维护阶段(后期维护、持续改进)

数据库应用系统经过试运行后即可投入正式运行。

数据库系统正式投入运行的过程中,必须不断地对其进行调整与修改。

在运行过程中必须不断地对其进行评价、调整与修改

3.2 需求分析:数据规格说明书与数据流图DFD

数据流图(Data Flow Diagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能数据在系统内部的逻辑流向逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。

数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。在结构化开发方法中,数据流图是需求分析阶段产生的结果。

数据流图或数据流程图Data Flow Diagram),缩写为DFD。数据流图DFD是描述系统数据流程的一种图形工具,它标志了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换逻辑输出所需的加工处理。

值得注意的是,数据流图不是传统的流程图框图数据流也不是控制流。数据流图是从数据的角度来描述一个系统,而流程图/框图是从对数据进行加工的工作人员的角度来描述系统。

DFD显示系统将输入和输出什么样的信息,数据如何通过系统前进以及数据将被存储在何处。它不显示关于进程计时的信息,也不显示关于进程将按顺序还是并行运行的信息,而不像传统的关注控制流的结构化流程图,或者UML活动工作流程图,它将控制流和数据流作为一个统一的模型。

数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。

数据流程图包括:

  • 1.数据流。数据流是数据在系统传播的路径,是有一些固定的数据组合而成。比如学生饭卡由学生姓名,学号,班级,学院等信息组合而成。

  • 2.数据源。代表系统外的实体,可以是系统外的物体等等。直接有实体的符号。

  • 3.加工。是对数据进行处理的单元,接收一定的数据输入,然后对其进行处理,再进行系统输出

  • 4.数据存储。可以代表文件,数据库等系统元素。

外部实体

外部实体可以代表人员,系统或子系统。这是某些数据的来源或去向。就业务流程而言,它是我们研究的系统的外部。因此,人们习惯在图的边缘绘制外部实体。

处理

流程是在其中进行数据处理和转换的业务活动或功能。可以将流程分解为更详细的级别,以表示在流程中如何处理数据。

数据存储

数据存储代表过程所需和/或产生的持久性数据的存储。以下是数据存储的一些示例:成员资格表,数据库表等。

数据流

数据流表示信息流,其方向由在流连接器末端显示的箭头表示。

3.3 概要/概念设计与ER模型

ER模型,全称为实体联系模型实体关系模型实体联系模式图(ERD)(英语:Entity-relationship model)由美籍华裔计算机科学家陈品山发明,是概念数据模型的高层描述所使用的数据模型模式图

ER模型常用于信息系统设计中;比如它们在概念结构设计阶段用来描述信息需求和/或要存储在数据库中的信息的类型。但是数据建模技术可以用来描述特定论域(就是感兴趣的区域)的任何本体(就是对使用的术语和它们的联系的概述和分类)。在基于数据库的信息系统设计的情况下,在后面的阶段(通常叫做逻辑设计),概念模型要映射到逻辑模型如关系模型上;它依次要在物理设计期间映射到物理模型上。

大部分数据库设计产品使用实体-联系模型(ER模型)帮助用户进行数据库设计。ER数据库设计工具提供了一个“方框与箭头”的绘图工具,帮助用户建立ER图来描绘数据。即使对SXL-92数据库来说,设计好的数据库也是具有挑战性的。

E-R图主要由实体类型、属性和联系三部分组成:

  • “矩形框”表示实体型,矩形框内写明实体名称; =》 实体(对象)

  • “椭圆图框”或圆角矩形表示实体的属性(对象成员),并用“实心线段”将其与相应关系的“实体型”连接起来;

  • ”菱形框“表示实体型之间的联系成因(对象关系),在菱形框内写明联系名,并用”实心线段“分别与有关实体型连接起来,同时在”实心线段“旁标上联系的类型(1:1,1:n或m:n)。

3.4 逻辑结构设计:逻辑模型与数据库二维表

逻辑结构设计就是根据某种规则,把ER图中的信息转换成数据库二维表格:

3.4.1 数据库二维表
3.4.2 关系模型与关系表

关系模型是关系数据库建立的基础,是在集合论中的关系概念的基础上发展起来的。

主要是指用二维表的形式表示实体实体间联系的数据模型

关系模型中无论是实体还是实体间的联系均由单一的结构类型——关系来表示。

在实际的关系数据库中的关系也称表。一个关系数据库就是由若干个表组成

关系模型本质上就是若干个存储数据的二维表,可以把它们看作很多Excel表。和Excel表有所不同的是,关系数据库的表和表之间需要建立“一对多”,“多对一”和“一对一”的关系,这样才能够按照应用程序的逻辑来组织和存储数据。

3.4.2 转换规则(实体->关系表以及关系表的关系)
3.4.3 关系代数

关系代数是一种抽象的查询语言,用对关系的运算来表达查询,作为研究关系数据语言的数学工具。关系代数的运算对象是关系,运算结果亦为关系。关系代数用到的运算符包括四类:集合运算符、专门的关系运算符、算术比较符和逻辑运算符比较运算符和逻辑运算符是用来辅助专门的关系运算符进行操作的,所以按照运算符的不同,主要将关系代数分为传统的集合运算和专门的关系运算两类。

传统的集合运算是二目运算,包括并、交、差、广义笛卡尔积四种运算。

能够进行并、交、差的前提条件:属性字段必须一致!!!

3.4.4 规范规范化理论

3.5 物理设计阶段:物理存储与物理存取方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

文火冰糖的硅基工坊

你的鼓励是我前进的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值