全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SQL及关系型数据库数据分析
78 0
2025-11-27

用说唱厂牌的数据讲清楚关系代数:DigiGhetto 的数据库之旅

作为一名自诩为南通大学头号学术说唱手的学习者,我在理解数据库中“关系代数”这一概念时曾陷入困境。为了让抽象的理论更易消化,我决定借用中文说唱圈顶流厂牌 DigiGhetto 的成员信息与作品数据,将枯燥的运算规则转化为鲜活的现实案例。毕竟,把“查询表格”想象成“筛选rapper”,学习也会变得带感起来。

关系代数本质上是数据库的“查询语言”,它通过一系列数学运算来处理结构化的表格数据(即“关系”)。接下来的内容将以 DigiGhetto 成员的相关属性构建多个数据表,并逐步演示各类核心运算的操作逻辑与结果呈现。

一、集合类运算符(共4种)

集合运算基于传统集合论思想,要求参与运算的两个关系具备相同的“目数”——即列数一致,且对应列的属性来自同一语义域(例如都是“成员名”“音乐风格”等)。我们先定义两个基础关系表用于演示:

表1:关系 R(核心成员表)
成员名音乐风格代表作
MacOvaSeasAutotune旋律《天上一天》
A$EN叙事硬核《Run this game》
Thomeboydontkill多元融合《1 AM》
TOYOKI朋克说唱《暴雨》
KIV元素融合《太子时间》
MULA SAKEE实验性说唱《永玄定鼎》
表2:关系 S(新生代成员表)
(注:为满足示例需要,土老师被纳入此表,无其他意图,向其致敬!)
成员名音乐风格代表作
SETI街头陷阱《Forget it》
TOYOKI朋克说唱《暴雨》

1. 并运算(R ∪ S)

定义:合并两个关系中的所有元组(行),去除重复项后形成新关系,保持原有属性数量不变(仍为3目)。

规则说明:

  • 若某条记录在 R 和 S 中完全相同,则仅保留一次;
  • 最终结果按原表字段顺序排列。

运算结果(R ∪ S):

成员名音乐风格代表作
MacOvaSeasAutotune旋律《天上一天》
A$EN叙事硬核《Run this game》
Thomeboydontkill多元融合《1 AM》
TOYOKI朋克说唱《暴雨》
KIV元素融合《太子时间》
MULA SAKEE实验性说唱《永玄定鼎》
SETI街头陷阱《Forget it》

2. 交运算(R ∩ S)

定义:提取同时存在于 R 和 S 中的元组,构成新的3目关系。

规则说明:

  • 只有当一行在两表中所有属性值完全相等时才被保留。

运算结果(R ∩ S):

成员名音乐风格代表作
TOYOKI朋克说唱《暴雨》

3. 差运算(R - S)

定义:获取属于 R 但不属于 S 的元组,结果仍为3目关系,体现 R 独有的数据。

规则说明:

  • 从 R 中剔除那些在 S 中也存在的完整匹配记录。

运算结果(R - S):

成员名音乐风格代表作
MacOvaSeasAutotune旋律《天上一天》
A$EN叙事硬核《Run this game》
Thomeboydontkill多元融合《1 AM》
KIV元素融合《太子时间》
MULA SAKEE实验性说唱《永玄定鼎》

4. 笛卡尔积(R × S)

定义:将 R 的每一行与 S 的每一行进行全组合,生成的新关系包含 R 与 S 属性总数之和(3+3=6目)。

规则说明:

  • 当属性名冲突时需加前缀区分,如 R.成员名、S.成员名;
  • 总行数 = R 行数 × S 行数 = 6 × 2 = 12 条。

运算结果(节选前6条):

R.成员名 R.音乐风格 R.代表作 S.成员名 S.音乐风格 S.代表作
MacOvaSeas Autotune旋律 《天上一天》 SETI 街头陷阱 《Forget it》
MacOvaSeas Autotune旋律 《天上一天》 TOYOKI 朋克说唱 《暴雨》
A$EN 叙事硬核 《Run this game》 SETI 街头陷阱 《Forget it》
A$EN 叙事硬核 《Run this game》 TOYOKI 朋克说唱 《暴雨》
Thomeboydontkill 多元融合 《1 AM》 SETI 街头陷阱 《Forget it》
Thomeboydontkill 多元融合 《1 AM》 TOYOKI 朋克说唱 《暴雨》

二、专用关系运算符(共4种)

