当前位置: 首页 > news >正文

【系统架构设计师(第2版)】六、数据库设计基础知识

6.1 数据库基本概念

  • 数据(Data)是描述事物的符号记录,它具有多种表现形式,可以是文字、图形、图像、声音和语言等。
  • 信息(Information)是现实世界事物的存在方式或状态的反映,信息具有可感知、可存储、可加工、可传递和可再生的自然属性。
    数据是信息的符号表示,而信息是具有特定释义和意义的数据。
  • 数据库系统(DataBase System, DBS)是一个采用了数据库技术,有组织地、动态地存储大量相关数据,从而方便多用户访问的计算机系统。
  • 数据库(DataBase, DB)是统一管理的、长期存储在计算机内的,有组织的相关数据的集合。其特点是数据间联系密切、冗余度小、独立性较高、易扩展,并且可为各类用户共享。(一般主要指的是存储数据的各种物理设备以及数据本身)
  • 数据库管理系统(DataBase Management System, DBMS)是数据库系统的核心软件,是由一组相关关联的数据集合和一组用以访问这些数据的软件组成,主要功能包括数据定义、数据操纵、数据库运行管理和数据库的建立和维护。
6.1.1 数据库技术的发展

数据处理是对各种数据进行收集、存储、加工和传播的一系列活动。数据管理是对数据进行分类、组织、编码、存储、检索和维护的活动。
数据管理技术的发展经历了3个阶段:人工管理、文件系统和数据库系统阶段。

  • 人工管理阶段:早期计算机主要用于科学计算,没有专门管理数据的软件,也没有诸如磁盘之类的设备来存储数据。
  • 文件系统阶段:由于大容量的磁盘等辅助存储设备的出现,文件系统专门管理辅助存储设备上数据。在文件系统中,按一定的规则将数据组织成一个文件,应用程序通过文件系统对文件中的数据进行存取和加工。
  • 数据库系统阶段:数据库系统是由计算机软件、硬件资源组成的系统,它有组织地、动态地存储大量关联数据,方便多用户访问,它与文件系统重要的区别是数据的充分共享、交叉访问、与应用程序的高度独立性。

数据库系统和文件系统的区别是:数据库对数据的存储是按照同一种数据结构进行的,不同的应用程序都可以直接操作这些数据(即对应用程序的高度独立性)。数据库系统对数据的完整性、一致性和安全性都提供了一套有效的管理手段(即数据的充分共享性)。数据库系统还提供了管理和控制数据的各种简单操作命令,容易掌握,使用户编译程序简单(即操作方便性)。

6.1.2 数据模型

数据库的基础结构是数据模型,是用来描述数据的一组概念和定义。数据模型的三要素是:

  • 数据结构:对象类型的集合,是对系统静态特性的描述;
  • 数据操作:对数据库中各种对象(型)的实例(值)允许执行的操作集合,包括操作及操作规则;
  • 数据的约束条件:一组完整性规则的集合。对于具体的应用数据必须遵循特定的语义约束条件,以保证数据的正确、有效和相容。

按照不同的数据模型,可以将数据库的发展历史分为3个阶段:

  • 层次和网状数据库系统:层次模型采用树形结构表示数据与数据间的联系;网状模型采用网络结构表示数据间的联系。
  • 关系数据库系统:关系模式是目前最常用的数据模型之一。关系数据库系统采用关系模型作为数据的组织方式,在关系模式中用表格结构表达实体集以及实体集之间的联系,其最大特色是描述的一致性。
  • 第三代数据库系统:数据模型的发展需要数据库系统支持日益复杂的数据类型,其中最典型的是No SQL(Not Only of SQL)运动。
6.1.3 数据库管理系统

DBMS实现对共享数据有效地组织、管理和存取,主要功能有:

  • 数据定义:提供了数据定义语言(Data Definition Lanaguage, DDL)可以对数据库的结构进行描述;
  • 数据库操作;提供了数据操作语言(Data Manipulation Language, DML)实现对数据库中数据的基本操作,如检索、插入、修改和删除;
  • 数据库运行管理:多用户并发控制、安全性检查和存取控制、完整性检查和执行、运行日志的组织管理、事务管理及自动恢复等;
  • 数据组织、存储和管理:管理数据字典、用户数据、存取路径等数据,确定以何种文件结构和存取方式在存储级别上组织这些数据,以提高存取效率;
  • 数据库的建立和维护;
  • 其他功能,与其他软件系统的通信。
6.1.4 数据库三级模式

数据库系统体系结构

