数据库原理 设计 / 计算机三级 计算机四级 数据库
  1. 关系模型(关系数据模型)的“键(Keys)与完整性约束(Integrity Constraints)”
  • 主键/外键:对应实体完整性、参照完整性,偏“约束/实现/建表规则”。
  • 候选键/超键/备用键:偏“如何唯一标识元组(行)”,是理论基础。
  1. 函数依赖(Functional Dependency, FD)与规范化(范式 / Normalization)
  • 候选键、主属性等,是做范式判断时的“工具变量”。

超键 候选键 主键 外键

一张“包含关系”速记

  • 候选键 ⊂ 超键
  • 主键 = 选定的候选键
  • 外键 = 引用别表键的属性(可重复,可为空取决于约束)

E-R 图常见符号含义(以 Chen 记法为主)

  • 方形(矩形)实体(Entity)
    例:学生课程订单
  • 菱形联系/关系(Relationship)
    例:学生 — 选课 — 课程
  • 圆形(小圆圈/椭圆)属性(Attribute)
    例:实体 学生 的属性:学号姓名

数字表示什么(基数/多重度)

连在线条旁边的 1、N、M(或 0..1、1..、0..)表示基数(Cardinality)/多重度,说明“一个实体最多/最少能对应另一边多少个”。

常见写法:

  • 1:1:一对一
  • 1:N:一对多
  • M:N:多对多
  • 扩展写法:
    • 0..1:可选,最多 1 个
    • 1..*:至少 1 个,很多个
    • 0..*:可选,很多个

关系模式到ER图 和ER图到关系模式

各范式分别怎么用到“键”(对应关系)

1NF:几乎不靠“键”

  • 关注点:属性值是否原子(不可再分、无重复组)。
  • 与键关系:弱,主要是数据表示问题。

2NF:强依赖“候选键是否为联合键”

  • 定义要点:在 1NF 基础上,每个非主属性对每个候选键都“完全函数依赖”
  • 关键:出现违反 2NF 的条件通常是:
    • 存在联合候选键 AB
    • 有非主属性 C 只依赖 A 或 B(部分依赖)

所以:2NF = 处理“联合键的一部分决定了非主属性”

3NF:用到“超键 + 主属性/非主属性”

常用判定式(考试最常用):

对任意函数依赖 X → Y,若 X 不是超键,则 Y 必须是主属性(否则不满足 3NF)。

也可以理解为:消除传递依赖(非主属性依赖非主属性),但严格判题用上面的“超键/主属性”版本更稳。

BCNF:直接用到“超键/候选键”

判定式:

对任意非平凡函数依赖 X → YX 必须是超键。

也就是:只认“决定因素必须够资格当键”,比 3NF 更严格。


外键和范式:是什么关系?

  • 范式主要解决“表内属性依赖导致的冗余/异常”。
  • 外键主要解决“表间引用一致性”(参照完整性)。
  • 规范化分解后,常常会产生多张表,这时用外键把它们连接回去(实现层面保证一致性)。
    所以关系是:范式决定“拆不拆、怎么拆”;外键决定“拆完怎么关联、怎么保证一致”。

做范式题的标准流程(你可以照这个记)

  1. 写出(或从题目给的)函数依赖
  2. 求 候选键 → 推出 主属性集合
  3. 判 2NF(看部分依赖)→ 判 3NF(看 X 是否超键或 Y 是否主属性)→ 判 BCNF(看 X 是否超键)

数据库三级模式体系结构(外模式/模式/内模式)有利于什么?

核心:实现数据抽象与数据独立性,把用户视图、逻辑结构、物理存储分离,降低变更影响。

1)有利于实现数据独立性(最常考)

  • 物理数据独立性:修改内模式(存储结构、索引、文件组织、分区等)时,不影响模式/外模式,应用通常无需改。
  • 逻辑数据独立性:修改模式(加字段、拆表、调整关系等)时,通过外模式/视图与映射,尽量不影响应用程序

2)有利于多视图/多用户使用同一数据库

不同用户/部门可以有不同的外模式(视图),各取所需;同时共享同一逻辑模式与物理数据。

3)有利于安全性与权限控制

通过外模式(视图)可以隐藏敏感字段、限制可见范围,配合授权实现“最小权限”。

4)有利于维护与扩展

DBA 可在不影响用户的前提下优化存储与性能;也更容易演进数据库逻辑结构。

一句话背诵:三级模式=多级抽象 → 多视图 + 安全控制 +(逻辑/物理)数据独立性(最重要)

理解 重建视图能够实现数据的逻辑独立性

层次/网状模型 中,数据之间联系用 指针 实现

用 树型结构表示实体类型以及实体间联系的数据模型称为 层次模型

外模式 模式 内模式

  1. 外模式(External Schema / 用户模式):面向用户/应用的视图级描述,可有多个。
  2. 模式(Conceptual Schema / 概念模式、逻辑模式):全局逻辑结构的统一描述,通常只有一个。
  3. 内模式(Internal Schema / 存储模式):数据在物理存储层的组织方式描述,通常只有一个。

