首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Vue3+Django4全新技术实战全栈项目(慕K无密)

Vue3+Django4全新技术实战全栈项目(慕K无密)

下载看水印

数据重排(Enforcer)

数据重排一般不改变包语义下关系的逻辑属性, 只改变物理属性(排序, 分布).

Limit是一个例外, 其可以将包中元组按照 offset 选取最多 num 个.

𝐸𝑛𝑓𝑜𝑟𝑐𝑒𝑟𝑑𝑖𝑠𝑡,𝑐𝑜𝑙𝑙,𝑙𝑖𝑚𝑖𝑡,𝑜𝑓𝑓𝑠𝑒𝑡(𝑒)

细化的 Enforcer:

𝐿𝑖𝑚𝑖𝑡𝑛𝑢𝑚,𝑜𝑓𝑓𝑠𝑒𝑡(𝑒)

𝑆𝑜𝑟𝑡𝑐𝑜𝑙𝑙(𝑒)

𝐸𝑥𝑐ℎ𝑎𝑛𝑔𝑒𝑑𝑖𝑠𝑡(𝑒)

在后续暂不讨论数据重排相关算子, 因为包语义无法体现数据重排中的排序和分布属性.

投影与过滤(Project/Filter)

Filter 算子

𝜎𝑝(𝑒):={𝑥|𝑥∈𝑒,𝑝(𝑥)}𝑝 是个谓词(predicate),返回布尔值作为结果, 注意 𝑝 中可以嵌套关系算子等.

计算过程为从 e 中取出逐行元组, 以谓词 p 求值结果过滤, 过滤剩余的多个元组构造为一个新的包.

𝑝 可以嵌套子查询以用于exists等场景,如𝜎𝑒1(𝑡)≠∅𝑏,𝑡∈𝑒2(𝑒2) 表示只保留 e_2 中满足 e1 表达式的元组

Project 类算子

扩展投影主要是指投影(Projection), 映射(Map) 两部分, 去重(Distinct) 和 重命名(Rename) 也与扩展投影相关, 所以统一归为 Project 类算子.

在一般的数据库教材中, 扩展投影是一个算子同时最投影和标量函数计算.

这里沿用BQC定义的两个算子, 分别表达投影和计算.

Project投影选择部分属性令 𝐴={𝑎1,...𝑎𝑛} 为属性集Π𝐴(𝑒):={[𝑎1:𝑥.𝑎1,...,𝑎𝑛:𝑥.𝑎𝑛]|𝑥∈𝑒}𝑏

计算过程为从 e 逐行取出元组, 按照属性集选取值, 构造成元组, 并将新构造的多个元组构造为一个新的包.

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OAvg9OQk4RXvwSsgrRHdrnIA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券