从系统开发人员的角度,数据库系统一般采用三级模式结构:

  • **视图层(View Level)**是最高层次的抽象,描述整个数据库的某个部分的数据。实现用户的数据需求,简化用户与系统的交互。
  • **逻辑层(Logical Level)**是比物理层更高一层的抽象,描述数据库中存储的数据以及这些数据存在的联系。逻辑抽象层是数据库管理员的职责,管理员确定数据库应保存哪些信息。
  • **物理层(Physcial Level)**是最低层次的抽象,描述数据在存储器中式如何存储的。物理层详细的描述复杂的

从数据库管理系统的角度,数据库也分为三级模式:

  • 外模式:也称用户模式或子模式,是用户与数据库系统的接口,是用户需要使用的部分数据的描述。它由若干个外部记录类型组成。(用户使用数据操纵语言对数据库进行操作,实际上是对外模式的外部记录进行操作。)
  • 概念模式:也称模式,是数据库中全部数据的逻辑结构和特征的描述,它由若干个概念记录类型组成,只涉及型(数据的结构和属性说明),不涉及具体的值(型的具体赋值)。
  • 内模式:也称存储模式,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。定义所有的内部记录类型、索引和文件的组织方式,以及数据控制方面的细节。
    概念模式不仅要描述概念记录类型,还要描述记录间的联系、操作、数据的完整性和安全性等要求。但概念模式不涉及存储结构、访问技术等细节。只有这样概念模式才算做到了“物理数据独立性”。

数据按外模式提供给用户,按内模式的描述存储在磁盘上,而概念模式提供了连接着两极模式的相对稳定的中间观点,并使得两级可以独立进行变动。

6.2 关系数据库(TODO)

关系数据库是目前应用非常广泛的数据库之一,有一套完整的理论支持。关系模式是关系数据库的基础,由关系数据结构、关系操作集合和关系完整性规则3部分组成。

6.2.1 关系数据库基本概念

关系数据库系统是支持关系数据模型的数据库系统。关系数据库应用数据方法来处理数据库中的数据。

1、关系的基本术语
  • 属性(Attribute):在现实世界中,要描述一个事物常常取若干特征来表示。这些特征称为属性。
  • 域(Domain):每个属性的取值范围对应一个值的集合,称为该属性的域。
  • 目(或度)(Degree):一个关系中属性的个数。
  • 候选码(Candidate Key):若关系中的某一属性或属性组的值能唯一的标识一个元组,则称该属性或属性组为候选码。
  • 主码(Primary Key):或称主键,若一个关系有多个候选码,则选择其中一个作为主码。
  • 主属性(Prime Attribute):包含在任何候选码中的属性称为主属性。
  • 非主属性(Non-Prime Attribute):不包含在任何候选码中的属性称为非主属性。
  • 外码(Foregin Key):如果关系模式R中的属性或属性组不是该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码。
  • 全码(All-key):关系模式的所有属性组是这个关系模式候选码,称为全码。
  • 笛卡尔积:笛卡尔积是集合论中的一个基本概念,它描述了两个集合之间所有可能的有序对的组合。
    笛卡尔积定义

笛卡尔积在许多领域有着广泛的应用:在数据库中,笛卡尔积用于联接操作,其中两个表的笛卡尔积被用来生成所有可能的组合,然后通过条件筛选出需要的结果;在组合数学中,笛卡尔积用于计算排列和组合的总数,尤其是当有多个独立的选择时;在统计学中,笛卡尔积可用于研究变量之间的相互作用,尤其是设计实验和建立模型时;…

2、关系数据库模式

在关系数据库中要区分型和值。关系数据库中的型也称为关系数据库模式,是关系数据库结构的描述。它包括若干域的定义以及在这些域上定义的若干关系模式。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常称之为关系数据库。
关系模式定义

3、关系的完整性约束

完整性规则提供了一种手段来保证当授权用户对数据库做修改时不会破坏数据的一致性。关系模式的完整性规则时对关系的某种约束条件。
关系的完整性约束共分为三类:

  • 实体完整性(Entity Integrity):每个数据表都必须有主键,而作为主键的所有字段,其属性必须是唯一且非空值;
  • 参照完整性(引用完整性)(Referential Integrity):若F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值,或者取空值(F的每个属性值均为空),或者等于S中某个元组的主码值;
  • 用户定义完整性(User Defined Integrity):由应用环境决定,反映某一具体应用所涉及的数据必须满足的语义要求。
6.2.2 关系运算