数据的物理独立性是指当数据的?改变时 通过系统内部的自动映像或转换功能,保持了数据的?不变 从而使应用程序不用修改 内模式 模式

对现实世界进行第一层抽象的模型称为? 对现实世界进行第二层抽象的模型称为?

  • 对现实世界进行第一层抽象的模型:概念模型(信息模型,常用 E-R 模型)
  • 对现实世界进行第二层抽象的模型:逻辑模型(数据模型,如关系模型/层次模型/网状模型)

数据库类型按照数据模型来划分 关系型 层次 网状 面向对象数据库等等

下述哪几条体现了数据库系统的特点?【 】 a、 数据冗余度小 b、数据结构化 c、数据面向应用程序 d、数据共享性高 e、数据独立性高 A、a d e B、b c d C、a b d e D、以上全是

选 C(a b d e)

  • a 数据冗余度小:是数据库系统特点
  • b 数据结构化:是数据库系统特点
  • c 数据面向应用程序:不是(这是文件系统特点;数据库是“数据面向全局/共享”,与应用相对独立)
  • d 数据共享性高:是数据库系统特点
  • e 数据独立性高:是数据库系统特点

.数据库三级模式体系结构的划分,有利于保持数据库的( )
A、数据独立性 B、数据安全性
C、结构规范化 D、操作可行性

6.在下列条目中,哪些是数据库管理员(DBA)的职责?(  )
Ⅰ. 负责管理企业组织的数据库资源
Ⅱ. 收集和确定有关用户的需求
Ⅲ. 设计和实现数据库并按需要修改和转换数据
Ⅳ. 为用户提供资料和培训方面的帮助

A、Ⅰ和Ⅱ B、Ⅰ,Ⅱ和Ⅲ C、Ⅲ和Ⅳ D、都是

7.在DBS中,DBMS和OS之间的关系是( )
A、并发运行 B、相互调用 C、OS调用DBMS D、DBMS调用OS

DBMS 作为应用/系统软件运行在操作系统之上,需要通过 OS 提供的服务完成文件/磁盘 I/O、内存管理、进程线程/并发与同步、网络通信等,因此是 DBMS 调用 OS

8.数据库系统的数据独立性体现在( )。
A、不会因为数据的变化而影响到应用程序
B、不会因为数据存储结构与数据逻辑结构的变化而影响应用程序
C、不会因为存储策略的变化而影响存储结构
D、不会因为某些存储结构的变化而影响其他的存储结构

8.数据库系统的数据独立性体现在( )。
A、不会因为数据的变化而影响到应用程序
B、不会因为数据存储结构与数据逻辑结构的变化而影响应用程序
C、不会因为存储策略的变化而影响存储结构
D、不会因为某些存储结构的变化而影响其他的存储结构

  • A 说“数据的变化不影响应用程序”不准确。应用程序本来就要处理数据内容变化(新增/修改记录),这不是“数据独立性”的含义。
  • B 正确概括了数据独立性:物理独立性(存储结构变化不影响逻辑结构/应用) + 逻辑独立性(逻辑结构变化尽量不影响外模式/应用)
  • C 描述方向不对,独立性讨论的是“上层不受下层影响”,不是“策略变化不影响结构”。
  • D 与数据独立性无关,更像存储内部结构之间的影响问题。

.在一个数据库系统的三级模式结构中,通常作为用户视图的模式级别是( )。
A、模式 B、外模式 C、内模式 D、关系模式

.学校中有若干系,每个系有若干班级和教研室,每个教研室有若干教师,
其中有的教授和副教授每个各带若干研究生,每个班有若干学生,每个学
生选修若干课程,每门课程可由若干学生选修。请用E-R图画出此学校的
概念模型。

对于每个关系 有且仅有一个主键 但是主键属性可以不只一个

一般来说单主键自动满足第二范式 2NF

当然 主键双属性也能满足第二NF甚至3NF

而看是不是满足3NF 就得看这个表里面除了主键的列 有没有传递依赖

比如我主键是uid 但是有列名pid pname 这显然乱套了

例题 3:属于 3NF,但不属于 BCNF

教师授课关系 R(TNO, TNAME, CNO, CNAME),其中 TNO 为教师号,TNAME 为教师姓名,CNO 为课程号,CNAME 为课程名,主键为 (TNO, CNO)。且已知 TNO → TNAME,CNO → CNAME。则关系 R 属于( )

选项: A. 3NF
B. BCNF
C. 2NF
D. 1NF


✅ 解析:

  • 主键:(TNO, CNO)
  • 非主属性:TNAME, CNAME

1. 1NF?✅ 是

2. 2NF?✅ 是(TNAME 依赖 TNO,CNAME 依赖 CNO —— 但它们都是主键的一部分 → 完全依赖)

3. 3NF?

函数依赖:

  • TNO → TNAME
  • CNO → CNAME
  • (TNO, CNO) → TNAME, CNAME

