相关笔记: 9.1 关系及其性质 | 9.3 关系的表示

概览

本节将二元关系推广到n元关系(n-ary relation),并重点讨论其在关系数据库数据挖掘中的应用。n元关系是==笛卡尔积 的子集,其核心概念包括度(degree)域(domain)。关系数据库模型将数据存储为 n 元组(即记录),通过选择(selection)投影(projection)连接(join)三种基本操作实现数据查询。本节还介绍了数据库查询语言 SQL 的基本用法,以及数据挖掘中的关联规则(association rule)支持度(support)置信度(confidence)频繁项集(frequent itemset)== 等核心概念。

  • n元关系 的子集, 为度, 为域
  • 关系数据库:用 n 元组(记录/行)和属性(字段/列)的表格存储数据
  • 主键(primary key):能唯一标识每条记录的属性域
  • 复合关键字(composite key):多个属性的组合能唯一标识每条记录
  • 选择操作 :筛选满足条件 的 n 元组
  • 投影操作 :保留指定列,删除其余列
  • 连接操作 :基于 个公共字段合并两个关系
  • SQL:SELECT(投影)、FROM(关系)、WHERE(选择条件)
  • 关联规则 :支持度 ,置信度
  • 频繁项集:支持度不低于阈值 的项集

一、知识结构总览

graph TB
    A["9.2 n元关系及其应用 n-ary Relations and Their Applications"] --> B["n元关系定义"]
    A --> C["关系数据库模型"]
    A --> D["n元关系上的操作"]
    A --> E["SQL 查询语言"]
    A --> F["数据挖掘与关联规则"]

    B --> B1["A1×A2×...×An 的子集"]
    B --> B2["度 degree = n"]
    B --> B3["域 domain = Ai"]

    C --> C1["记录 = n元组"]
    C --> C2["字段 = 属性"]
    C --> C3["表 = 关系的表格表示"]
    C --> C4["主键 primary key"]
    C --> C5["复合关键字 composite key"]
    C --> C6["外延 extension vs 内涵 intension"]

    D --> D1["选择 sC"]
    D --> D2["投影 Pi1,i2,...,im"]
    D --> D3["连接 Jp(R,S)"]

    E --> E1["SELECT = 投影"]
    E --> E2["FROM = 关系"]
    E --> E3["WHERE = 选择条件"]
    E --> E4["多表查询 = 连接"]

    F --> F1["事务 transaction / 购物篮"]
    F --> F2["项集 itemset"]
    F --> F3["计数 σ(I) 与支持度 support"]
    F --> F4["频繁项集挖掘"]
    F --> F5["关联规则 I→J"]
    F --> F6["支持度与置信度"]

二、核心思想

核心思想

本节的核心思想是将关系从二元推广到 n 元,并利用集合运算的视角来理解和操作结构化数据。n元关系是关系数据库的理论基础——数据库中的每一张表就是一个 n 元关系,每一行是一个 n 元组(记录),每一列对应一个域(属性)。通过选择、投影、连接三种操作,我们可以从数据库中提取所需信息。SQL 语言将这些操作封装为声明式查询语句。在数据挖掘领域,n 元关系(事务数据库)被用于发现关联规则,揭示数据中隐藏的关联模式,如经典的”啤酒与尿布”案例。

1. n元关系的定义

n元关系(n-ary Relation)

是集合。在这些集合上的n元关系 是笛卡尔积 的一个子集。

  • 集合 称为该关系的域(domains)
  • 整数 称为该关系的度(degree)
  • 中的元素 称为n元组(n-tuples)

三元关系:严格递增三元组