相较于集合运算,关系运算符专为数据库设计,支持更灵活的数据操作,如选择特定行、投影指定列、连接多张表等。为了展示这些功能,我们需要引入扩展后的数据表:

表3:关系 M(DigiGhetto 全成员信息表)
成员名音乐风格代表作出生日期家乡(数据可能有出入,仅供参考)
MacOvaSeasAutotune旋律《天上一天》1998-05江油
A$EN叙事硬核《Run this game》1999-08咸丰
Thomeboydontkill多元融合《1 AM》2000-02简阳
TOYOKI朋克说唱《暴雨》2001-03凉山
KIV元素融合《太子时间》1999-11珠海
MULA SAKEE实验性说唱《永玄定鼎》1997-09成都
SETI街头陷阱《Forget it》2002-07南部县
表4:关系 P(作品发行表)
(数据可能存在误差,仅供教学参考)
成员名作品名发行年份播放量(万)
A$EN《Run this game》2025800
TOYOKI《暴雨》2022800
Thomeboydontkill《1 AM》2022950
[此处为图片1]

以上数据结构为后续的关系运算提供了丰富上下文。通过对 DigiGhetto 成员及其作品的多维度建模,我们可以直观地看到数据库如何利用数学逻辑完成复杂查询任务。这种以真实场景映射抽象理论的方式,有助于加深对关系代数本质的理解。

[此处为图片2]

以下是对关系代数中四种基本运算的详细解析,包含选择、投影、连接与除法运算的应用示例。文中涉及的数据以音乐人及其作品信息为基础构建关系表,并通过形式化表达展示操作过程和结果。

1. 选择运算(σ_条件(M))

定义:从给定关系中筛选出满足特定条件的元组(即行),不改变原有属性结构,仅对记录进行过滤。

符号说明:使用希腊字母 σ 表示选择运算,条件部分由逻辑表达式构成,支持比较符如 >、<、=、≠,以及逻辑连接词 ∧(且)、∨(或)。

规则特点:只影响行的选择,列保持完整;输出结果仍为原关系的子集,结构一致。

应用示例:查询“2000年后出生且家乡属于南方城市”的成员。

设定条件:出生日期 > '2000-01' ∧ 家乡 ∈ {'成都','重庆','杭州','广州','珠海'}

运算表达式:
σ_出生日期>'2000-01' ∧ 家乡 IN ('成都','重庆','杭州','广州','珠海')(M)

结果表:

成员名 音乐风格 代表作 出生日期 家乡
Thomeboydontkill 多元融合 《1 AM》 2000-02 简阳
TOYOKI 朋克说唱 《暴雨》 2001-03 凉山
SETI 街头陷阱 《Forget it》 2002-07 南部县
[此处为图片1]

2. 投影运算(π_属性列(M))

定义:从关系中提取指定的一组属性列,形成新的关系结构,属性数量减少,可能去除重复元组。

符号说明:用 π 表示投影运算,括号内列出所需保留的属性名称,多个属性间以逗号分隔。

规则特点:仅保留指定列;若结果中存在完全相同的行,则自动去重。

应用示例:提取所有成员的“成员名 + 家乡”信息,并去除重复项。

运算表达式:
π_成员名, 家乡(M)

结果表:

成员名 家乡
MacOvaSeas 江油
A$EN 咸丰
Thomeboydontkill 简阳
TOYOKI 凉山
KIV 珠海
MULA SAKEE 成都
SETI 南部县
[此处为图片2]

3. 连接运算(M ∞ P)

定义:基于两个关系的笛卡尔积,依据属性间的匹配条件筛选符合条件的组合元组,实现数据关联。核心步骤为“先组合,后筛选”。

前提条件:两关系需具备可比较的公共属性,例如本例中的“成员名”字段。

常见类型:等值连接、自然连接、外连接。

(1)等值连接(θ 为 “=”)

筛选“成员名相等”的元组,保留双方全部属性,包括重复的连接字段(如两个“成员名”列)。

运算表达式:
M ∞M.成员名 = P.成员名 P

结果表:

