数据库|数据库系统概述

AI 辅助信息

  • 使用工具:DeepSeek V3.2

一、核心术语概念

  1. 数据 (Data)

    • 定义:描述现实世界中各种具体事物或抽象概念的、可存储并具有明确意义的信息。在数据库领域,数据是管理的主要对象,需经过抽取和结构化处理。
    • 要点:数据是信息的载体,是数据库存储的基本对象。

    就是你想管理的信息,比如用户的姓名、年龄。它是“原材料”。

  2. 数据库 (DB, Database)

    • 定义:长期存储在计算机内、有组织的、可共享的、相互关联的数据集合。
    • 要点:具有较小的冗余度、较高的数据独立性和易扩展性,并为多种应用(用户)共享。

    存放数据的“仓库”。这些数据是按特定结构组织的(比如一张张Excel表格)。

  3. 数据库管理系统 (DBMS, Database Management System)

    • 定义:位于用户与操作系统之间的一层数据管理软件,是数据库系统的核心。它由一组计算机程序构成,用于科学地组织和存储数据、高效地获取和维护数据。
    • 要点:主要功能包括数据定义、数据操纵、数据库的运行管理(并发控制、安全性、完整性检查、故障恢复)以及数据库的建立和维护。

    管理仓库的“仓库管理员”和“一套管理系统”。你告诉管理员(发SQL命令)要存什么、取什么,他来操作仓库。我们常说的Oracle、MySQL就是DBMS。

  4. 数据库系统 (DBS, Database System)

    • 定义:在计算机系统中引入数据库后的系统构成。它是一个完整的运行环境。
    • 构成:数据库(DB) + 数据库管理系统(DBMS) + 应用程序 + 数据库管理员(DBA) + 最终用户。

    一个完整的运行环境。你的Java应用 + MySQL + Linux服务器 + 运维 + 你,合在一起才叫数据库系统。

  5. 数据库应用系统

    • 定义:指为实现特定业务逻辑而开发的、基于数据库的应用程序。它为最终用户提供友好的图形用户界面(GUI),通过数据库语言或数据访问接口存取数据库中的数据。
    • 要点:强调“业务逻辑”的实现,对应于数据库系统总体结构中的“应用”部分。

    就是你的Java/Go/PHP项目。它实现业务逻辑(比如下单流程),给用户提供界面(网页或App)。

  6. 视图 (View)

    • 定义:视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图在数据库中并不以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。
    • 要点:本质是存储在数据字典中的SELECT语句。它可以看作是从一个或多个表中导出的表,是数据库的外模式。

    用户看到的数据。比如,HR专员只能看到员工姓名和部门,看不到工资。

  7. 数据字典 (DD, Data Dictionary)

    • 定义:DBMS中的一个特殊的文件或数据库,用于存储数据库自身的说明信息,即关于数据的数据,称为元数据(Meta Data)。
    • 内容:包括数据库中所有对象的定义信息(如表、视图、索引)、完整性约束、用户权限、物理存储信息等。
    • 要点:数据字典是DBMS工作的基础,对用户只读,由DBMS自动维护。

    DBMS自己用的“小本本”,记录了数据库里有哪些表、表里有什么字段、字段是什么类型、存在哪个文件里。你用SHOW TABLES查到的信息,就来自数据字典。

