当前位置: 首页 > news >正文

数据库系统概论(四)关系模型的数据结构及形象化

数据库系统概论(四)关系模型的数据结构及形象化

  • 前言
  • 一、关系:数据组织的基本单元
      • 1. 核心概念解析
      • 2. 关系模式的三种类型
  • 二、关系模式:数据完整性的保障
      • 1. 关键术语解析
      • 2. 关系模式的约束
  • 三、关系模型的形象化示例
  • 总结(核心概念速记):


前言

  • 在先前对数据库系统的探索旅程中,我们逐步积累了大量关于关系模型的数据结构、数据模型等基础概念和知识,这些宝贵的知识储备为我们进一步深入研究数据库系统奠定了坚实的基础。
  • 今天我们开始讲关系模型的数据结构及形象化
  • 这部分内容对于理解数据库中数据的组织形式、数据之间的关联以及如何高效地进行数据操作至关重要。关系模型以其独特的方式将现实世界中的各种信息转化为计算机能够处理和存储的形式,通过严谨的定义和规则,保障了数据的完整性和一致性。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的数据库系统概论专栏
https://blog.csdn.net/2402_83322742/category_12911520.html?spm=1001.2014.3001.5482


一、关系:数据组织的基本单元

在关系模型中,数据是按照一定的方式组织起来的,而关系就是数据组织的基本单元。下面我们来详细看看其中的一些关键概念。
在这里插入图片描述

1. 核心概念解析

  • 域(Domain)
    想象一下,我们在做学生信息管理的时候,学生表中有一个“性别”字段,这个字段的值只能是“男”或者“女”,那么{男, 女}这一组值就构成了“性别”域。再比如“年龄”字段,它的值可能是{18, 19, 20, ...}这样的一组值,这就是“年龄”域。简单来说,域就是一组具有相同数据类型的值的集合。

  • 笛卡尔积(Cartesian Product)
    假设我们有两个集合,一个是学生的集合,里面有{张三, 李四}这两个学生;另一个是课程的集合,里面有{数学, 语文}这两门课程。笛卡尔积就是把这两个集合中的元素进行所有可能的组合。就像把学生和课程搭配起来一样,得到的结果就是{(张三, 数学), (张三, 语文), (李四, 数学), (李四, 语文)}。也就是说,笛卡尔积是两个或多个域的所有可能组合。

  • 元组(Tuple)
    在上面得到的笛卡尔积结果中,(张三, 数学)这样的一个具体组合,就叫做一个元组。在数据库的表中,元组就对应着表中的一行数据。比如在学生选课的情况中,(张三, 数学)就表示张三选修了数学课程。

  • 分量(Component)
    对于元组(张三, 数学),“张三”和“数学”分别是这个元组中的一个值,它们就被称为分量。也就是说,元组中的每一个值就是一个分量。

  • 基数(Cardinality)
    基数其实就是指元组的数量,也就是表中的记录数。比如说,我们有一个学生选课表,如果里面有100条记录,那就表示这个表的基数是100。
    在这里插入图片描述

2. 关系模式的三种类型

关系模式描述了关系的结构,就像是给关系画了一个框架,通常分为以下三类:

  1. 实体关系模式
    它主要是用来描述单一实体的属性集合。比如我们描述学生这个实体,就可以写成学生(学号, 姓名, 年龄),这里“学号”“姓名”“年龄”都是学生这个实体所具有的属性。

  2. 联系关系模式
    当我们要描述实体之间的关联时,就会用到联系关系模式。比如学生和课程之间有选课的关系,我们可以写成选课(学号, 课程号, 成绩),通过“学号”可以知道是哪个学生选的课,“课程号”表示选的是哪门课,“成绩”则记录了这门课的考试成绩。

  3. 属性关系模式
    有时候,一个属性可能比较复杂,需要进一步分解。比如“地址”这个属性,我们可以把它分解成地址(省, 市, 区),这样就把“地址”这个复杂属性分解为了多个子属性,更方便管理和使用。


二、关系模式:数据完整性的保障

关系模式不仅定义了数据的结构,还对数据的完整性提供了保障。下面我们来看看其中的一些关键术语和约束。

