如何在关系代数中表示ORDER BY子句
关系代数中ORDER BY语义的表示方法
首先明确基础规则:
- 经典理论中的关系代数操作面向无序集合设计,原生不提供排序操作——因为数学定义里的集合不存在元素的先后顺序。
- 工程化扩展的关系代数(也就是数据库实现实际采用的关系代数变体)中,专门新增了排序操作符来对应SQL的
ORDER BY子句,解决有序结果输出的需求。
具体操作符用法
扩展关系代数的排序操作符记作τ(发音tau,部分教材也直接记为sort),语法格式为:τ<排序属性 排序规则, 次排序属性 排序规则...>(输入关系)
- 排序规则写
asc代表升序,写desc代表降序,省略规则时默认按升序排列。 - 该操作不会修改输入关系的属性和元组内容,仅调整元组的输出顺序。
针对你的需求的写法
你需要返回Account表所有账户信息、按balance属性降序排列,对应的关系代数表达式直接写为:τ<balance desc>(Account)
补充:如果需要先做投影、筛选等其他操作再排序,只需要把其他操作的输出结果作为τ操作的输入即可。例如要筛选余额大于50000的账户、仅返回账号和余额字段再降序排列,表达式为
τ<balance desc>(π account_number, balance (σ balance > 50000 (Account)))
内容的提问来源于stack exchange,提问作者Primer Cielo
相关产品推荐
相关产品推荐

