📚【关系数据模型·深度复盘】15道经典题逐题拆解!

前言:别再自己啃教材啦!这是关系数据库的核心考点合集,涵盖术语、操作、完整性、代数查询…
本文每题独立成块,带✅答案 + 💡解析 + 记忆技巧,适合打印/收藏/考前突击!
👇 开始刷题吧!


🔹 第1题:解释以下术语:关系、元组、属性、码、域、分量、关系模式。

✅ 答案

  • 关系(Relation):即二维表,由行和列组成,如 Student 表。

  • 元组(Tuple):表中的一行,代表一条记录,如 (“S001”, “张三”, “计算机”)。

  • 属性(Attribute):表中的一列,代表数据的特征,如“姓名”、“学号”。

  • 码(Key):能唯一标识一个元组的属性或属性组,如“学号”是主码。

  • 域(Domain):属性的取值范围,如“性别”的域是 {男, 女}。

  • 分量(Component):元组中某个属性的具体值,如“张三”是“姓名”属性的分量。

  • 关系模式(Relation Schema):关系的结构描述,如 Student(学号, 姓名, 专业名)。

💡 记忆口诀
“关元属码域分模,表行列键范围值结构!”
→ 关系=表,元组=行,属性=列,码=主键,域=取值范围,分量=具体值,模式=结构定义。


🔹 第2题:说明关系数据模型的3个方面的含义。

✅ 答案

关系数据模型包含三个核心方面:

  1. 数据结构 → 用二维表组织数据(最直观!)

  2. 数据操作 → 支持关系代数(选择、投影、连接等)和SQL语句

  3. 完整性约束 → 包括实体完整性、参照完整性、用户定义完整性

💡 类比理解
就像盖房子:

  • 结构 = 钢筋混凝土框架(二维表)

  • 操作 = 装修、搬家具(增删改查)

  • 约束 = 建筑规范(不能歪、不能塌)


🔹 第3题:解释关系数据库的“型”和“值”的含义。

✅ 答案

  • “型”(Type / Schema):指关系的结构定义,即有哪些属性、类型是什么。
    例:Student(学号:char(10), 姓名:varchar(20), 年龄:int)

  • “值”(Value / Instance):指某一时刻关系中实际存储的数据内容
    例:("S001", "张三", 20), ("S002", "李四", 21)

💡 一句话区分
“型”是模板,“值”是填进去的内容;“型”不变,“值”常变。


🔹 第4题:解释空值的含义。

✅ 答案

空值(NULL) 表示“未知”、“不存在”或“不适用”的值,**不是0,也不是空字符串""**!

⚠️ 注意:

  • NULL ≠ 0 (数字零)

  • NULL ≠ "" (空字符串)

  • NULL 与任何值比较都为 UNKNOWN(三值逻辑)

📌 应用场景:
学生表中“备注”字段为空 → 表示暂无备注,而非“无此字段”。


🔹 第5题:候选码应满足哪两个性质?

✅ 答案

候选码必须满足:

  1. 唯一性(Uniqueness):该属性组的值在关系中唯一标识每一个元组,不能有重复。

  2. 最小性(Minimality):该属性组中任意去掉一个属性后,就不再具有唯一性

💡 举例:
若 (A,B) 是候选码,则 A 单独不能唯一标识,B 单独也不能,但合起来可以 → 满足最小性。


🔹 第6题:关系操作的特点是什么?关系数据模型的基本操作包括哪些内容?

✅ 答案

特点:

  • 集合操作方式:一次操作作用于多个元组(非单条记录)

  • 操作对象和结果都是关系(封闭性)

  • 基于数学理论(集合论、谓词逻辑),严谨可推导

基本操作(5种):

  1. 选择(σ) → 按条件筛选行

  2. 投影(π) → 按条件筛选列

  3. 并(∪) → 合并两个相容关系

  4. 差(−) → 从一个关系中减去另一个

  5. 笛卡尔积(×) → 所有组合

💡 补充:交、连接、除是衍生操作,可由基本操作组合得到。


🔹 第7题:关系代数的运算主要包含哪些内容?

✅ 答案

关系代数运算分为两大类:

一、传统集合运算(需相容关系):

  • 并(∪)、差(−)、交(∩)、笛卡尔积(×)

二、专门关系运算:

  • 选择(σ)、投影(π)、连接(⋈)、除(÷)

💡 图解记忆:

        关系代数
       /         \
   集合运算     专门运算
  / | \          / | \
 ∪ − ×        σ π ⋈ ÷

🔹 第8题:关系代数的选择运算和投影运算的含义是什么?各有什么特点?

✅ 答案

选择运算(σ):

  • 含义:从关系中选出满足给定条件的元组(行)

  • 符号:σ_条件(R)

  • 特点:水平分割,不改变属性个数,只减少行数

投影运算(π):

  • 含义:从关系中选出指定的属性(列)

  • 符号:π_属性列表(R)

  • 特点:垂直分割,可能减少列数,自动去重(因为关系是集合)

💡 对比表格:

运算

操作方向

是否去重

示例

选择 σ

行过滤

σ_年龄>20(Student)

投影 π

列提取

π_姓名,年龄(Student)


