知识卡片
哪些运算符是基本的:"基本"与"有用"的区别
内容
并非本章讨论的所有关系代数运算符都是不可再分的基本运算符——很多运算符可以 用其他更少数量的运算符组合定义出来。一个可行的最小基本集合是{限制,投影,连接, 并,差},也可以把其中的”连接”换成”积”(因为[[自然连接的精确定义及交与积是连接 的特例]]中已说明连接和积可以互相定义)。特别值得注意的是RENAME这个用起来 非常自然、几乎每章都要用到的运算符,居然也不是基本的——它完全可以用其他基本 运算符组合表达出来。这个事实揭示了一条容易被混淆的原则:”基本”(能否被更少的 运算符组合定义出来)和”有用”(在日常表达查询时是否好用、是否值得单独拥有一个 名字)根本是两个不同维度的问题:RENAME不基本,但依然是极其有用的运算符(正如 [[类型推理规则与RENAME运算符的必要性]]中说明的那样,很多需要属性重命名才能 成立的表达式如果没有RENAME会写得极其笨拙)。这个区分对判断”某个新引入的运算符 到底有没有价值”很有启发:一个运算符即便理论上”可以被别的运算符替代”,也不代表 它不值得作为一等公民存在——是否值得独立命名,取决于它能否显著简化表达、提升 可读性,而不完全取决于它在纯理论最小集合意义下是否”必不可少”。
参考来源
- 位置:《SQL与关系数据库理论——如何编写健壮的SQL代码》第6章"SQL和关系代数
I:原始运算符"6.7节"哪些运算符是基本运算符"(源文件:OEBPS/text00066.html)
- 结论依据:原文明确"并不是所有这些运算符都是基本的——它们中的一些可以通过
其他的运算符来定义。一种可能的基本集合是{限制,投影,连接,并,差}……你可能
会惊叹于这里没提到'更名'。事实上,更名确实并不是基本的……这里的讨论说明了,
'基本'和'有用'是有区别的!当然,即使更名运算符不是基本的,但它仍然是一个
有用的运算符"。
- 原始内容:一种可能的基本集合是{限制,投影,连接,并,差}……'基本'和'有用'
是有区别的!当然,即使更名运算符不是基本的,但它仍然是一个有用的运算符。