返回
摘要
En 中文
摘要SQL是世界上最流行的声明式语言,构成了价值数十亿美元的数据库行业的基础。尽管SQL已被标准化,但其完整标准基于模糊的自然语言而非形式化规范。商业SQL实现以不同方式解释标准,因此,对于相同的输入数据,同一查询在不同SQL系统上运行时可能产生不同结果。即使对于特定系统,对SQL所有常用功能进行机械检查的形式化仍是一个开放问题。缺乏被充分理解的正式语义,使得验证数据库实现的有效性变得非常困难。尽管过去曾为SQL的部分子集设计了形式语义,但它们通常不支持集合和包操作、横向连接、嵌套子查询,以及关键地,空值。空值以类似于其他编程语言中的空指针或副作用的方式,深刻地复杂化了SQL的语义。由于某些SQL查询在没有空值时是等价的,但在应用于包含不完整数据的表时会产生不同结果,忽略空值的语义能够证明在真实数据库中不成立查询等价性。一个支持上述所有特性的SQL形式语义直到最近才被提出。在本文中,我们报告了我们使用Coq证明助手实现的SQL语义机制,该机制涵盖了集合/包操作、横向连接、嵌套子查询和空值,并描述了关键元理论性质的验证。此外,我们能够使用相同的框架形式化一个平坦关系演算(包含空值)的语义,并展示了其范式到SQL的认证转换。
期刊
暂无期刊信息
机构
暂无机构信息
引用论文
暂无论文信息