🔹 第9题:两个关系进行并、交、差、连接的运算要求是什么?

✅ 答案

并、交、差(集合运算):

→ 要求两个关系相容

  • 属性个数相同

  • 对应属性来自同一域(类型兼容)

连接(⋈):

→ 不要求相容,但通常基于公共属性指定条件进行匹配
→ 自然连接要求有同名属性且值相等

💡 重要提醒:
并/交/差是“横向合并”,连接是“纵向拼接”!


🔹 第10题:两个关系进行自然连接的要求是什么?等值连接与自然连接有什么区别和联系?

✅ 答案

自然连接要求:

  • 两个关系必须有同名属性

  • 自动在这些同名属性上做等值比较

  • 结果中去除重复列

等值连接 vs 自然连接:

特性

等值连接

自然连接

条件

显式指定 A=B

隐式同名属性相等

列处理

保留所有列(含重复)

自动去重列

灵活性

更灵活(可跨不同名属性)

更简洁(依赖同名)

💡 联系:自然连接是等值连接的特例 + 去重优化!


🔹 第11题:解释内连接和外连接的含义,并分别举例说明。

✅ 答案

内连接(Inner Join):

  • 只返回两边都有匹配的行

  • 例:Student ⋈ SC → 只显示选了课的学生

外连接(Outer Join):

  • 返回一边或两边所有行, unmatched 部分补 NULL

  • 分类:

    • 左外连接(LEFT JOIN)→ 保留左表所有行

    • 右外连接(RIGHT JOIN)→ 保留右表所有行

    • 全外连接(FULL JOIN)→ 保留所有行

💡 举例:

-- 左外连接:即使没选课,也显示学生信息
SELECT S.姓名, C.课程名 
FROM Student S LEFT JOIN SC ON S.学号=SC.学号

🔹 第12题:说明数据完整性及其实现方法,试述3类关系数据完整性规则的含义。

✅ 答案

数据完整性:

指数据的正确性、一致性、有效性,防止非法数据进入数据库。

三类完整性规则:

  1. 实体完整性(Entity Integrity)
    → 主码不能为 NULL,且唯一
    → 实现:PRIMARY KEY 约束

  2. 参照完整性(Referential Integrity)
    → 外码要么为 NULL,要么引用存在的主码值
    → 实现:FOREIGN KEY + ON DELETE CASCADE/SET NULL

  3. 用户定义完整性(User-defined Integrity)
    → 用户自定义的业务规则(如年龄≥0,性别∈{男,女})
    → 实现:CHECK 约束、触发器、应用程序控制

💡 总结:
“实参用” → 实体、参照、用户定义,层层把关保数据质量!


🔹 第13题:有如下学生成绩数据库:

Student(学号, 姓名, 专业名, 性别, 出生时间, 总学分, 备注)
Course(课程号, 课程名, 开课学期, 学时, 学分)
StuCourse(学号, 课程号, 成绩)

试用关系代数表示如下查询:

(1) 求专业名为“计算机科学与技术”的学生学号与姓名;

✅ 答案

π_学号,姓名 (σ_专业名='计算机科学与技术' (Student))

(2) 求开课学期为“2”的课程号与课程名;

✅ 答案

π_课程号,课程名 (σ_开课学期='2' (Course))

(3) 求修读“计算机基础”的学生姓名。

✅ 答案

π_姓名 (Student ⋈ StuCourse ⋈ σ_课程名='计算机基础'(Course))

或分步写:

T1 ← σ_课程名='计算机基础'(Course)
T2 ← T1 ⋈ StuCourse
T3 ← T2 ⋈ Student
Result ← π_姓名(T3)

💡 提示:多表连接时注意连接顺序和属性名冲突!


🔹 第14题:简要说明关系演算表达查询的特点。

✅ 答案

关系演算是一种声明式查询语言,特点是:

  1. 非过程化:只需说明“要什么”,不用管“怎么找”

  2. 基于谓词逻辑:使用存在量词(∃)、全称量词(∀)表达条件

  3. 两种形式

    • 元组关系演算(TRC):变量代表元组

    • 域关系演算(DRC):变量代表属性值

  4. 表达能力强:等价于关系代数,但更接近自然语言

💡 对比:
关系代数 = “怎么做”(操作步骤)
关系演算 = “要什么”(目标描述)


🔹 第15题:元组关系演算与域关系演算的区别是什么?

✅ 答案

对比项

元组关系演算(TRC)

域关系演算(DRC)

变量类型

元组变量(t ∈ R)

域变量(x ∈ Dom(A))

表达方式

{ t

P(t) }

适用场景

更适合复杂嵌套查询

更适合简单属性级查询

示例

{ t

Student(t) ∧ t.专业='CS' }

💡 核心区别:
TRC 操作的是“整行”,DRC 操作的是“每个格子”。


🎯 结语:搞定这15题,关系模型不再怕!

你已经完成了对《关系数据模型》核心知识点的系统复盘!🎉
无论是概念辨析、代数运算还是完整性约束,现在都能胸有成竹应对考试!

📌 下一步建议

  • 把本文打印出来,每天看一遍

  • 自己动手画关系代数表达式

  • 尝试用 SQL 实现这些查询


Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