【数据库技术】关系模型基本概念(关系/属性/元组/键)

考点频率 :★★★★★(数据库基础必考,选择题常考键的分类与辨析)

难度 :⭐⭐

建议:重点掌握关系模型的五大核心概念,区分候选键、主键、外键、全键,理解外键的参照完整性约束

1️⃣ 关系模型的核心概念

关系模型用二维表 来表示数据及其之间的联系,这是目前最主流的数据库模型。在关系模型中,有一组核心术语需要掌握。这些术语是后续学习关系代数、SQL、范式的基础。

我们先通过一个"学生选课"的例子来建立直观印象:

学号(主键) 姓名 性别 年龄 课程号(外键) 成绩
2024001 张三 20 C001 85
2024002 李丽 19 C001 92
2024003 王五 21 C002 78
2024001 张三 20 C002 88

对应关系术语

  • 关系(Relation) ------ 整张表(学生选课表)
  • 元组(Tuple) ------ 每一行(如第一行:2024001, 张三, 男, 20, C001, 85)
  • 属性(Attribute) ------ 每一列(学号、姓名、性别等)
  • 主键(Primary Key) ------ 学号 + 课程号(联合主键,因为一个学生可以选多门课,一门课可以被多个学生选)
  • 外键(Foreign Key) ------ 课程号(关联到课程表的主键)

这个例子会在全文中反复引用,请先熟悉它。

2️⃣ 关系(Relation)

定义 :关系是二维表,是关系模型中最基本的数据结构。表中的每一行是一个元组,每一列是一个属性。

关系的性质(软考常考):

性质 说明
属性不可再分 每个属性都是原子的,不可再分(这是关系模型最基本的要求------1NF)
元组不重复 表中没有完全相同的两行
属性无序 列的次序可以交换,不影响关系
元组无序 行的次序可以交换,不影响关系
同一属性的域相同 某一列的所有数据都来自同一个域(如"年龄"列都是整数)

"属性不可再分"是关系模型最基本的要求,这一点在后续学习规范化理论时会反复出现。

3️⃣ 属性(Attribute)

定义 :属性是关系中的一列,用于描述元组的某个特征。每个属性都有一个取值范围,称为域(Domain)

示例:上表中的"姓名"列就是一个属性,它的域是所有合法姓名的集合。

是属性的取值范围,比如"性别"的域是{男, 女},"年龄"的域是0-150的整数。不同属性可以有相同的域(如"出生地"和"籍贯"都可以使用"城市名称"域)。

属性 vs 域

  • 域是一个集合(取值范围)
  • 属性是域在某个关系中的具体应用

4️⃣ 元组(Tuple)

定义:元组是关系中的一行,是属性值的集合。它表示一个实体的一条完整记录。

示例(2024001, 张三, 男, 20, C001, 85) 是一个元组。

5️⃣ 键(Key)

键是关系模型中最核心、最容易混淆的概念。不同类型键的区分,是软考的高频考点。

5.1 候选键(Candidate Key)

定义 :能够唯一标识一个元组的属性(或属性组合)。一个关系可能有多个候选键。

关键条件

  • 唯一性:不同的元组在该属性(或属性组合)上的值一定不同
  • 最小性:不能再删除任何一个属性而保持唯一性(即"最小超键")

示例 :假设学生表有 学号身份证号 两个属性,都能唯一标识一个学生,且都不能再删减(单个属性本身就是最小的),则它们都是候选键。一个关系可以有多个候选键,其中一个被选为主键,其余的就是备用键(Alternate Key)。

5.2 主键(Primary Key)

定义 :从候选键中选出一个作为主键,用于唯一标识关系中的每个元组。

主键的选取原则

  • 选择最稳定的属性(值不会频繁变化)------比如身份证号比姓名更稳定
  • 选择最简单的属性(能单列就别用组合)------比如学号比(姓名+出生日期)简单
  • 选择无意义的属性(避免业务含义变化导致主键需要修改)------推荐使用无意义的自增ID作为主键

示例 :在学生表中,如果候选键有 学号身份证号,通常选 学号 作为主键(更短、更稳定)。在上面的选课表中,学号课程号 单独都无法唯一标识一行(因为一个学生选多门课,一门课被多个学生选),所以主键是 (学号, 课程号) 的组合。

5.3 外键(Foreign Key)

定义 :一个关系中的属性(或属性组合),它是另一个关系的主键 。外键用于建立两个关系之间的连接

外键与参照完整性 :外键的取值要么为NULL(表示暂无关联),要么必须等于被参照关系中某个元组的主键值。这就是参照完整性约束

