系统架构设计师备考第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. 完整性约束
    :外码取值规则是什么?
    :要么为空(未分配),要么等于被参照关系的主码值(如员工表的"部门号"需参照部门表的主码)。


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

相关推荐
w***95495 分钟前
mysql之如何获知版本
数据库·mysql
火星数据-Tina13 分钟前
如何构建一个支持多终端同步的体育比分网站?
大数据·前端·数据库·websocket
BD_Marathon14 分钟前
SpringMVC——5种类型参数传递
android·java·数据库
计算机毕设VX:Fegn089528 分钟前
计算机毕业设计|基于springboot + vue律师咨询系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
冰冰菜的扣jio41 分钟前
入门redis——让你的查询快到起飞
数据库·redis·缓存
drebander43 分钟前
MyBatis-Plus saveBatch 在异步线程中事务未提交问题排查与修复
数据库·mybatis
论迹1 小时前
【Redis】-- key的过期策略
数据库·redis·缓存
weixin199701080161 小时前
废旧物资 item_search - 按关键字搜索商品列表接口对接全攻略:从入门到精通
数据库·python
l1t1 小时前
快速加载CSV文件到数据库的工具pg_csv_loader
数据库·算法
无忧智库1 小时前
深度拆解:某大型医院“十五五”智慧医院建设方案,如何冲刺互联互通五级乙等?(附技术架构与实施路径)
java·数据库·架构