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

数据库基础概念体系梳理

数据库基础概念体系梳理

一、数据库技术的发展阶段

数据库技术的演进围绕数据管理效率的提升展开,主要分为三个核心阶段:

  1. 人工管理阶段:无专门数据管理软件,数据与程序紧密绑定,无法共享,数据冗余度极高,仅适用于早期简单计算场景。

  2. 文件系统阶段:以文件为单位存储数据,由操作系统管理文件,数据可独立于程序存在,但文件间缺乏关联,数据一致性难以保障,且检索效率低。

  3. 数据库系统阶段:引入数据库管理系统(DBMS),通过结构化方式组织数据,支持多用户共享、数据一致性约束和高效检索,是当前主流的数据管理模式。

二、数据库核心概念体系

数据库的常见概念可围绕数据存储结构核心组件关键技术与规则三大维度展开,清晰理解这些概念是掌握数据库应用的基础。

(一)数据存储结构:从低到高的组织形式

这一层级描述了数据在数据库中如何被有序组织和管理,从最小单元到整体集合,形成清晰的层级关系:

  1. 数据项(字段):数据库中最小的数据单位,用于描述实体的某个属性。例如 “用户表” 中的 “用户名”“年龄”“手机号”,每个字段都有明确的数据类型(如字符串、整数)。

  2. 记录(行 / 元组):由多个相关数据项组成,对应现实中的一个具体实体。例如一条包含 “张三、25、138xxxx1234” 的用户信息,就是一条记录,每条记录在表中占据一行。

  3. 表(关系):由同一类型的记录组成的集合,是关系型数据库的核心存储结构。每个表有固定的列(字段)和可变的行(记录),表结构需提前定义(如字段名、数据类型、约束条件),例如 “用户表”“订单表”。

  4. 数据库(DB):多个相关表的集合,用于存储某一领域的全部数据。例如 “电商数据库” 可能包含用户表、商品表、订单表、支付表等,各表通过关联字段(如用户 ID)形成数据闭环。

(二)核心组件:支撑数据库运行的关键部分

这些组件负责数据库的创建、管理、访问和维护,是数据库系统的 “骨架”,确保系统稳定运行:

  1. 数据库管理系统(DBMS):用于管理数据库的软件,是用户与数据库之间的交互接口。其核心功能包括数据定义、数据操纵、数据查询、数据控制(如权限管理),常见的 DBMS 有 MySQL(开源)、Oracle(企业级)、SQL Server(微软生态)等。

  2. 数据库系统(DBS):由数据库(DB)、数据库管理系统(DBMS)、数据库管理员(DBA)、支持数据库的硬件和软件(应用开发工具、应用系统、操作系统等)组成的完整系统。例如 “电商平台的数据库系统”,包含了商品 / 订单数据、MySQL 软件、DBA 维护团队、购物 APP 和消费者终端。

  3. 实体与实体集:实体是现实世界中可被描述的事物(如 “用户”“商品”“订单”),具有唯一标识(如用户 ID);实体集是同一类实体的集合(如所有用户构成 “用户实体集”,所有商品构成 “商品实体集”)。

  4. 索引(补充概念):一种优化数据检索效率的数据结构,基于表中的一个或多个字段构建,可快速定位符合条件的记录,避免全表扫描。常见索引类型有主键索引(唯一且非空)、普通索引、唯一索引、联合索引等,但过多索引会降低数据插入 / 更新效率。

(三)关键技术与规则:保障数据有效与安全

这些技术和规则用于确保数据的准确性、完整性、一致性和可访问性,是数据库高效运行的 “保障”。

1. 数据模型:数据库设计的框架

数据模型是描述数据结构、数据关系和数据约束的框架,决定了数据库的组织方式,主流模型有三种:

模型类型结构特点适用场景代表案例
层次模型树形结构,每个节点只有一个父节点父子关系明确的场景(如组织架构、家谱)早期 IBM IMS 数据库
网状模型图结构,节点可关联多个父 / 子节点复杂多对多关系场景(如工程设计)早期 CODASYL 数据库
关系模型以表为核心,通过主键、外键建立表间关系绝大多数业务场景(如电商、金融、社交)MySQL、Oracle、SQL Server