上的关系,

  • ✅(
  • ❌(
  • 度为 3,三个域都是自然数集

三元关系:同余关系

上的关系,

  • ✅(,因为
  • ❌( 不能被 整除)
  • 度为 3,前两个域是 ,第三个域是

五元关系:航班信息

由 5 元组 组成,分别表示航空公司、航班号、起点、目的地、出发时间。

例如

度为 5,域分别为航空公司集合、航班号集合、城市集合、城市集合、时间集合。

2. 关系数据库模型

关系数据库(Relational Database)

关系数据模型用 n 元关系来表示数据库。核心术语:

  • 记录(record):n 元组,即关系中的一个元素
  • 字段(field):n 元组的各个分量,也称为属性(attribute)
  • 表(table):关系的表格表示,每行是一条记录,每列是一个属性
  • 主键(primary key):某个域(属性),使得该域的值能唯一确定一条记录(n 元组)
  • 复合关键字(composite key):多个域的笛卡尔积,使得这些域的值的组合能唯一确定一条记录
  • 外延(extension):数据库当前的记录集合(即关系本身)
  • 内涵(intension):数据库的永久部分,包括名称、属性等结构信息

学生数据库

Student NameID NumberMajorGPA
Ackermann231455Computer Science3.88
Adams888323Physics3.45
Chou102147Computer Science3.49
Goodfriend453876Mathematics3.45
Rao678543Mathematics3.90
Stevens786576Psychology2.99
  • 度为 4,域分别为姓名集合、学号集合、专业集合、GPA 集合
  • Student Name 是主键(每个学生姓名唯一)
  • ID Number 也是主键(每个学号唯一)
  • Major 不是主键(多个学生有相同专业)
  • GPA 不是主键(Adams 和 Goodfriend 的 GPA 都是 3.45)

复合关键字

在上表中,(Major, GPA) 的笛卡尔积是复合关键字吗?

检查:没有任何两条记录同时具有相同的专业和 GPA。例如 Computer Science + 3.88 唯一对应 Ackermann,Mathematics + 3.45 唯一对应 Goodfriend。✅ 是复合关键字。

但注意:复合关键字依赖于当前数据。如果未来添加一条 (Zhang, 999999, Computer Science, 3.88) 的记录,则 (Major, GPA) 不再是复合关键字。

主键的选择原则

  • 主键应选择在所有可能的扩展中都保持唯一的属性
  • 学号通常是好的主键(系统保证唯一性)
  • 姓名不是好的主键(可能存在同名同姓)
  • 当单个属性无法保证唯一时,使用复合关键字

3. 选择操作

选择操作(Selection)

是一个 n 元关系, 是元素可能满足的条件。选择操作 映射到由 中所有满足条件 的 n 元组构成的新关系:

  • 直觉:按条件筛选行(记录),不改变列的结构
  • 条件 可以是简单条件(如 )或复合条件(用 组合)

选择操作的应用

在学生数据库上:

  • : Major = “Computer Science”):筛选出计算机科学专业的学生
    • 结果:
  • : GPA > 3.5):筛选出 GPA 大于 3.5 的学生
    • 结果:
  • : Major = “Computer Science” GPA > 3.5):筛选出计算机科学专业且 GPA > 3.5 的学生
    • 结果:

4. 投影操作

投影操作(Projection)

投影 (其中 )将 n 元组 映射到 m 元组 ,其中

  • 直觉:保留指定列,删除其余列
  • 投影后可能产生重复行,需要去重(因为关系是集合,不能有重复元素)

投影操作的应用

对学生数据库应用 (保留第 1 列 Student Name 和第 4 列 GPA):

Student NameGPA
Ackermann3.88
Adams3.45
Chou3.49
Goodfriend3.45
Rao3.90
Stevens2.99

注意:投影后行数不变(因为没有两行在第 1 和第 4 列上完全相同)。

投影导致行数减少

对选课数据库应用 (保留 Student 和 Major 列):

原表(8 条记录):

StudentMajorCourse
GlauserBiologyBI 290
GlauserBiologyMS 475
GlauserBiologyPY 410
MarcusMathematicsMS 511
MarcusMathematicsMS 603
MarcusMathematicsCS 322
MillerComputer ScienceMS 575
MillerComputer ScienceCS 455

投影 后(3 条记录,因为 Glauser-Biology、Marcus-Mathematics、Miller-CS 各出现多次,去重后只保留一个):

StudentMajor
GlauserBiology
MarcusMathematics
MillerComputer Science

5. 连接操作

连接操作(Join)

是度为 的关系, 是度为 的关系。连接 (其中 )是度为 的关系,由所有满足以下条件的 元组构成:

  • 直觉:将两个表中==最后 列与最前 列匹配==的行拼接起来
  • 结果的度 = (因为 个公共列只保留一份)

连接操作的应用

将教学分配表(Teaching assignments)和课程时间表(Class schedule)用 连接:

教学分配表(Table 5):

ProfessorDepartmentCourse number
CruzZoology335
CruzZoology412
FarberPsychology501
FarberPsychology617
GrammerPhysics544
GrammerPhysics551
RosenComputer Science518
RosenMathematics575

