数据库原理与应用 第 2 章 · 第一节
课程第 2 章第一节 章首主要内容笛卡尔积基数相乘食堂点餐姓名×性别二维表形式和数据库的关系关系的定义什么是关系几点说明
第 2 章 关系数据库 · 第一节

域、笛卡尔积与关系

从取值范围到所有可能的搭配,再挑出有意义的那部分
本 节 知 识 点
  1. 01第 2 章 关系数据库
  2. 02本章主要内容
  3. 03
  4. 04笛卡尔积的定义
  5. 05笛卡尔积的基数
  6. 06笛卡尔积:所有可能的搭配
  7. 07姓名域与性别域的笛卡尔积
  8. 08笛卡尔积的二维表形式
  9. 09笛卡尔积和数据库有什么关系
  10. 10关系的定义
  11. 11什么是关系:把所有可能变成有意义的表
  12. 12关系的几点说明
01
第 2 章 · 第一节

第 2 章 关系数据库

这一章给“表”下一个严格的定义,再讲怎样描述一张表,以及怎样保证表里的数据是对的。

第 1 页课件

知道更多本章分五节

课件的三个板块拆成五节。2.1 关系的形式化定义及性质分成两节,先从域搭到关系,再讲关系头、关系体和五条性质。2.2 关系模式单独一节,2.3 关系的码和关系的完整性分成两节,先讲候选码、主码、外码,再讲三类完整性。

知道更多为什么要形式化

第 1 章说关系模型建立在严格的数学概念之上,这一章就是那套概念。定义 2.1 到定义 2.7 一共七条,每一条都在说表的某一个部分:域说一列能取什么值,笛卡尔积和关系说表是怎样搭出来的,关系模式说表怎么描述,码和完整性说表里的数据靠什么管住。

想一想

一张 Excel 表要满足什么条件,才配叫“关系”?

02
第 2 章 · 第一节

本章主要内容

三个板块回答三个问题:表在数学上是什么,怎样描述一张表,表里的数据靠什么保证是对的。

第 2 页课件

重 点三个板块的关系

2.1 从域出发一步步搭出关系,相当于讲砖和墙。2.2 的关系模式是表的说明书,相当于讲图纸。2.3 的码是认出一行的依据,完整性是三条必须遵守的规矩,相当于讲验收标准。考试最常考的是候选码的判断和三类完整性的归类,分别在第四节和第五节。

打个比方

第 1 章第 46 页说关系是一张规范化的二维表,表名、表头、表体三部分。这一章把三个部分各自换成数学的说法:表头是关系头,表体是关系体,整张表是笛卡尔积的一个子集。

想一想

“码”这个字,你猜是指什么?

03
第 2 章 · 第一节

域是一组类型相同的值的集合,域里值的个数叫基数。

第 3 页课件

关键术语

Domain
一组具有相同数据类型的值的集合,也叫值域,记作 D。
基数Cardinality
域里包含的值的个数,记作 m。

重 点定义 2.1 的两个要点

“相同数据类型”是说一个域里的值必须是同一种东西,整数和姓名不能混在一个域里。三个例子都来自第 1 章表 1-1 的教师关系 t:D1 是姓名一列出现过的六个名字,D2 是性别一列的男和女,D3 是年龄一列的六个数。基数就是数一数域里有几个不同的值。

打个比方

点单时辣度只能选微辣、中辣、特辣,这三个值就是辣度的域,基数是 3。填“很辣”会被退回,因为它不在域里。

想一想

“星期几”这个域,基数是多少?

04
第 2 章 · 第一节

笛卡尔积的定义

笛卡尔积是从每个域各取一个值拼成有序组,所有拼法合起来的集合。

第 4 页课件

关键术语

元组Tuple
笛卡尔积里的一个元素,n 个分量按顺序排成的一组,也叫 n 元组。
分量Component
元组里的一个值,第 i 个分量来自第 i 个域。

重 点把定义 2.2 的式子读成人话

花括号表示这是一个集合。竖线左边写的是集合里的元素长什么样,是一个 n 位的小括号。竖线右边是条件,第 i 位的值必须来自第 i 个域。元组是有序的,(1,2,3) 和 (2,3,1) 是不同的元组,因为第一位有第一位的含义,位置换了含义就换了。

打个比方

穿衣搭配:上衣域、裤子域、鞋域各选一件,一套搭配是一个元组,上衣是这个元组的一个分量。顺序有意义,因为上衣就穿在上面,不能和鞋换位置。

想一想

两个域各有 3 个值,它们的笛卡尔积里有几个元组?

05
第 2 章 · 第一节

笛卡尔积的基数

笛卡尔积的基数等于各个域基数的乘积,姓名 6 个乘性别 2 个等于 12 个元组。

第 5 页课件

重 点为什么是相乘

第一个位置有 m1 种选法,第一位不管选什么,第二个位置都有 m2 种选法,所以两位合起来是 m1 乘 m2 种,往后每加一个域再乘一次。12 个元组里有一半在现实里并不存在,比如 (刘杨,女),笛卡尔积只负责列出全部可能,不负责判断真假,这正是下面几页要讲的事。

练一练

三个域的基数分别是 4、2、3,它们的笛卡尔积的基数是多少?
  1. A9
  2. B24
  3. C12
  4. D6
答案 B

基数相乘,4 乘 2 乘 3 等于 24。选 9 的是把三个数加起来了,笛卡尔积的规则是相乘,不是相加。

想一想

如果再加一个有 4 个值的“职称”域,元组个数变成多少?

06
第 2 章 · 第一节