1. 关键术语解析

  • 候选码(Candidate Key)
    在一个表中,有些属性或者属性组能够唯一地标识每一个元组。比如说在学生表中,“学号”是每个学生唯一的编号,通过“学号”可以准确地找到对应的学生,所以“学号”就是一个候选码。同样,“身份证号”对于每个学生来说也是唯一的,它也可以作为候选码。

  • 主码(Primary Key)
    由于一个表可能有多个候选码,我们需要从这些候选码中选择一个作为唯一标识,这个被选中的候选码就叫做主码。比如在学生表中,我们选择“学号”作为主码,这样就可以通过“学号”来唯一地确定每一个学生。

  • 主属性(Prime Attribute)
    包含在候选码中的属性就被称为主属性。在学生表中,“学号”和“身份证号”都包含在候选码中,所以它们都是主属性。

  • 属性(Attribute)
    属性其实就是关系中的列,它对应着域的名称。比如在学生表中,“姓名”“年龄”这些列就是属性,它们分别对应着不同的域。

2. 关系模式的约束

  • 实体完整性
    实体完整性要求主码的值不能为空。这是为什么呢?因为主码是用来唯一标识元组的,如果主码为空,就无法准确地确定一个元组了。比如在学生表中,“学号”作为主码,必须要填写,否则就不知道这个记录对应的是哪个学生了。

  • 参照完整性
    参照完整性是为了保证表与表之间的关联是有效的。比如我们有学生表和选课表,选课表中的“学号”是外码,它必须引用学生表中已经存在的“学号”。也就是说,选课表中的学生必须是学生表中已经存在的学生,这样才能保证选课信息是准确的。


三、关系模型的形象化示例

为了让大家更好地理解关系模型,我们假设设计一个“学生-课程”数据库,这个数据库包含以下几个关系:

  1. 学生表(Student)
    学号(主码)姓名年龄
    S001张三18
    S002李四19

在这个学生表中,“学号”是主码,通过“学号”可以唯一地确定每一个学生,“姓名”记录了学生的名字,“年龄”则记录了学生的年龄。

  1. 课程表(Course)
    课程号(主码)课程名学分
    C001数学4
    C002语文3

课程表中,“课程号”是主码,通过“课程号”可以确定每一门课程,“课程名”告诉我们这门课叫什么,“学分”则表示这门课的学分是多少。

  1. 选课表(SC)
    学号(外码)课程号(外码)成绩
    S001C00190
    S002C00285

选课表中,“学号”是外码,它引用了学生表中的“学号”,“课程号”是外码,它引用了课程表中的“课程号”,“成绩”则记录了学生选这门课的考试成绩。

关系操作示例
假设我们想要查询选修数学的学生,我们可以使用SQL语句来实现:SELECT 姓名 FROM Student WHERE 学号 IN (SELECT 学号 FROM SC WHERE 课程号 = 'C001')

这条语句的意思是,先在选课表(SC)中找到课程号为“C001”(也就是数学课程)的所有学生的学号,然后在学生表(Student)中根据这些学号找到对应的学生姓名,这样就能得到选修数学的学生名单了。


总结(核心概念速记):

核心概念速记
关系模型 = 数据库数据组织与完整性保障的重要模式

  • 基本单元:
    • 关系由域、笛卡尔积、元组、分量、基数等概念构成。域是相同数据类型值的集合;笛卡尔积是域的所有可能组合;元组是笛卡尔积中的具体组合,对应表中一行;分量是元组中的值;基数是元组数量即记录数。
    • 关系模式分实体关系模式(描述单一实体属性)、联系关系模式(描述实体关联)、属性关系模式(分解复杂属性)。
  • 关键术语:
    • 候选码:能唯一标识元组的属性或属性组,如学生表中“学号”“身份证号”。
    • 主码:从候选码中选的唯一标识,如选“学号”作主码。
    • 主属性:包含在候选码中的属性,如“学号”“身份证号”。
    • 属性:关系中的列,对应域的名称,如“姓名”“年龄”。
  • 完整性约束:
    • 实体完整性:主码值不能为空,确保能唯一确定元组。
    • 参照完整性:保证表间关联有效,如选课表“学号”外码引用学生表“学号”。
  • 形象化示例:
    • “学生-课程”数据库:学生表(学号主码,有姓名、年龄)、课程表(课程号主码,有课程名、学分)、选课表(学号和课程号为外码,有成绩)。
    • 关系操作示例:用SQL查询选修数学学生,先在选课表找数学课程的学号,再在学生表找对应姓名。