课程时间表(Table 6):

DepartmentCourse numberRoomTime
Computer Science518N5212:00 P.M.
Mathematics575N5023:00 P.M.
Mathematics611N5214:00 P.M.
Physics544B5054:00 P.M.
Psychology501A1003:00 P.M.
Psychology617A11011:00 A.M.
Zoology335A1009:00 A.M.
Zoology412A1008:00 A.M.

连接结果(Table 7):基于最后 2 列(Department, Course number)与最前 2 列匹配:

ProfessorDepartmentCourse numberRoomTime
CruzZoology335A1009:00 A.M.
CruzZoology412A1008:00 A.M.
FarberPsychology501A1003:00 P.M.
FarberPsychology617A11011:00 A.M.
GrammerPhysics544B5054:00 P.M.
RosenComputer Science518N5212:00 P.M.
RosenMathematics575N5023:00 P.M.

注意:Grammer 的 Physics 551 和 Mathematics 611 没有匹配项,不出现在结果中。

6. SQL 查询语言

SQL(Structured Query Language)

SQL 是关系数据库的标准查询语言,其基本语句结构对应 n 元关系上的操作:

  • SELECT 子句:对应投影操作(注意:SQL 的 SELECT 实际上是投影,这是一个术语冲突)
  • FROM 子句:指定查询所基于的 n 元关系(表)
  • WHERE 子句:对应选择操作的条件
  • 多表 FROM:对应连接操作

SQL 基本查询

查询航班数据库(Table 8)中目的地为 Detroit 的航班出发时间:

SELECT Departure_time
FROM Flights
WHERE Destination = 'Detroit'

对应的操作:先对 Flights 关系执行选择 : Destination = ‘Detroit’),再执行投影 (第 5 列 Departure_time)。

输出:08:10, 08:47, 09:44。

SQL 多表查询

查询 Mathematics 系教授的上课时间:

SELECT Professor, Time
FROM Teaching_assignments, Class_schedule
WHERE Department = 'Mathematics'

对应的操作:先对 Teaching_assignments 和 Class_schedule 执行 连接,再选择 Department = ‘Mathematics’ 的记录,最后投影

输出:(Rosen, 3:00 P.M.)。

SQL 术语冲突

  • SQL 中的 SELECT 对应数学中的投影(projection),而非选择
  • SQL 中的 WHERE 对应数学中的选择(selection)
  • 这种术语冲突容易造成混淆,需要特别注意

7. 数据挖掘与关联规则

基本术语

  • 事务(transaction):一次购买活动中购买的商品集合,也称为购物篮(basket)
  • 项(item):商店中的每种商品
  • 项集(itemset):商品的集合;包含 个商品的项集称为 -项集(-itemset)
  • 事务数据库:所有事务的集合 ,每个事务可用 元组表示

计数、支持度与频繁项集

是一个项集, 是事务集合。

  • 计数(count),即包含项集 的事务数量
  • 支持度(support),即随机选取的事务包含 的概率
  • 支持阈值(support threshold) :应用中指定的最小支持度
  • 频繁项集(frequent itemset):支持度 的项集
  • 频繁项集挖掘:从事务数据库中找出所有频繁项集的过程

频繁项集的计算

市场早上的 8 笔交易如下:

事务编号商品
1{apples, pears, mangos}
2{pears, cider}
3{apples, cider, donuts, mangos}
4{apples, pears, cider, donuts}
5{apples, cider, donuts}
6{pears, cider, donuts}
7{pears, donuts}
8{apples, pears, cider}

对应的二进制数据库:

事务编号ApplesPearsCiderDonutsMangos
111001
201100
310111
411110
510110
601110
701010
811100

计算各商品的支持度:

  • (事务 1, 3, 4, 5, 8),
  • (事务 1, 2, 4, 6, 7, 8 中的 5 个),
  • (事务 2, 3, 4, 5, 6, 8),
  • (事务 3, 4, 5, 6, 7),
  • (事务 1, 3),

若支持阈值 ,则频繁项为:apples、pears、cider、donuts(支持度均 )。mangos 不是频繁项()。

2-项集 (事务 3, 4, 5, 8),,是频繁项集。

关联规则(Association Rule)

是项集 的不相交子集。关联规则 的强度由以下两个指标度量:

  • 支持度

    即事务同时包含 的概率

  • 置信度

    即在包含 的事务中,也包含 的条件概率

  • 强关联规则:支持度 最小支持度 且 置信度 最小置信度 的关联规则