示例 :选课表中的 学号 是学生表的主键,在选课表中就是外键;课程号 是课程表的主键,在选课表中也是外键。选课表通过这两个外键"连接"到学生表和课程表。学号课程号 的组合(联合主键)确保了同一学生不会重复选同一门课。

5.4 全键(All-Key)

定义 :关系中的所有属性一起构成主键。换句话说,没有单独的属性或属性组合能唯一标识元组,必须所有属性共同参与。

示例 :选课表中的 (学号, 课程号) 只是两个属性,如果再加一个 学期 属性,可能(学号+课程号+学期)才是主键------但这仍然不叫全键,因为不是"所有属性"。全键的典型例子是:一个表记录"学生A在2024年秋季学期选了课程B",属性只有 (学号, 课程号, 学期),所有属性加起来才能唯一标识一条选课记录,缺一不可------这就是全键。

6️⃣ 五种键的概念对比

键类型 定义 是否唯一 是否可空 数量
候选键(Candidate Key) 能唯一标识元组的属性(或属性组合),满足唯一性和最小性 ✅ 是 ❌ 否 可以多个
主键(Primary Key) 从候选键中选出的一个 ✅ 是 ❌ 否 唯一一个
备用键(Alternate Key) 候选键中未被选为主键的键 ✅ 是 ❌ 否 可以多个
外键(Foreign Key) 另一个关系的主键 ❌ 否 ✅ 可为NULL 可以多个
全键(All-Key) 关系中的所有属性共同构成主键 ✅ 是 ❌ 否 唯一一个

7️⃣ 经典例题

例题1:在关系数据库中,能够唯一标识一个元组的属性或属性组合称为( )。

A. 外键

B. 主键

C. 候选键

D. 全键

解析 :候选键是能够唯一标识元组的属性或属性组合,主键是候选键中被选中作为主键的那一个。题目问的是"能够唯一标识",这是候选键的定义。选 C


例题2:下列关于外键的叙述中,正确的是( )。

A. 外键必须是另一个关系的主键

B. 外键的值可以取NULL

C. 外键的值可以取任意值

D. 一个关系中只能有一个外键

解析 :A不完整------外键是另一个关系的候选键 (通常就是主键);B正确------外键允许NULL;C错误------外键的值必须参照另一个关系中的主键值;D错误------一个关系可以有多个外键。选 B


例题3(判断):如果一个关系中的所有属性共同构成主键,则该主键称为全键。( )

解析:正确。全键是关系中的所有属性共同构成主键,缺任何一个属性都无法唯一标识元组。

8️⃣ 记忆口诀

关系就是一张表,一行元组一列属性。

候选键能唯一标,主键选中做代表。

外键连接两关系,参照完整性别忘了。

全键所有属性合,缺一不可来标识。

9️⃣ 小测验(评论区对答案)

某关系R有属性A、B、C、D,已知(A, B)可以唯一标识元组,且(A, B)是最小的键。则(A, B)是( )。

A. 外键

B. 候选键

C. 全键

D. 超键

🔔 本专栏日更,点击头像 → 专栏《软考中级高频考点》订阅,第一时间接收新内容

#软考中级 #软件设计师 #关系模型 #主键 #外键 #候选键 #数据库技术基础 #软考备考

相关推荐
Mr数据杨2 小时前
【Codex】用学生入学评估模块建立新生能力画像
android·java·javascript·django·codex·项目开发
普马萨特2 小时前
实体与位置关系的数据从哪里来:获取、治理与仍待解决的问题
网络·数据库
2601_962056232 小时前
Spring Boot 入门 与 无法解析符号 springframework 的解决
java·spring boot·后端
醉颜凉2 小时前
MySQL 8 忘记 root 密码?这两种方法帮你轻松解决
数据库·mysql·adb
有梦想的骇客3 小时前
PyTorch学习笔记
pytorch·笔记·学习
Thomas21433 小时前
Java scala 数组 链表
java·链表·scala
亚历克斯神3 小时前
低代码与 AI 的融合趋势——从可视化搭建到自然语言生成应用
java·spring·微服务
RestCloud3 小时前
集成链路监控体系搭建:接口调用、数据流转与异常告警全覆盖
数据库·数据安全·ipaas·api管理·数据监控·集成平台·api 治理
Capricorn19883 小时前
个人知识库接入大模型频现“幻觉引用”?排查 RAG 溯源失效问题,解析知芽构建可信第三大脑的底层架构
大数据·论文阅读·人工智能·笔记·架构·论文笔记