二、核心原理与特性

  1. DBMS的基本功能

    • 数据独立性:指应用程序不依赖于数据的逻辑表示与物理存储。分为逻辑独立性和物理独立性。
    • 安全性:通过访问控制等技术,保证数据不被非法访问和破坏。
    • 完整性:通过完整性约束机制,保证数据的正确性、有效性和相容性。
    • 并发控制:以多用户并发方式共享数据,并保证在这种环境下数据的一致性。
    • 故障恢复:系统发生故障时,有能力将数据库恢复到某个一致的状态。
  2. 数据库系统的三级模式结构

    • 外模式 (External Schema / 子模式 / 用户模式):是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图。通常是概念模式的逻辑子集。

    用户看到的数据。比如,HR专员只能看到员工姓名和部门,看不到工资。

    • 概念模式 (Conceptual Schema / 模式):是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。它描述的是数据的逻辑结构,而不涉及物理存储细节。

    全局的数据结构。是整个系统的表设计,描述了有哪些表和关系。

    • 内模式 (Internal Schema / 存储模式):是数据物理结构和存储方式的描述,是数据在数据库内部的表示方式。

    数据在硬盘上怎么存的?是索引文件还是堆表?

    • 映射:DBMS在三级模式之间提供了两层映射(外模式/概念模式映射、概念模式/内模式映射),这两层映射保证了数据库系统中的数据独立性。
  3. 数据独立性

    • 逻辑独立性:当概念模式(如增加新的实体、添加新的字段)改变时,由DBA对外模式/概念模式映射做相应改变,可以使外模式保持不变。从而建立在对应外模式上的应用程序也无需修改。

    概念模式变了(比如加了字段),外模式(用户的视图)可以不变,用户程序就不用改。

    • 物理独立性:当内模式(如存储结构、存取方式)改变时,由DBA对概念模式/内模式映射做相应改变,可以使概念模式保持不变。从而整个应用程序也无需修改。

    内模式变了(比如换了硬盘,改了存储格式),概念模式可以不变,应用程序就不用改。

    • 要点:物理独立性是物理设备升级或优化时不改程序的基础;逻辑独立性是数据库结构调整时不改程序的基础。

这就是为什么DBA可以给表加索引(改变物理存储)来提速,而你写的SELECT语句一个字都不用改。


三、数据抽象、模型与模式

  1. 数据抽象

    • 定义:是一种数据抽取的过程。通过不断的数据抽象,达到将现实系统中的数据存放到DBMS中的目的,也就是实现计算机化的数据管理。
    • 级别:包括视图级抽象、概念级抽象和物理级抽象。

    一个过程。把现实世界的东西(如一辆汽车)简化成计算机能理解的信息。

  2. 数据模型 (Data Model)

    一个工具。用什么方法来组织这些信息?是画E-R图,还是直接建表?

    • 定义:数据模型是数据库中用来对现实世界进行抽象、表示和处理的工具。它是对现实世界数据特征的抽象。
    • 三要素
      1. 数据结构:描述系统的静态特性,即组成数据库的对象以及对象之间的联系。它是数据模型的基础。

        数据长什么样?(比如关系模型里就是“表”)。

      2. 数据操作:描述系统的动态特性,即对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。

        能对数据做什么?(就是增删改查)。

      3. 数据约束:描述数据结构中数据间的语法和语义联系,以及数据动态变化的规则,以保证数据的正确、有效和相容。

        数据必须遵守什么规矩?(比如主键不能空,值不能重复)。

    • 分类
      • 概念数据模型:面向用户、面向现实世界,与具体的DBMS无关,用于信息世界的建模。如E-R模型。

        跟产品经理、业务方聊需求,用E-R图(实体关系图)这种“人话”画出来,让不懂技术的老板也能看懂,确认需求没错。

      • 逻辑数据模型:用户从数据库所看到的模型,是具体的DBMS支持的数据模型。如关系模型、层次模型、网状模型。

        把E-R图转换成MySQL能懂的“表”(关系模型)。

      • 物理数据模型:描述数据在存储介质上的组织结构,与具体的DBMS和操作系统有关。

        考虑性能,决定哪些字段建索引,用什么存储引擎(InnoDB还是MyISAM)。

  3. 数据模式 (Data Schema)

    • 定义:是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及型的描述,不涉及具体的值。模式是相对稳定的,而实例是相对变动的。模式是数据抽象的结果。
    • 关系:数据模型是数据抽象的工具,数据模式是数据抽象的结果。

    一个结果。最终得到的数据库结构,比如一张具体的表 Student(id, name)。

你要开发一个“学生管理系统”。首先,你得想清楚学生有哪些属性(抽象);然后,你可能会用E-R图(模型)来画学生和班级的关系;最后,你在数据库里敲下 CREATE TABLE 语句(模式),这就定下来了。