关系操作的特点是操作对象和操作结果都是集合。关系代数运算有4类:集合运算符、专门的关系运算符、算术比较符、逻辑运算符。
5种基本的关系代数运算包括并、差、笛卡尔积、投影和选择,其他运算可以通过基本的关系运算导出。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2.6 关系数据库设计基础理论

关系数据库设计的目标是生成一组合适的、性能良好的关系模式,以减少系统中信息存储的冗余度,但又可以方便地获取信息。
关系数据理论是指导数据库设计的基础,关系数据库设计师数据库语义学的问题。

1、函数依赖

数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间联系和约束的抽象,是数据内在的性质,是语义的体现。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、多值依赖

在这里插入图片描述

3、规范化

关系数据库设计的方法之一就是设计满足适当范式的模式,通常可以通过判断分解后的模式达到几范式来评价模式规范化的程序。范式有:1NF、2NF、3NF、BCNF(Boyce Codd Normal Form,巴克斯范式)、4NF、5NF,其中1NF级别最低。
通过分解,可以将一个低一级范式的关系模式转换为若干个高一级范式的关系模式,这种过程叫作规范化。

  • 1NF:若关系模式R的每一个分量都是不可再分的数据项,则关系模式R属于第一范式。记为R∈1NF;
  • 2NF:当1NF消除了非主属性对码的部分函数依赖,则称为2NF;
  • 3NF:当2NF消除了非主属性对码的传递函数依赖,则称为3NF;
  • BCNF:当3NF消除了主属性对码的部分函数依赖和传递函数依赖,则称为BCNF;
  • 4NF:4NF限制关系模式的属性间不允许有非平凡且非函数依赖的多值依赖。

如果只考虑函数依赖,关系模式最高的规范化程序是BCNF;如果考虑多值依赖,关系模式最高的规范化程序是4NF。

6.3 (关系)数据库设计

数据库设计的任务是针对一个给定的应用环境,在给定的硬件环境和操作系统及数据库管理系统等软件环境下,创建一个性能良好的数据库模式,建立数据库及器应用系统,使之能有效地存储和管理数据,满足各类用户的需求。
数据库设计(Database Design)属于系统设计的范畴,通常把使用数据库的系统统称为数据库应用系统,把对数据库应用系统的设计简称为数据库设计。

6.3.1 数据库设计的基本步骤

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

  • 用户需求分析:对应用对象的功能、性能、限制等要求进行科学的分析;
  • 概念结构设计:对信息分析和定义,对应用对象精确地抽象、概括而形成对立于计算机系统的企业信息模式(绘制E-R模型图,Entity-Relationship Model);
  • 逻辑结构设计:将抽象的概念模型转化为与选用的DBMS产品所支持的数据模型相符合的逻辑模式。包括模式初始设计、子模式设计、应用程序设计、模式评价以及模式求精;
  • 物理结构设计:逻辑模式在计算机中的具体实现方案;
  • 数据库实施阶段:根据逻辑设计和物理设计阶段的结果建立数据库,编制和调试应用程序,组织数据入库并试运行;
  • 数据库运行和维护阶段:根据运行情况对系统进行不断的评价、调整和修改。
6.3.2 数据需求分析

数据需求分析是用户和设计人员对数据库应用系统所涉及的内容(数据)和功能(行为)的整理和描述,以用户的角度认识系统,协助用户明确对系统的各种要求、确定系统的边界,并获取用户对系统的要求:

  • 信息要求:系统需求保存哪些信息,这些保存的信息要得到什么样的信息,这些信息以及信息间应该满足的完整性要求;
  • 处理要求:系统中要实现什么样的操作功能,对保存信息的处理过程和方式,各种操作处理的频度、响应时间要求、处理方式等,以及处理过程中的安全性要求和完整性要求;
  • 系统要求:安全性要求(比如用户类型及用户权限等);使用方式要求(用户的使用环境、高峰时的用户数等);可扩展性要求(对未来功能、性能和应用访问的可扩展性的要求)。
6.3.3 概念结构设计

概念结构设计的目标是产生反映系统信息需求的数据库概念结构,即概念模式。(概念结构是独立于支持数据的DBMS和使用的硬件环境。)
设计人员应从用户的角度看待数据以及数据处理的要求和约束,产生一个反映用户观点的概念模式,然后再把概念模式转换为逻辑模式。

概念结构设计最著名最常用的方法是实体-联系方法(Entity-Relationship Approach),简称E-R方法。它采用E-R模型将现实世界的信息结构统一由实体、属性,以及实体之间的联系来描述。使用E-R方法,对现实事物加以抽象认识,以E-R图的形式描述出来。
对线程事物抽象认识的3种方法分别是:分类、聚集和概括。

  • 分类(Classification):对现实世界的事物,按照其具有的共同特征和行为,定义一种类型;
  • 聚集(Aggregation):定义某一类型所有具有的属性。
  • 概括(Generalization):由一种已知类型定义新的类型。(通常把已知类型称为超类Superclass,新定义的类型称为子类Subclass)