数据模型的三要素

  • 数据结构:描述数据的类型、组织方式(如表、字段);

  • 数据操作:定义对数据的操作(如查询、插入、更新、删除);

  • 数据完整性约束:确保数据正确、一致的规则(如主键唯一、外键关联有效)。

2. 表间关联与约束:确保数据一致性
  • 主键(PK,Primary Key):表中唯一标识一条记录的字段,不能重复且不能为空。一个表只能有一个主键(可由多个字段组成复合主键),例如 “用户表” 中的 “用户 ID”,用于区分不同用户。

  • 外键(FK,Foreign Key):表中用于关联其他表主键的字段,作用是建立表间关系,保证数据一致性(如 “订单表” 中的 “用户 ID” 关联 “用户表” 的主键,确保订单必须归属已存在的用户)。

  • 数据完整性约束(补充概念):

    • 实体完整性:主键字段值唯一且非空(如 “用户 ID” 不能重复或为空);

    • 参照完整性:外键必须关联其他表的有效主键(如 “订单表” 的 “用户 ID” 不能指向 “用户表” 中不存在的 ID);

    • 用户定义完整性:根据业务需求自定义的约束(如 “年龄” 字段值需在 0-150 之间、“手机号” 需符合 11 位数字格式)。

3. SQL 语言:与数据库交互的工具

SQL(Structured Query Language,结构化查询语言)是用于与数据库交互的标准语言,实现数据的查询、插入、更新和删除,按功能分为三类核心子语言:

  • DQL(数据查询语言):用于查询数据,核心命令SELECT(如SELECT * FROM 用户表 WHERE 年龄>20);

  • DML(数据操纵语言):用于修改数据,核心命令INSERT(插入)、UPDATE(更新)、DELETE(删除);

  • DDL(数据定义语言):用于定义数据库对象,核心命令CREATE(创建表 / 库)、ALTER(修改表结构)、DROP(删除表 / 库);

  • DCL(数据控制语言):用于权限管理,核心命令GRANT(授予权限)、REVOKE(回收权限)。

4. 关系数据库的规范化:减少数据冗余

数据库规范化(Normalization)是通过拆分表结构,消除数据冗余和异常(插入异常、更新异常、删除异常)的过程,用 “范式(NF,Normal Form)” 衡量规范化程度,常用范式如下:

(1)第一范式(1NF):原子性

核心规则:消除重复字段,表中所有字段的值必须是 “原子的”(不可再分割的最小数据单元)。

反例:“用户表” 中 “联系方式” 字段存储 “138xxxx1234, zhangsan@xxx.com”,包含电话和邮箱两个信息,可分割,不满足 1NF;

正例:拆分为 “手机号” 和 “邮箱” 两个独立字段,每个字段只存储单一类型数据,满足 1NF。

说明:1NF 是关系型数据库的基础,不满足 1NF 的数据库不是关系型数据库。

(2)第二范式(2NF):消除部分依赖

核心前提:满足 1NF,且表中有主键(或复合主键),确保每个记录可唯一区分;

核心规则:所有非主键字段必须完全依赖于主键(或复合主键的全部字段),不能只依赖复合主键的某一个字段(消除 “部分依赖”)。

反例1:员工工资信息表中,员工编码和岗位组成组合关键字(即复合主键),不满足2NF。

(员工编码+岗位)->(决定)(姓名、年龄、学历、基本工资、绩效工资、奖金)

上述关系可以进一步拆分为:

(员工编码)—>(决定)(姓名、年龄、学历)
(岗位)->(决定)(基本工资)

正例1:上述可以改为

员工信息表:EMPLOYEE(员工编码、姓名、学历、年龄)
岗位工资表:QUARTERS(岗位、基本工资)
员工工资表:PAY(员工编码、岗位、绩效工资、奖金)