四、数据库语言与接口

  1. 数据库语言

    • 定义:DBMS提供给用户定义结构、操纵数据和管理DBMS的一个界面。
    • 组成
      • 数据定义语言 (DDL):用于定义数据库的三级模式结构和约束。如CREATEALTERDROP
      • 数据操纵语言 (DML):用于对数据库中的数据进行查询和更新(增、删、改)。如SELECTINSERTUPDATEDELETE
      • 数据控制语言 (DCL):用于定义数据库用户的访问权限和安全级别。如GRANTREVOKE
  2. SQL

    • 定义:结构化查询语言(Structured Query Language),是关系数据库的标准语言。
    • 使用方式
      • 交互式SQL:在终端或客户端工具中直接输入SQL命令执行。
      • 嵌入式SQL:将SQL语句嵌入到高级程序设计语言(如C、Java)中。
  3. ODBC/JDBC/OLE DB/ADO

    • 定义:都是数据库访问中间件,为应用程序提供统一、标准的数据库访问接口,以屏蔽不同数据库产品之间的差异,实现平台无关性和可移植性。
    • ODBC (开放数据库连接):微软提出的基于C语言的数据库访问API规范。
    • JDBC (Java数据库连接):Sun公司提出的基于Java语言的数据库访问API规范。
    • OLE DB:微软提出的基于COM的、系统级的、能访问关系和非关系数据源的编程接口。
    • ADO (ActiveX数据对象):基于OLE DB的、应用级的、易于使用的自动化接口。

五、用户与开发技术

  1. 数据库系统的用户

    • 最终用户:通过应用程序与数据库进行交互的业务人员。分为事务型用户和分析型用户。
    • 数据库应用开发人员:负责需求分析、系统设计、应用程序开发和数据库建立维护的人员。包括系统分析员和程序员。
    • 数据库管理员 (DBA):负责全面管理和维护数据库系统的专业人员。职责包括参与设计、定义数据模式、授权、监控性能、备份恢复等。
  2. C/S模式 (客户/服务器模式)

    • 定义:将应用一分为二,前端客户机负责GUI和部分业务逻辑,后端服务器负责数据管理和共享的计算模式。
    • 两层结构:客户端(表示逻辑+业务逻辑)+ 数据库服务器。
    • 三层结构:客户端(表示逻辑)+ 应用服务器(业务逻辑)+ 数据库服务器。
  3. B/S模式 (浏览器/服务器模式)

    • 定义:是Web兴起后的一种网络结构模式,客户端统一采用浏览器,通过Web服务器与应用服务器及数据库服务器交互。
    • 多层结构:浏览器 + Web服务器 + 应用服务器 + 数据库服务器。
    • 优点:客户端零安装、零维护,易于系统升级和扩展。
  4. OLTP vs. OLAP

    • OLTP (联机事务处理):主要面向日常业务处理,如银行交易、订单录入。特点:高并发、短事务、频繁更新、实时性要求高。
    • OLAP (联机分析处理):主要面向数据分析决策,如报表、数据挖掘。特点:查询复杂、数据量大、相对不频繁更新、响应时间要求相对宽松。

六、传统数据模型

  1. 层次数据模型

    • 数据结构:用树形结构表示实体及实体间的联系。有且仅有一个根结点,其他结点有且仅有一个双亲结点。
    • 数据操纵:导航式语言,查询需从根结点开始沿路径进行。
    • 典型代表:IBM的IMS。
  2. 网状数据模型

    • 数据结构:用有向图结构表示实体及实体间的联系。允许结点有多个双亲,允许结点间有多个联系,可直接表示多对多联系。
    • 数据操纵:导航式语言,比层次模型更灵活,但结构复杂。
    • 典型代表:DBTG系统(CODASYL系统)。
  3. 关系数据模型

    • 数据结构:用二维表表示实体及实体间的联系。
    • 数据操纵:非导航式的、集合操作,通过关系代数(如并、交、投影、选择、连接)进行操作。
    • 理论基础:严格的数学基础(关系代数、关系演算)。
    • 典型代表:Oracle、DB2、SQL Server、MySQL等。
本文采用 CC BY 4.0 许可协议,转载请注明出处。
使用 Hugo 构建
主题 StackJimmy 设计