→ 所有非主属性都直接依赖主键或主键的一部分 → 无传递依赖 → ✅ 满足 3NF

一、终极记忆口诀(4句搞定1~4NF)

🔹 1NF 看原子 —— 列不能分
🔹 2NF 防部分 —— 主键要全靠
🔹 3NF 避传递 —— 非主别连非主
🔹 BCNF 更严格 —— 左边必须是超键
🔹 4NF 消多值 —— 一个属性别管太多事

口诀解释:

范式口诀记忆点
1NF“看原子 —— 列不能分”所有列都是“最小单位”,比如“姓名”不能拆成“姓+名”(除非你真要拆)
2NF“防部分 —— 主键要全靠”如果主键是复合的,非主属性必须依赖整个主键,不能只依赖一部分
3NF“避传递 —— 非主别连非主”A → B → C,如果A是主键,B和C是非主属性 → C传递依赖于A → 违规!
BCNF“更严格 —— 左边必须是超键”所有函数依赖 X→Y 中,X 必须是“超键”(能唯一标识元组)
4NF“消多值 —— 一个属性别管太多事”多值依赖:比如一个员工可以有多个项目、多个技能 → 要拆表!

🧩 二、场景联想记忆法(用生活例子记住每个范式)

✅ 1NF:原子性 → “快递单不能写‘张三李四’”

  • 例子:学生表里“姓名”字段不能存“张三,李四” → 必须拆成两行或两个字段
  • 记忆:“一个格子只能放一个东西”

✅ 2NF:完全依赖 → “选课表不能只靠课程号定成绩”

  • 例子:R(SNO, CNO, CNAME, GRADE),主键是(SNO,CNO)
    → CNAME 只依赖 CNO → 部分依赖 → 违反 2NF
  • 记忆:“主键是夫妻俩,非主属性必须同时爱两个人,不能只爱其中一个!”

✅ 3NF:无传递依赖 → “院长不能由学院号决定,而学院号由学生号决定”

  • 例子:SNO → DNO → MAG → MAG 传递依赖于 SNO → 违反 3NF
  • 记忆:“不要当传话筒!非主属性不能通过另一个非主属性间接依赖主键”

✅ BCNF:超键约束 → “老师名字只能由老师号决定,不能由课程号决定”

  • 例子:R(TNO, TNAME, CNO, CNAME),TNO → TNAME,但 TNO 不是超键 → 违反 BCNF
  • 记忆:“所有依赖的左边,必须是‘身份证号’级别的唯一标识”

✅ 4NF:多值依赖 → “一个员工不能既管项目又管技能,得分开”

  • 例子:R(ENO, PNO, SKILL),ENO →→ PNO 且 ENO →→ SKILL → 违反 4NF
  • 记忆:“一个人不能同时负责多件事,得拆成多个小表!”

SQL

SQL 语句体系
├── DQL: SELECT → 查询
│ ├── WHERE / LIKE / IN / BETWEEN / IS NULL
│ ├── ORDER BY / DISTINCT / GROUP BY / HAVING
│ ├── JOIN / 子查询 / UNION
│ └── LIMIT / CASE / 窗口函数
├── DML: INSERT / UPDATE / DELETE / TRUNCATE
├── DDL: CREATE / ALTER / DROP / INDEX / VIEW
├── DCL: GRANT / REVOKE / FLUSH PRIVILEGES
├── TCL: BEGIN / COMMIT / ROLLBACK / SET autocommit
└── 其他: DESCRIBE / SHOW / USE / VERSION / 变量 / 注释

事务 ACID

A 原子性:要么全做,要么全不做; atomicity

C 一致性:数据始终合法、符合规则; consistency
I 隔离性:并发操作互不干扰; isolation
D 持久性:提交后永不丢失。
durability

✅【应试标准答法 · 数据库设计基本步骤】(得分点明确 · 便于记忆)

数据库设计分五步走,环环相扣、逐步求精:

  1. 需求分析阶段 —— 摸清业务要什么 → 输出:需求文档、数据字典、数据流图
  2. 概念设计阶段 —— 画E-R图建模型 → 输出:全局概念模型(实体-关系图)
  3. 逻辑设计阶段 —— 转关系模型 + 规范化 → 输出:满足BCNF/3NF的逻辑结构
  4. 物理设计阶段 —— 选存储+索引+路径 → 输出:物理结构、存取策略、性能预估
  5. 实施与维护阶段 —— 建库+装数+测试+运维 → 输出:可运行系统 + 持续优化机制

📌 记住口诀:“需概逻物实” —— 需求→概念→逻辑→物理→实施维护,缺一不可!

本技术内容仅供学习和交流使用,如有疑问请联系qq2014160588并注明来意。请确保在使用过程中遵守相关法律法规。任何因使用本技术内容而导致的直接或间接损失,作者概不负责。用户需自行承担因使用本技术内容而产生的所有风险和责任。请勿将本技术内容用于任何非法用途。
上一篇