笛卡尔积:所有可能的搭配

食堂点餐三列各选一个,2 乘 3 乘 2 等于 12 种套餐,这就是笛卡尔积。

第 6 页课件

重 点课件里的三个关键词

每列各取一个,对应定义里的“di 来自 Di”。全部列出,对应“所有元组的集合”,一种搭配都不能漏。数量是个数相乘,对应上一页的基数公式。课件下半页把定义 2.2 的三个术语各配了一句人话:有序是位置有意义,分量是小括号里的每一位,基数是个数相乘。

试一试自己配套餐,看笛卡尔积怎么变

主食
配菜
饮料

想一想

如果饮料只剩茶一种,套餐还有几种?

07
第 2 章 · 第一节

姓名域与性别域的笛卡尔积

6 个名字和 2 种性别逐一配对,得到 12 个二元组。

第 7 页课件

重 点逐一配对是什么意思

每个名字都要和男、女各配一次,一个都不漏,所以刘杨出现了两次,石丽也出现了两次。两个域的笛卡尔积里每个元组有两个分量,所以叫二元组。这 12 个二元组里只有 6 个是真的,另外 6 个只是可能。

打个比方

班级合影排队,6 个人每人试两种站位,一共 12 张照片,其中大半照片里的站位并不是真实安排。笛卡尔积就是把这 12 张照片全部洗出来。

想一想

12 个二元组里,哪几个是现实里真有的?

08
第 2 章 · 第一节

笛卡尔积的二维表形式

笛卡尔积可以画成一张二维表,每个元组是一行,每个域是一列。

第 8 页课件

重 点从集合到表

花括号换成表格,一个元组换成一行,一个域换成一列,表头 tn 和 sex 就是后面要讲的属性名。表上 12 行里有 6 行是假的,说明笛卡尔积只是原材料,真正的表要从这 12 行里挑。

打个比方

一张空白排班表列出了所有人和所有班次的全部组合,真正的排班只在其中几格打勾。全部组合是笛卡尔积,打了勾的那几格是关系。

想一想

这张表里,哪一列的值来自姓名域?

09
第 2 章 · 第一节

笛卡尔积和数据库有什么关系

关系(表)是若干域的笛卡尔积中的一个子集,笛卡尔积是全部可能,表是满足约束的那部分可能。

第 9 页课件

重 点三句话的逻辑

先列出全部可能,再从中挑出真实存在的,得到的就是表。挑选的依据叫约束,这个词到第五节会变成“完整性”。这一页是整章的分水岭,前面的域和笛卡尔积都是为了说清“全部可能”,后面的关系、模式、码都在说“挑出来的那部分”。

打个比方

食材两两随便搭配是笛卡尔积,餐厅真正卖的那几道菜是关系。菜单上没有“可乐炒米饭”,不是因为它拼不出来,而是因为它不符合约束。

想一想

“子集”这个词意味着表里可能出现笛卡尔积之外的行吗?

10
第 2 章 · 第一节

关系的定义

定义 2.3 把关系写成 R(D1, D2, …, Dn),R 是关系的名字,n 是关系的目或度,也就是列数。

第 10 页课件

关键术语

关系Relation
笛卡尔积的任一子集,定义在 n 个域上的叫 n 元关系。
Degree
关系的目,也就是它有几个属性、几列。

重 点读图

图上一行是一个元组,一列是一个属性,每一列的值来自一个域,属性的名字必须唯一。教师关系 T1 是从 12 行里挑出来的 6 行,它的度是 2。

试一试从 12 行里挑出关系

D1 × D2 的全部 12 行,点一行决定留不留
tn 姓名sex 性别
刘杨
刘杨
石丽
石丽
顾伟
顾伟
赵礼
赵礼
赵希希
赵希希
张刚
张刚

想一想

教师关系 T1 的度是多少,基数是多少?

11
第 2 章 · 第一节

什么是关系:把所有可能变成有意义的表

关系等于若干域的笛卡尔积中的一个有意义的子集,再给它起个名字 R。

第 11 页课件

重 点五个词串成一句

域是一列允许出现的取值范围,属性是一列的名字,元组是一行,度是列数,关系是有名字的子集。课件特别提醒同一个关系里属性名必须唯一,两列都叫 name,查询时就分不清要哪一列。

打个比方

课件的餐厅比方:笛卡尔积像把所有食材随便搭在一起,关系是餐厅真正卖的菜,从所有可能的搭配里筛掉没意义的,只留符合约束的那些,再给这道菜起个名字,这个名字就是 R。

想一想

一张只有一列的表,算不算关系?

12
第 2 章 · 第一节

关系的几点说明

四点说明:按度分单元、二元关系,元组个数是基数,属性名唯一而不同列可以同域,实际中的关系是有意义的子集。

第 12 页课件

重 点第三条最容易混

域和属性不是一回事,“职业”和“兼职”两列可以来自同一个域{教师,工人,辅导员},但必须有不同的名字。属性是列的名字,域是列的取值范围,一个域可以被好几列共用。表头一样的两张表叫同类关系,比如今年的学生表和去年的学生表。

练一练

教师关系 t 有 8 列 6 行,它的度和基数各是多少?
  1. A度 6,基数 8
  2. B度 8,基数 6
  3. C度 48,基数 48
  4. D度 14,基数 14
答案 B

度是列数,也就是属性的个数,这里是 8。基数是元组的个数,也就是行数,这里是 6。两个数不能相乘也不能相加。

想一想

“职业”和“兼职”两列来自同一个域,值可以相同吗?

保山学院·人工智能教研室·曹鼎鼎