反例2:设计 “订单详情表”,用 “订单 ID + 商品 ID” 作为复合主键,同时包含 “订单日期” 字段。“订单日期” 只依赖 “订单 ID”(一个订单对应一个日期),不依赖 “商品 ID”,存在部分依赖,不满足 2NF。

正例2:拆分表结构,将 “订单日期” 移到 “订单表”(主键为 “订单 ID”),“订单详情表” 只保留 “订单 ID + 商品 ID”“商品数量”“商品单价” 等完全依赖复合主键的字段,满足 2NF。

订单表(订单ID、订单日期)--主键:订单ID
订单详情表(订单ID+商品ID、商品数量、商品单价)——复合主键:订单ID+I商品D
(3)第三范式(3NF):消除传递依赖

核心前提:满足 2NF;

核心规则:所有非主键字段不能通过其他非主键字段间接依赖于主键(消除 “传递依赖”)。

反例:设计 “订单表”,主键为 “订单 ID”,包含 “用户 ID”“用户名”“用户地址” 字段。“用户名”“用户地址” 依赖 “用户 ID”,而 “用户 ID” 依赖 “订单 ID”,形成 “订单 ID→用户 ID→用户名” 的传递依赖,不满足 3NF。

订单表(订单ID、用户ID、用户名、用户地址)
订单ID->用户ID->用户名

正例:拆分表结构,“订单表” 只保留 “订单 ID”“用户 ID”“订单日期” 等字段;将 “用户名”“用户地址” 移到 “用户表”(主键为 “用户 ID”),通过 “用户 ID” 关联两张表,消除传递依赖,满足 3NF。

订单表(订单ID、用户ID、订单日期)
用户表(用户ID、用户名、用户地址)

实际设计中,满足 3NF 已能解决大部分问题,更高阶范式多用于复杂场景。

(4)高阶范式(适用于复杂场景)
  • BCNF(巴斯 - 科德范式):3NF 的强化版,要求在 3NF 基础上,消除主键字段对其他主键字段的依赖(适用于复合主键场景,如 “学生选课表” 用 “学生 ID + 课程 ID” 作主键,“教师” 字段需依赖整个复合主键,而非仅 “课程 ID”);

  • 4NF(第四范式):在 BCNF 基础上,消除表中的 “多值依赖”(即一个字段的多个值对应另一个字段的多个值,且无直接关联,如 “用户表” 中 “用户 ID” 对应多个 “手机号” 和 “邮箱”,需拆分为 “用户 - 手机号表”“用户 - 邮箱表”)。

5. 实体关系:业务逻辑的映射

现实中实体间的关系需映射到数据库表结构,核心关系有三种:

  • 一对一关系:两个实体间一一对应(如 “用户” 与 “用户身份证信息”,一个用户对应一个身份证,一个身份证归属一个用户);表设计时可将两个实体合并为一张表,或用主键关联(一方主键作为另一方外键,且外键唯一)。

  • 一对多关系:一个实体的一条记录对应另一个实体的多条记录(如 “用户” 与 “订单”,一个用户可创建多个订单,一个订单归属一个用户);表设计时在 “多” 的一方添加 “一” 的一方的主键作为外键(如 “订单表” 添加 “用户 ID” 外键)。

  • 多对多关系:两个实体间互相对应多条记录(如 “学生” 与 “课程”,一个学生可选多门课程,一门课程可被多个学生选择);表设计时需创建 “中间表”(如 “学生选课表”),存储两个实体的主键作为复合主键,实现关联。

三、数据库的三级模式与两级映射:保障数据独立性

数据库通过 “三级模式” 划分数据抽象层级,通过 “两级映射” 隔离层级变化,确保数据的逻辑独立性和物理独立性,是数据库系统的核心架构设计。

(一)三级模式:数据的三个抽象层级

  1. 模式(逻辑模式 / 概念模式)

定义:它是数据库中全体数据的逻辑结构和特征的描述,也是所有用户的公共数据视图。
(如 “电商数据库” 中用户表、订单表的结构定义,以及表间关联关系);