关联规则的计算

对上述交易数据,计算关联规则 的支持度和置信度:

  • (事务 3, 4, 5 同时包含这三个商品)
  • (事务 3, 4, 5, 6 同时包含 cider 和 donuts)

解释:在所有交易中,有 37.5% 的交易同时购买了 cider、donuts 和 apples;在购买了 cider 和 donuts 的交易中,有 75% 也购买了 apples。

关联规则的实际应用

关联规则的应用远超购物篮分析:

  • 医疗诊断:项集为检查结果/症状的集合,事务为患者记录
  • 搜索引擎:项集为关键词集合,事务为网页内容
  • 抄袭检测:项集为句子集合,事务为文档内容
  • 网络安全:项集为攻击模式集合,事务为网络传输数据
  • 经典案例:“啤酒与尿布”——超市数据挖掘发现购买尿布的顾客往往同时购买啤酒

三、补充理解与易混淆点

补充理解

补充1:n元关系与二元关系的关系

n元关系是二元关系的自然推广。二元关系是 的子集(度 ),而 n 元关系是 的子集(度 )。当 时,n 元关系退化为二元关系。

在实际应用中,n 元关系()更为常见,因为现实世界的数据通常涉及多个属性。例如:学生记录涉及姓名、学号、专业、GPA(4 个属性);航班信息涉及航空公司、航班号、起点、目的地、出发时间(5 个属性)。 来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 9.2. 来源:Codd, E. F. (1970). “A Relational Model of Data for Large Shared Data Banks.” Communications of the ACM, 13(6), 377–387.

补充2:关系代数与 SQL 的对应关系

关系代数是关系数据库的理论基础,SQL 是其商业化实现。核心对应关系如下:

关系代数操作SQL 对应功能描述
选择 WHERE 子句按条件筛选行
投影 SELECT 子句选取指定列
连接 FROM 多表合并两个表
UNION合并查询结果
EXCEPT差集
笛卡尔积 CROSS JOIN笛卡尔积

SQL 的 SELECT 语句的一般形式:

SELECT 列名1, 列名2, ...     -- 投影
FROM 表名1, 表名2, ...       -- 关系(多表时隐含连接)
WHERE 条件                   -- 选择

来源:Codd, E. F. (1972). “Relational Completeness of Data Base Sublanguages.” Database Systems, 6, 65–98. 来源:Date, C. J. (2003). An Introduction to Database Systems (8th ed.). Addison-Wesley, Chapter 6.

补充3:频繁项集挖掘算法

暴力枚举所有可能的关联规则是不可行的,因为可能的规则数量是指数级的。实际中使用的算法(如 Apriori 算法)采用以下策略:

  1. 先找频繁项集:利用支持度阈值逐步剪枝,从 1-项集开始,只保留频繁的,再组合生成 2-项集候选,依此类推
  2. 再生成关联规则:从频繁项集中提取高置信度的规则

Apriori 算法的关键性质(反单调性):如果某个项集不是频繁的,则它的所有超集也不是频繁的。这大大减少了需要检查的项集数量。 来源:Agrawal, R. & Srikant, R. (1994). “Fast Algorithms for Mining Association Rules.” Proceedings of the 20th VLDB Conference, 487–499. 来源:Rosen, K. H. (2019). Discrete Mathematics and Its Applications (8th ed.), McGraw-Hill, Section 9.2.

易混淆点

误区:SQL 中 SELECT 与数学中选择操作的术语冲突

  • ❌ 认为 SQL 的 SELECT 对应数学中的选择(selection)
  • ✅ SQL 的 SELECT 对应数学中的投影(projection)(选取列)
  • ✅ SQL 的 WHERE 对应数学中的选择(selection)(筛选行)
  • 这是一个不幸的术语冲突,在学习和使用中需要特别注意

误区:主键与复合关键字的区别

  • ❌ 认为任何属性都可以作为主键
  • ✅ 主键要求该属性的值在所有记录中唯一。例如”姓名”通常不是好的主键(可能重名),而”学号”是好的主键
  • ❌ 认为复合关键字就是多个主键
  • ✅ 复合关键字是多个属性的值的组合能唯一标识记录,但单独每个属性不一定能唯一标识
  • ❌ 忽略主键的时间依赖性
  • ✅ 选择主键时应考虑数据库的所有可能扩展,确保主键在添加新记录后仍然有效