M.成员名 音乐风格 代表作 出生日期 家乡 P.成员名 作品名 发行年份 参考播放量(万)
MacOvaSeas Autotune旋律 《天上一天》 1998-05 江油 MacOvaSeas 《天上一天》 2023 1500
A$EN 叙事硬核 《Run this game》 1999-08 咸丰 A$EN 《Run this game》 2025 800
Thomeboydontkill 多元融合 《1 AM》 2000-02 简阳 Thomeboydontkill 《1 AM》 2023 950
TOYOKI 朋克说唱 《暴雨》 2001-03 杭州 TOYOKI 《暴雨》 2022 800
KIV 元素融合 《太子时间》 1999-11 珠海 KIV 《太子时间》 2024 500
MULA SAKEE 实验性说唱 《永玄定鼎》 1997-09 成都 MULA SAKEE 《永玄定鼎》 2025 700
SETI 街头陷阱 《Forget it》 2002-07 南部县 SETI 《Forget it》 2024 600
[此处为图片3]

(2)自然连接

一种特殊的等值连接,系统自动识别同名且语义一致的属性(如“成员名”)进行匹配,并在结果中合并该字段,仅保留一份。

运算结果将消除冗余列,提升数据整洁度。

结果表:

成员名 音乐风格 代表作 出生日期 家乡 作品名 发行年份 参考播放量(万)
MacOvaSeas Autotune旋律 《天上一天》 1998-05 江油 《天上一天》 2023 1500
A$EN 叙事硬核 《Run this game》 1999-08 咸丰 《Run this game》 2025 800
Thomeboydontkill 多元融合 《1 AM》 2000-02 简阳 《1 AM》 2023 950
TOYOKI 朋克说唱 《暴雨》 2001-03 凉山 《暴雨》 2022 800
KIV 元素融合 《太子时间》 1999-11 珠海 《太子时间》 2023 500
MULA SAKEE 实验性说唱 《永玄定鼎》 1997-09 成都 《永玄定鼎》 2025 700
SETI 街头陷阱 《Forget it》 2002-07 南部县 《Forget it》 2024 600
[此处为图片4]

(3)左外连接

保留左表(M)中的所有元组,无论右表(P)是否有匹配项;对于无匹配的情况,右表对应字段填充 NULL 值。

在当前示例中,由于每个成员在作品表 P 中均有对应记录,因此其结果与自然连接相同。

4. 除运算(R ÷ S)

定义:设有关系 R(X,Y) 和 S(Y),除法运算的结果是 R 中那些 X 属性值所对应的 Y 象集完全包含 S 中所有 Y 值的集合。

通俗理解:找出“满足 S 所有条件”的 X 值。

执行步骤:
① 提取 R 中每个 X 值对应的 Y 集合(象集);
② 筛选出其象集包含 S 全部 Y 值的 X。

构造专用表 —— 关系 R(成员 - 合作曲目表):

成员名 合作曲目
A$EN 《江浙沪》
A$EN 《MAYDAY》
TOYOKI 《江浙沪》
TOYOKI 《MAYDAY》
Thomeboydontkill 《江浙沪》
Thomeboydontkill 《Julie》
KIV 《江浙沪》
KIV 《MAYDAY》
MULA SAKEE 《江浙沪》
MULA SAKEE 《MAYDAY》

假设 S = {《江浙沪》, 《MAYDAY》},则求 R ÷ S 即为查找同时参与这两首歌曲的合作艺人。

经分析可知:A$EN、TOYOKI、KIV、MULA SAKEE 满足条件。

[此处为图片5]

表6:关系S(热门合作曲目表)

合作曲目
《江浙沪》
《MAYDAY》

运算步骤:

  1. 设定 X 为成员名,Y 为合作曲目。
  2. 计算关系 R 中每位成员的 Y 象集:
  • A$EN 的象集:{《江浙沪》,《MAYDAY》}
  • TOYOKI 的象集:{《江浙沪》,《MAYDAY》}
  • Thomeboydontkill 的象集:{《江浙沪》,《Julie》}
  • KIV 的象集:{《江浙沪》,《MAYDAY》}
  • MULA SAKEE 的象集:{《江浙沪》,《MAYDAY》}

筛选出象集中包含 S 中全部曲目(即《江浙沪》和《MAYDAY》)的成员。

[此处为图片1]

结果表(R÷S):

成员名
A$EN
TOYOKI
KIV
MULA SAKEE

各类运算对比总结:

运算类型 核心作用 关键特点
集合运算符 表之间的元组组合 / 筛选 要求两表结构一致
选择运算 筛行(基于条件进行元组筛选) 不改变属性,仅减少元组数量
投影运算 提列(提取指定属性) 可能改变属性数量,元组可能因去重而减少
连接运算 实现多表关联查询 需要公共属性,支持多种连接方式
除运算 用于满足“所有”条件的查询 基于象集匹配,适用于全值包含场景
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群