E-R图的设计要依照上述的抽象机制,对需求分析阶段所得到的数据进行分类、聚集和概括,确认实体、属性和联系。概念结构设计工作步骤包括:选择局部应用、逐一设计分E-R图和E-R图合并。

  • 选择局部应用:数据流图是对业务处理过程从高层到底层的一级抽象,高层抽象流图一般反映系统的概貌,对数据的引用较为笼统,而底层又可能过于细致。选择适当层次的数据流图,让这一层的每一部分对应一个局部应用,实现某一项功能;
  • 逐一设计分E-R图:对于每一局部应用,其所得到的数据都应用收集在数据字典中,依照该局部应用的数据流图,从数据字典中提出数据,使用抽象机制确认局部应用中的实体、实体的属性、实体标识符及实体间的联系和其他类型;
  • E-R图合并:合并的目的在于在合并过程中解决分E-R图中相互存在的冲突,消除在分E-R图之间存在的信息冗余,使之称为能够被全系统所有用户共同理解和接受的统一的、精炼的全局概念模式。
6.3.4 逻辑结构设计

逻辑结构设计即是在概念结构设计的基础上进行数据模型设计,可以是层次模型、网状模型和关系模型。逻辑结构设计阶段的主要工作步骤包括:

  • 确定数据模型;
  • 将E-R图转换成为指定的数据模型;
  • 确定完整性约束;
  • 确定用户视图。

在关系模式的规范化过程中,会导致关系的概念越来越单一化,在响应用户查询时,往往需要设计多表的关联操作,导致查询性能下降。为此需要对关系模式进行修正,对部分影响性能的关系模式进行处理,包括分解、合并、增加冗余属性等。这种修正称之为反规范化设计。
反规范化时加速读操作性能(数据检索)的方法,反规范化都会在数据库中形成数据冗余,提高查询性能的同时,也会带来设计复杂和更新异常的问题。比如数据冗余带来的数据不一致性问题。

6.3.5 物理设计

一般来说,物理设计的主要工作步骤包括:

  • 确定数据分布:比如数据时集中管理还是分布式管理,根据应用场景也可能需要对数据库逻辑设计做必要的修改;
  • 确定存储结构:在文件中,数据以记录为单位存储的,可以采用顺序存储、哈希存储、堆存储和B树存储等方式,实际应用中需要根据数据的处理要求和变更频度选定合理的物理结构;
  • 确定访问方式:根据使用的存储结构,采用合适的存储结构,满足对存储操作功能、性能的要求。
6.3.6 数据库实施

根据逻辑和物理设计的结果,在计算机上建立起实际的数据库结构,数据加载(或称装入),进行试运行和评估的过程,叫做数据库的实施(或称实现)。

6.3.7 数据库运行维护
  • 对数据库性能的监测和改善;
  • 数据库的备份及故障恢复;
  • 数据库重组和重构:在不改变数据库逻辑和物理结构的情况下,去除数据库存储文件中的废弃空间以及碎片空间中的指针链,使数据库记录在物理上紧连的操作称为重组;在运行过程中因为一些原因而对数据库的结构做修改称为数据库重构。

在数据库运行阶段,对数据库的维护主要由DBA(Database Administrator,数据库管理员)完成。

6.4 应用程序与数据库的交互

在普通的情况下,用户可以通过SQL和过程性SQL来访问数据库中的数据。但是在应用系统中,需要高级程序语言来完成与用户之间的交互,用户不能直接访问后台的数据。因此数据库管理系统需要提供程序级别的接口来访问数据。
常见应用程序与数据库的数据交互方式有:

  • 库函数级别访问接口:数据库提供的最底层的高级程序语言访问数据接口(API),强依赖于特定的数据库;
  • 嵌入式SQL访问接口:Embedded SQL,是一种将SQL语句直接写入某些高级程序语言,如C、Java等编程语言源码的方法,数据库厂商需要提供嵌入式SQL的预编译器及相应的函数库;
  • 通用数据接口标准:开放数据库连接(Open DataBase Connectivity, ODBC)为异构数据库的访问提供了统一的接口,允许应用程序以SQL为数据存取标准,存取不同DBMS管理的数据,ODBC的最大优点就是能以统一的方式处理所有的关系数据库;
  • ORM访问接口:对象关系映射(Object Relational Mapping)是一种将内存中的对象保存到关系型数据库中的技术,主要负责实体域对象的持久化,封装数据库访问细节,通过使用描述对象和数据库之间映射的元数据,将程序中的对象与关系数据库相互映射;