特点一个数据库只有一个模式,处于三级模式的中间层,连接外模式和内模式。

  1. 外模式(用户模式)

定义:它是数据库用户(包括应用程序员、最终用户)能够看到和使用的局部数据的逻辑结构和特征的描述,也是数据库用户的数据视图。
(如 “订单管理模块” 仅需访问 “订单表” 的 “订单 ID”“用户 ID”“订单金额” 字段,无需访问 “用户地址” 等无关字段);

特点:外模式是模式的子集,一个模式可对应多个外模式,通过外模式限制用户访问范围,保障数据安全。

  1. 内模式(存储模式)

定义:数据物理结构和存储方式的描述,即数据在数据库内部的存储形式(如数据以 B + 树结构存储、字段的压缩方式、索引的存储位置);

特点一个数据库只有一个内模式,直接与硬件存储交互,隐藏物理存储细节。

	内 --------------------->外内模式------->模式----->外模式(一个)----(一个)----(多个)

(二)两级映射:保障数据独立性

两级映射用于建立不同模式间的关联,隔离层级变化,确保上层应用不受底层结构修改的影响:

  1. 外模式 / 模式映射

定义:一个模式可以有任意多个外模式。外模式 / 模式映射定义了每个外模式与模式之间的对应关系。
(如 “订单管理模块” 的外模式如何关联 “订单表” 的模式);

作用:当模式发生改变(如 “订单表” 增加 “物流单号” 字段),DBA 可修改该映射,使外模式保持不变,上层应用无需修改,保障数据的逻辑独立性

  1. 模式 / 内模式映射

定义:数据库中只有一个模式和一个内模式,因此模式 / 内模式映射是唯一的,它定义了数据库的全局逻辑结构和存储结构之间的对应关系。(如 “订单表” 的逻辑结构如何对应物理存储结构);

作用:当内模式发生改变(如更换存储设备、修改数据存储引擎),DBA 可修改该映射,使模式保持不变,进而外模式和应用程序不受影响,保障数据的物理独立性

简单来说,这两种映射的核心作用就是通过隔离不同层级的变化,分别保障数据的逻辑独立性和物理独立性,让数据库结构的修改不会轻易影响到上层的应用程序。

http://www.dtcms.com/a/503837.html

相关文章:

  • Kotlin Flow 的使用
  • 网站如何做seo上海网站推广方法
  • Qwen2.5技术报告解读:Qwen2.5 Technical Report
  • 操作系统:进程同步问题(一)
  • Linux---终端 I/O 控制接口开发<termios.h>终端输入输出系统
  • Linux 之 【Linux权限】
  • 网站建设策划书范文案例重庆百度关键词推广
  • 健身器材 网站模版wordpress用户系统
  • 两款实用工具分享:下载与网速测试的轻量级解决方案
  • DVWA靶场实战:Web四大经典漏洞攻防全解析
  • 海外网站测速本地网站建设开发信息大全
  • PowerCat命令操作:PowerShell版的Netcat在渗透测试中的应用
  • 域名注册最好的网站南京设计公司前十名
  • 快速定位源码问题:SourceMap的生成/使用/文件格式与历史
  • 湖南移动官网网站建设wordpress 菜单 分隔
  • 邯郸网站建设服务报价全国住房和城乡建设厅官网
  • leetcode 143 重排链表
  • 元宇宙与职业教育的深度融合:重构技能培养的实践与未来
  • 坪山网站建设哪家便宜帝国cms 网站地图 自定义
  • 双拼输入法:提升打字效率的另一种选择
  • 如何做论坛网站 知乎整套网页模板
  • XSS平台xssplatform搭建
  • SQL入门(structured query language)
  • SAP SD客户主数据查询接口分享
  • RedPlayer 视频播放器在 HarmonyOS 应用中的实践
  • 网站怎么做彩页wordpress 微信打赏
  • Altium Designer创建一个空白工程
  • SciPy 稀疏矩阵
  • 上海网站制作维护南京网站建设索q.479185700
  • 运用API开放接口获取淘宝商品价格信息,对比全网价格