跳至内容

数据库概述

这篇梳理数据库的基础理论:数据与信息、数据库系统的特点、数据模型、E-R 模型,以及关系模式规范化(范式)。这些是动手写 SQL 之前需要建立的概念基础。

常见数据库产品

产品厂商 / 平台
Access微软,桌面级
MS-SQL(SQL Server)微软平台
MySQL开源,跨平台
DB2IBM
Oracle主要运行于 Unix / Linux

数据库能做什么

  • 存储大量数据,方便检索和访问。
  • 保持数据信息的一致、完整。
  • 支持共享与安全控制。
  • 通过组合分析,产生新的有用信息。

数据管理基本概念

  • 数据:描述事物的符号记录(数字、文字、图形、图像、声音等)。
  • 信息:能够通过文字、图像、声音、符号、数据等为人类获知的知识。
  • 数据管理:对数据的分类、组织、编码、存储、查询和维护。
  • 数据处理:对数据进行加工、将数据转换成信息的过程。

数据管理的发展经历了三个阶段:人工管理 → 文件系统 → 数据库系统

数据库系统的特点

  1. 数据结构化:用特定的数据模型表示事物以及事物之间的联系。
  2. 数据共享性高:减少数据冗余,减少更新异常。
  3. 数据独立性强:程序和数据相对独立。
  4. 数据粒度小:粒度单位是记录中的数据项,粒度越小处理越快、越方便。
  5. 独立的数据操作界面:通过命令或界面(菜单、工具栏、对话框)访问和处理数据。
  6. 统一管理和控制:数据定义、操纵和控制由数据库管理系统(DBMS)统一管理。

数据模型

常见的数据库模型有三种:

  • 层次模型:树形结构,一对多。
  • 网状模型:图状结构,多对多。
  • 关系模型:二维表结构,是目前的主流(SQL Server、MySQL、Oracle 都属此类)。

数据库基本术语

数据库就是"数据"的"仓库",由表、关系以及操作对象组成:

  • 数据存放在中。
  • 表由记录(行)组成,一个记录就是一个实体对象。
  • 记录由字段(列)组成,每一列都是一个属性描述。
  • 字段由字符或数字等组成。
不可用多行或多列来描述同一个记录或字段:一行就是一条记录、一列就是一个字段,二者一一对应。

DBMS 与数据库系统

**DBMS(DataBase Manager System,数据库管理系统)**是执行数据库管理任务所需的软件,必须基于计算机操作系统才能安装和运行。

一个完整的数据库系统通常由以下部分组成:数据库、数据库管理系统、应用系统、数据库管理员和用户。其中相关人员包括:

  • 最终用户
  • 应用程序员
  • 数据库管理员(DBA)

E-R 模型

**E-R 模型(Entity-Relationship,实体-联系模型)**由 P.P.S. Chen 于 1976 年提出,用 E-R 图表示实体及其联系,是概念模型的一种,广泛用于数据库设计。

绘制 E-R 图的图形元素:

图形含义
长方形框实体集(考虑问题的对象)
菱形框联系(实体集间的联系)
椭圆形框实体集和联系的属性
直线连接相关的联系与实体,可标注联系的种类(1:1、1:n、m:n)

E-R 图设计原则:

  • 真实性:实体集和属性应反映客观现实。
  • 避免冗余:任何事物只表达一次,否则浪费空间且易出错。
  • 简单性:避免引入过多元素,尽量简单明了。
  • 合理选择元素类型

E-R 图是设计数据库的指导思想,主要体现表与表之间的逻辑联系。

关系模式的规范化

关系数据库的设计主要是关系模式设计,其好坏直接影响数据库设计的成败。把关系模式规范化,是得到较好关系模式的途径。规范化的关系模式称为关系范式

未规范化数据库的缺点:数据冗余大、一致性差、修改复杂,插入/删除/更新时会产生异常。规范化后则尽量去除冗余、保持一致、修改简单、消除异常,表一般也比较小。

范式核心要求
第一范式(1NF)每个属性都是不可再分的单一属性。记作 R∈1NF
第二范式(2NF)在 1NF 基础上,每个非主属性都完全依赖于主码,消除部分依赖
第三范式(3NF)在 2NF 基础上,非主属性不传递依赖于主码(消除 关键字→非关键字 x→非关键字 y 的链)
第四范式(4NF)消除主键列与非主键列之间不受约束的一对多关系(多值依赖)
第五范式(5NF)将表分割成尽可能小的块,排除所有冗余(连接依赖)
完全依赖指不存在仅依赖主关键字一部分的属性;若存在,应把该属性和主关键字的这一部分分离出来形成新实体,新实体与原实体之间是一对多关系。范式是设计关系数据库的指导思想,主要体现在表与属性之间。

其他基础术语

  • SQL(Structured Query Language,结构化查询语言):用于定义和查询数据库的语言。
  • DBA(DataBase Administrator):数据库管理员。
最后更新于