目录
一、前言
大家早上好啊,今天来学习关系代数中的除法,也是我觉得最难理解的运算之一。
会试图用比喻的方法来讲清楚关系代数中的除法的核心精神。
二、关系除法
一、一个应用的实例
我们有如下的两个关系,则NameSkill÷skill的现实意义就是在NameSkill中找出既会演讲又会踢腿的人。
Name | Skill |
虎哥 | 演讲 |
先辈 | 茶艺 |
虎哥 | 踢腿 |
小亮 | 空翻 |
skill |
演讲 |
踢腿 |
故NameSkill÷Skill的结果为
Name |
虎哥 |
二、基于现实意义的关系除法的算法
由上方例子可以得到关系除法:R1÷R2 的方法是:1、寻找两个集合的公共属性,找出R1中的所有能构成R2中的公共属性的组合的元组的组合的集合。然后对每个集合验证其中元组组合中的各元组除公共属性外其他属性是否相同,若相同其中任意一个元组除公共属性外的其他属性为结果中的一个元组。
三、例子二(这个例子给出了多余属性怎么处理):
Name | Skill | Gender |
虎哥 | 演讲 | 男 |
先辈 | 茶艺 | 男 |
虎哥 | 踢腿 | 男 |
小亮 | 空翻 | 男 |
Skill | ID |
演讲 | 1 |
踢腿 | 2 |
R2中R1没有的属性ID可以忽略,则R1÷R2相当于问会演讲和踢腿的人的姓名和性别是什么
R1÷R2为:
Name | Gender |
虎哥 | 男 |