关系模型关键概念对比

概念定义描述示例作用
相同数据类型值集合“性别”域{男, 女}确定属性取值范围
笛卡尔积域的所有可能组合学生和课程集合组合产生元组基础
元组笛卡尔积具体组合(张三, 数学)表中一行数据
分量元组中的值“张三”“数学”构成元组元素
基数元组数量即记录数学生选课表100条记录反映表数据量
候选码唯一标识元组属性或组“学号”“身份证号”确定元组唯一性
主码从候选码选的唯一标识“学号”作为表的唯一标识
主属性包含在候选码中的属性“学号”“身份证号”与元组唯一性相关
属性关系中的列对应域名称“姓名”“年龄”描述数据特征

关系模型与完整性约束关系图解

关系模型 —— 数据结构(关系及相关概念)
   ↓         ↓
实体完整性 —— 主码值不能为空,确保元组唯一
   ↓         ↓
参照完整性 —— 表间关联有效,外码引用正确

知识图谱

数据库系统概论(四)关系模型的数据结构及形象化
├─ 关系:数据组织基本单元
│  ├─ 核心概念:域、笛卡尔积、元组、分量、基数
│  ├─ 关系模式类型:实体、联系、属性关系模式
│  └─ 示例:如学生实体关系模式(学号, 姓名, 年龄)
├─ 关系模式:数据完整性保障
│  ├─ 关键术语:候选码、主码、主属性、属性
│  ├─ 完整性约束:实体完整性、参照完整性
│  └─ 示例:学生表主码“学号”不能为空等
├─ 关系模型形象化示例
│  ├─ 数据库设计:学生表、课程表、选课表
│  ├─ 表结构:各表主码、外码及属性
│  ├─ 关系操作:SQL查询选修数学学生
│  └─ 示例意义:直观理解关系模型及操作
└─ 核心要点
   ├─ 关系模型数据组织和完整性的重要性
   └─ 结合示例掌握关系模型相关概念和操作

以上就是这篇博客的全部内容,下一篇我们将继续探索更多精彩内容。

我的个人主页,欢迎来阅读我的其他文章
https://blog.csdn.net/2402_83322742?spm=1011.2415.3001.5343
我的数据库系统概论专栏
https://blog.csdn.net/2402_83322742/category_12911520.html?spm=1001.2014.3001.5482

非常感谢您的阅读,喜欢的话记得三连哦

在这里插入图片描述

相关文章:

  • 【eNSP实战】交换机配置端口隔离
  • 软件IIC和硬件IIC的主要区别,用标准库举例!
  • wpf label 内容绑定界面不显示
  • MVCC实现原理
  • 【JavaWeb学习Day24】
  • 基于python下载ERA5小时尺度和月尺度的数据
  • 【Java开发指南 | 第三十四篇】IDEA没有Java Enterprise——解决方法
  • [从零开始学习JAVA] 新版本idea的数据库图形化界面
  • JVM RuntimeDataArea 成分
  • libwebsockets实现异步websocket客户端,服务端异常断开可重连
  • LangChain教程 - Agent -之 ZERO_SHOT_REACT_DESCRIPTION
  • Aliyun CTF 2025 web ezoj
  • 云原生容器编排:Kubernetes的架构演进与实践
  • python中time模块的常用方法及应用
  • 蓝桥杯2024年第十五届省赛真题-成绩统计
  • 深入探索 Rust 的高级 Traits
  • Unity使用UGUI制作无限滑动列表
  • BambuStudio学习笔记:Model
  • postgresql 15.2 用pgbackup搭建备库后,主从复制一直无法启动
  • 从0到1入门Docker
  • 上海一保租房社区亮相,首批546套房源可拎包入住
  • 郑钦文憾负高芙,止步WTA1000罗马站四强
  • 押井守在30年前创造的虚拟世界何以比当下更超前?
  • 中方发布会:中美经贸高层会谈氛围是坦诚的、深入的、具有建设性的
  • 金地集团:今年前4个月实现销售额109.3亿元,同比下降52.44%
  • “仓促、有限”,美英公布贸易协议框架,两国分别获得了什么?