系统架构设计师备考第30天——关系数据库

一、 关系数据库基本概念

1. 关系模型组成
  • 关系数据结构:用二维表表示实体及联系。
  • 关系操作集合:包括查询(选择、投影、连接等)和更新(插入、删除、修改)。
  • 关系完整性规则:实体完整性、参照完整性、用户定义完整性。
2. 核心术语
术语 定义 示例
属性(Attribute) 描述实体的特征 学生表的"学号""姓名""性别"
域(Domain) 属性的取值范围,需满足原子性(第一范式要求) 学号域:6位整数;性别域:{男, 女}
候选码(Candidate Key) 能唯一标识元组的属性或属性组 学生表的"学号"
主码(Primary Key) 从候选码中选定的唯一标识符 选课表的复合主码(学号+课程号)
外码(Foreign Key) 本关系非主码,但为其他关系的主码 选课表的"学号"参照学生表的主码
全码(All-key) 所有属性组合才能唯一标识元组 教学关系R(T教师, C课程, S学生)需全码区分
3. 关系的数学基础
  • 笛卡尔积
    设 ( D_1, D_2, \ldots, D_n ) 为域,笛卡尔积为:
    ( D_1 \times D_2 \times \cdots \times D_n = { (d_1, d_2, \ldots, d_n) \mid d_i \in D_i } )
    • 每个元素为 n元组,如 (学号, 课程号, 成绩)。
    • 基数计算:若域 ( D_i ) 基数为 ( m_i ),则总元组数为 ( \prod_{i=1}^n m_i ).

二、 关系运算

1. 关系代数
  • 传统集合运算 (需并相容性):

    • 并(Union)交(Intersection)差(Difference)笛卡尔积(Cartesian Product)
  • 专门关系运算

    运算 符号 功能 示例
    选择(σ) σ 按条件筛选行 σ_{年龄>20}(学生)
    投影(π) π 选取指定列 π_{姓名, 系别}(学生)
    连接(⋈) 组合两表相关元组 学生 ⋈_{学号} 选课
    除(÷) ÷ 查找"全部满足"条件的元组 选课 ÷ π_{课程号}(课程) → 选所有课的学生
2. 关系演算
  • 元组关系演算:以元组为变量,如 ( { t \mid t \in 学生 \land t.年龄 > 20 } )。
  • 域关系演算:以域变量为对象,如 ( { (x,y) \mid \exists z (学生(x,y,z) \land z > 20) } ).

三、关系数据库设计基本理论

1. 函数依赖(Functional Dependency, FD)
  • 定义 :若关系R中任意两元组在属性集X上相等,则在Y上也相等,则称 X → Y
    • 非平凡依赖:Y ⊄ X(常见讨论对象)。
    • 完全依赖:X → Y,且X的任意真子集不能决定Y(记作 ( X \stackrel{f}{\rightarrow} Y ))。
    • 部分依赖:X → Y,但存在真子集X' → Y(记作 ( X \stackrel{p}{\rightarrow} Y ))。
    • 传递依赖:X → Y, Y → Z,且Y ⊄ X, Z ⊄ Y(记作 ( X \stackrel{t}{\rightarrow} Z ))。

示例

  • 选课表SC(学号, 课程号, 成绩):
    • (学号, 课程号) → 成绩(完全依赖,单属性无法决定成绩)。
    • 若存在"学号 → 系别",则为部分依赖(违反2NF)。
2. 范式(Normalization)
范式 要求 问题解决
1NF 属性值不可再分(原子性) 消除嵌套结构(如集合、数组)
2NF 满足1NF,且非主属性完全依赖候选码(消除部分依赖) 减少数据冗余(如学号→系别拆分)
3NF 满足2NF,且非主属性不传递依赖候选码(消除传递依赖) 避免更新异常(如系名→系主任)
BCNF 满足3NF,且主属性不部分/传递依赖候选码(所有决定因素含候选码) 强化主属性约束
3. 设计目标
  • 减少冗余:避免数据重复存储(如学生系别存储多次)。
  • 保证一致性:通过完整性约束(如外键参照)维护数据逻辑正确性。
  • 优化性能:平衡范式级别与查询效率(高范式可能增加连接操作)。

典型考点与考题

  1. 概念辨析
    :若关系R(教师, 课程, 学生)中,一个教师可教多门课,一门课可由多个教师教,学生可选不同教师的课,则R的候选码是?
    :全码(All-key),需所有属性组合才能唯一标识元组。

  2. 函数依赖分析
    :关系R(A,B,C,D),FD={A→B, B→C, D→B},求候选码。
    :候选码为AD(A→B→C,D→B,故AD可决定所有属性)。

  3. 范式判断
    :学生表(学号, 姓名, 系名, 系主任)是否满足3NF?
    :不满足(学号→系名→系主任,存在传递依赖)。

  4. 完整性约束
    :外码取值规则是什么?
    :要么为空(未分配),要么等于被参照关系的主码值(如员工表的"部门号"需参照部门表的主码)。


总结 :关系数据库理论是数据库设计的基石,重点掌握术语定义运算规则函数依赖与范式,并通过实例理解完整性约束的应用。设计时需权衡范式等级与实际性能需求,避免过度规范化导致的复杂查询。

相关推荐
!chen30 分钟前
数据库主从有延迟怎么处理
数据库·adb
SelectDB技术团队32 分钟前
Apache Doris 多云原生实践:SaaS、BYOC 与四大公有云覆盖
数据库·阿里云·云原生·华为云·腾讯云·亚马逊云·写入更新
云飞云共享云桌面3 小时前
医疗器械设备研发:多人同时操作 SolidWorks,怎样依靠单台服务器替代多工作站
运维·服务器·网络·数据库·制造
知行合一。。。8 小时前
RAG--03--Milvus基本用法
数据库·oracle·milvus
TDengine (老段)8 小时前
TDengine 线程模型 — 网络、调度、执行
大数据·数据库·物联网·制造·时序数据库·tdengine·涛思数据
上学的小垃圾9 小时前
01-数据库系统概述
数据库
二进制漫游记10 小时前
FastAPI项目集成 Qdrant向量数据库+阿里云Embedding完整实战(工具封装+业务调用)
数据库·python·阿里云·embedding
2501_9289962210 小时前
GPT-4o换DeepSeek迁移成本多少?中科热备解析API聚合平台技术账本
前端·数据库·人工智能
泡干脆面就番茄12 小时前
MySQL_子查询_分页查询与联合查询详解
数据库·mysql
devpotato13 小时前
缓存与数据库更新顺序不一致问题
java·数据库·redis