6.5 NoSQL数据库

NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库(即表格、行、列、SQL),它们不保证关系数据库的ACID特性。

按照所使用的数据结构的类型,一般可以将NoSQL数据库分为以下4种类型:

  • 列式存储数据库
    行列数据库即传统的关系型数据库,数据按记录存储,每一条记录的所有属性存储在一行。列式数据库是按数据库记录的列来组织和存储数据的,数据库种每个表由一组页链的集合组成,每条页链对应表中的一个存储列。

  • 键值对存储数据库
    键值存储的典型数据结构一般为数组链表:先通过Hash算法得出Hashcode,找到数据的某一个位置,然后插入链表。

  • 文档型数据库
    文档型数据库同键值对存储数据库类型,使用半结构化(如JSON)的数据格式。文档数据库可以看作是键值数据库的升级版:允许嵌套键值。

  • 图数据库
    图型结构的数据库,使用灵活的图形模型,并且能够扩展到多个服务器上。它的数据模型基于图论,主要由两部分构成:节点,代表实体和对象;边,代表节点之间的关系。

NoSQL整体框架分为4层,由下至上分为数据持久层(Data Persistence)、数据分布模型层(Data Distribution Modle)、数据逻辑模型层(Data Logical Model)和接口层(Interface),层之间相辅相成,协调工作。

  • 数据持久层定义了数据的存储方式,主要包括基于内存、硬件、内存和硬件接口、订制可插拔4种形式;
  • 数据分布层定义了数据是如何分布的,主要有3种形式:一是CAP支持,可用于水平扩展;二是对数据中心支持,可以保证在横跨多个数据中心也能够平稳运行;三是动态部署支持,可以在运行着的集群种动态地添加或删除节点;
  • 数据逻辑层表述了数据的逻辑表现形式;
  • 接口层为上层应用提供了方便的数据调用接口(提供的选择远多于关系型数据库),常提供的接口类型有:Rest、Thrift(RPC接口)、Map/Reduce、Get/Put、特定语言API,使得应用程序和数据库的交互更加方便。
http://www.dtcms.com/a/511248.html

相关文章:

  • LeetCode每日一题——缀点成线
  • COM组件访问权限错误的解决方案‌错误信息:检索 COM 类工厂中 CLSID 为{xxxx} 的组件失败,原因是出现以下错误:80070005 拒绝访问
  • 计算机组成原理 刘宏伟 第四章 存储器(下)
  • MS-YOLOv11:一种用于遥感图像中小目标检测的小波增强多尺度网络
  • 外贸企业网站设计公司龙中龙网站开发
  • 整站优化seo做电脑网站手机能显示不出来怎么办
  • Android设备GPU频点挡位路径
  • Vanna Text2SQL框架:用自然语言查询数据库的新方式
  • Android Studio新手开发第二十七天
  • ros中的Navigation导航系统
  • Python循环结构、控制语句及综合应用问答
  • Typescript - Tuple 元祖类型(语法 / 简单使用 / 不可变元组 / 合并多个元组)详细入门教程
  • 成就系统概述
  • 仓颉编程(10)类的定义
  • 常见的域名注册网站报纸做垂直门户网站
  • 东营网站建设推广市政工程中标查询网
  • Llinux自动安装chrome与chromedriver
  • 低侧单向电流检测电路
  • 一款轻量级 Java CLI 工具,用于抓取、展示和导出 Exploit-DB 的漏洞数据
  • 运维效率翻倍:如何利用阿里云监控工具实现服务器智能运维?
  • [人工智能-大模型-29]:大模型应用层技术栈 - 第二层:Prompt 编排层(Prompt Orchestration)
  • 告别笔记局限!Blinko+cpolar让AI笔记随时随地可用
  • 【多线程】可重入锁 Reentrant Lock
  • 蓝牙低功耗(BLE)通信的中心设备/外围设备(连接角色)、主机/从机(时序角色)、客户端/服务器(数据交互角色)的理解
  • 3.5 面向连接的传输: TCP
  • 深度学习(10)-PyTorch 卷积神经网络
  • 网站没有做实名认证推广员是干什么的
  • 异步的feign请求报错:No thread-bound request found
  • 北京建设公司网站建设重庆有网站公司
  • YUV实战案例:一个网络摄像头的工作流程(速通)