误区:支持度与置信度的区别

  • ❌ 混淆支持度和置信度
  • 支持度衡量规则的”普遍性”:,即 同时出现的概率
  • 置信度衡量规则的”可靠性”:,即在已知 出现的条件下 也出现的概率
  • 例如:规则 的支持度为 0.1%(很少同时出现),置信度为 99%(只要买了 几乎必买 )。这说明规则虽然可靠,但适用范围很窄
  • 一个有用的关联规则应该同时具有较高的支持度和较高的置信度

误区:投影操作可能减少行数

  • ❌ 认为投影只改变列数,不改变行数
  • ✅ 投影后可能产生重复行,需要去重(因为关系是集合)。例如选课表中多个学生选了同一门课,投影到 (Student, Major) 后行数会减少
  • 这与 SQL 中 SELECT DISTINCT 的行为一致

四、习题精选

习题概览

题号范围核心考点难度
1-3列举 n 元关系中的元组
4-6判断主键和复合关键字⭐⭐
7-9实际数据库的主键分析⭐⭐
10-13选择操作 的应用⭐⭐
14-17投影操作 的应用⭐⭐
18-19连接操作 的应用⭐⭐⭐
20-27选择、投影操作的代数性质证明⭐⭐⭐
28-29SQL 查询与关系操作的对应⭐⭐⭐
30-32主键与函数的关系⭐⭐
33-36事务数据库:计数、支持度、频繁项集、关联规则⭐⭐⭐

题1:判断主键

题目

考虑以下航班数据库(Table 8):

AirlineFlight numberGateDestinationDeparture time
Nadir12234Detroit08:10
Acme22122Denver08:17
Acme12233Anchorage08:22
Acme32334Honolulu08:30
Nadir19913Detroit08:47
Acme22222Denver09:10
Nadir32234Detroit09:44

假设不会添加新的记录,哪些域是主键?是否存在包含 Airline 域的复合关键字?

题2:选择操作

题目

对航班数据库(Table 8)应用选择操作 ,其中 为条件 Destination = ‘Detroit’。结果是什么?

题3:投影操作

题目

对航班数据库(Table 8)应用投影 (保留 Airline 和 Destination 列),结果是什么?

题4:连接操作

题目

是度为 5 的关系(Table 5,教学分配), 是度为 4 的关系(Table 6,课程时间表)。 的结果的度是多少?请解释连接过程。

题5:关联规则的计算

题目

某便利店晚上的 6 笔交易为:

(a) 求 diapers 的计数和支持度。 (b) 若支持阈值为 0.6,求所有频繁项集。 (c) 求关联规则 的支持度和置信度。

解题思路提示

n元关系与数据库操作的方法论:

  1. 主键判定:检查该属性的值在所有记录中是否唯一。注意考虑未来可能的扩展
  2. 选择操作:逐行检查条件,保留满足条件的行,列结构不变
  3. 投影操作:保留指定列,删除其余列。注意去重(关系是集合)
  4. 连接操作:找到两个表中公共字段匹配的行,拼接成新表。不匹配的行被丢弃
  5. SQL 解读:SELECT = 投影,FROM = 关系,WHERE = 选择,多表 FROM = 连接
  6. 关联规则:先计算计数 ,再计算支持度和置信度。注意区分支持度(全局概率)和置信度(条件概率)

五、视频学习指南

视频资源

资源链接对应内容备注
Rosen 8e Section 9.2教材原文完整定义、定理与例题英文教材
Stanford CS145链接关系数据库基础英文,Stanford课程
Apriori Algorithm链接频繁项集挖掘算法英文,数据挖掘

六、教材原文

教材原文

“Relationships among elements of more than two sets often arise. For instance, there is a relationship involving the name of a student, the student’s major, and the student’s grade point average.”

“The relational data model represents a database of records as an n-ary relation. Thus, student records are represented as 4-tuples of the form (Student name, ID number, Major, GPA).”

“We will now introduce concepts from data mining, the discipline with the goal of gaining useful information from data. In particular, we will discuss information that can be gleaned from databases of transactions.”

“An important problem in data mining is to find strong association rules, which have support greater than or equal to a minimum support level and confidence greater than or equal to a minimum confidence level.”


参见 Wiki

关系