Skip to content

SQLGraphExplorer‐5

Xin edited this page Dec 17, 2023 · 16 revisions

问题

问题的形式化表示

  1. 输入
    • 目标表中的某行(tuple)(不妨称之为t
    • 表示关系表达式(Relational Expression)的 sql 语句(不妨称之为E
  2. 输出
    • 可以找到t的逆像的“逆关系表达式”(不妨称之为InvE(t,E)
    • “逆关系表达式”( InvE(t,E) )的“执行结果”是:t 的逆像集Inv(t,E)=${t_1,t_2,...,t_n}$

最基本的数学知识(特别简单,用来解释上面)

逆像(not goal[x])

image-20231125195914676

逆函数(goal[√])

论文 1

链接Translating View Updates Using Inversion of Relational Algebra

这篇论文提及了逆关系表达式的公式,以及相关概念

定义 1

全集 U 中的元素名为属性, U 的每个属性 A 和一个域 $dom_A$ 相关联,也和一个变量集合 $var_A$ 相关联.

$$dom_A=\{v_A,v'_A,v^1_A...\}$$ $$var_A=\{x_A,x'_A,x^1_A,...\}$$ $$\sum_A = dom_A\cup var_A$$ $$dom=\bigcup_{A\in U}dom_A$$ $$var=\bigcup_{A\in U}var_A$$ $$\sum=dom \cup var$$

定义 2

在模式 X 之上的元组 t 是一个从 X 到 $\bigcup_{A\in X}\sum_A$ 的应用,形式化表示如下:

$$\forall A\in X,t(A)\in\sum_A \\\ t(A) \leftrightarrow t.A \\\ X \leftrightarrow sch(t) \\\ \epsilon : 空元组$$

定义 3

  • 一个定义在全集 U 上的数据库 $D$ 是一系列关系符号的集合 — ${R_1,R_2,...,R_n}$ .每个$R_i$ 和一个关系模式 $\mathcal{R}_i$ 相关联.
  • $D$ 的一个实例就是一系列关系实例的集合 — ${r_1,r_2,...,r_n}$ ,其中每个 $r_i$ 都是 $R_i$ 的一个实例.
  • 一个关系表达式 $E$ 可以根据一系列关系符号( $R_1,R_2,...,R_n$ )来定义 : $E(R_1,...,R_n)$ .该关系表达式的结果则可根据一系列关系实例($r_1,r_2,...,r_n$)来定义 : $\varepsilon(r_1,r_2,...,r_n)$

定义 4

  • k-元组 : $(t_1,t_2,...,t_n), t_i$ 是一个元组.
  • 一个 k-元组是一阶的,如果它只包含一个非空元组 : ($\epsilon,...,\epsilon,t,\epsilon,...,\epsilon$)

定义 5

  • 一个基本限制是一个布尔表达式:
  • $$c = \top(true)/-(false)/x\theta y \\\ \theta \in \{<,\le,>,\ge,=\} \\\ x,y \in \sum$$
  • 一个限制是一个复杂布尔表达式 :
  • $$C=c_1\wedge c_2\wedge ...\wedge c_n \\\ c_i是一个基本限制$$

定义 6

一个限制 k-元组(c-k-元组)可表示为:

$$P=[N,C] \\\ N是一个k元组, C是N上的一个限制$$

定义 7

逆像集合的定义如下:

$$E(R_1,R_2,...,R_n)是一个关系表达式 \\\ t是在sch(E)上的一个元组 \\\ t的逆像集Inv(t,E)=\{t_1,t_2,...,t_n\}满足下面两式 \\\ \varepsilon(\{t_1\},\{t_2\},...,\{t_n\})=\{t\} \\\ 如果t_i\ne \epsilon,则\varepsilon(\{t_1\},...,\{t_{i-1}\},\{\},\{t_{i+1}\},...,\{t_n\})\ne\{t\}$$

定义 8

  • 四种操作符(projection, extension, append, completion)

操作数是 c-k 元组

$$P=[(t), C] 是一个一阶c-k元组,其中t在\mathcal{R}上定义 \\\ \mathcal{R}是一个关系模式$$ $$proj(P,\mathcal{R'})=[(t.\mathcal{R'}),C] \\\ 关系模式\mathcal{R'}满足\mathcal{R'}\subseteq \mathcal{R}$$ $$ext(P,\mathcal{R'})=[(N\overline{N}),C] \\\ 关系模式R'满足R\subseteq \mathcal{R'} \\\ N=(t),N'=(t'),t'是定义在\mathcal{R'}-\mathcal{R}上变量的元组$$ $$P\odot P'=[(N,N'),C\wedge C'] \\\ P=[N,C],P'=[N',C'] \\\ N=(t_1,t_2,...,t_m),N'=(t'_1,,t'_2,...,t'_n) \\\ (N,N')=(t_1,t_2,...,t_m,t'_1,t'_2,...,t'_n)$$ $$P\diamond P'=\{[(N,\epsilon),C],[(\epsilon,N'),C']\} \\\ =\{[(t_1,t_2,...,t_m,\underbrace{\epsilon,...,\epsilon)}_n,C],[(\underbrace{\epsilon,...,\epsilon}_m,t'_1,t'_2,...,t'_n),C']\}$$

操作数是 c-k 元组集合

$$\mathcal{P},\mathcal{P'}是两个c-k元组集合,\mathcal{R}是一个关系模式 \\\ Proj(\mathcal{P,R})=\{proj(P,\mathcal{R})|P\in \mathcal{P}\} \\\ Ext(\mathcal{P,R})=\{ext(P,\mathcal{R})|P\in \mathcal{P}\} \\\ \mathcal{P}\odot\mathcal{P'}=\{P\odot P'|P\in \mathcal{P},P'\in\mathcal{P'}\} \\\ \mathcal{P}\diamond\mathcal{P'}=\{P\diamond P'|P\in \mathcal{P},P'\in \mathcal{P'}\}$$

定义 9

$E$ 是一个关系表达式,$\mathcal{P}$ 是一个一阶 c-k 元组集合。$\widetilde{E}(\mathcal{P})$ 表示 $\mathcal{P}$ 相对于 $E$ 的逆,其定义如下:

$$\widetilde{E}(\mathcal{P})= \begin{cases} \widetilde{E}(\mathcal{P})=\mathcal{P}, & E=R \\\ \widetilde{E}(\mathcal{P})=\widetilde{E'}(\{\ [N,C\wedge\overline{\Gamma_i}]\ |\ [N,C]\in\mathcal{P},\overline{\Gamma_i}\in\overline{\Gamma}\}), & E=\sigma_\Gamma(E') \\\ \widetilde{E'}(Ext(\mathcal{P},sch(E'))), & E=\Pi_X(E') \\\ \widetilde{E'}(Proj(\mathcal{P},sch(E')))\odot\widetilde{E''}(Proj(\mathcal{P},sch(E''))), & E=E'\bowtie E'' \\\ \widetilde{E'}(\mathcal{P})\odot\widetilde{E''}(\mathcal{P}), & E=E'\cap E'' \\\ \widetilde{E'}(\mathcal{P})\diamond \widetilde{E''}(\mathcal{P}), & E=E'\cup E'' \end{cases} \\\ R是关系符号, \\\ E'和E''是一个关系表达式, \\\ \Gamma=\Gamma_1\vee\Gamma_2\vee...\vee\Gamma_k, \\\ \overline{\Gamma}=\{\overline{\Gamma_1},...,\overline{\Gamma_k}\}$$

值得注意的是:

  • 论文的原文对于 $\overline{\Gamma}$ 的定义非常模糊,也没有给出具体求解的公式或算法。所以这块比较麻烦。。。

  • sch(E) 也是如此

例子

--sch(R1)=AB ; sch(R2)=BC
SELECT A,C FORM R1 JOIN R2 WHERE B=b

$E=\Pi_{AC}(\sigma_{B=b}(R1\bowtie R2))$, 假设执行的结果是$\mathcal{P}={[(ac),\top]}$ ,推导过程如下

$$\begin{align} & \widetilde{E}(\mathcal{P}) \\\ & =\widetilde{E'}(Ext(\mathcal{P},sch(E'))) & E'=\sigma_{B=b}(R1\bowtie R2) \\\ & =\widetilde{E'}(Ext([(ac),\top],ABC)) & \mathcal{P}=\{[(ac),\top]\},sch(E')=ABC \\\ & =\widetilde{E'}([(ax_Bc),\top]) \\\ & =\widetilde{E''}[(ax_Bc),\top \wedge x_B=b] & E''=R1\bowtie R2 \\\ & =\widetilde{R1}(Proj(\mathcal{P'},sch(R1)))\odot\widetilde{R2}(Proj(\mathcal{P'},sch(R2))) & \mathcal{P'}=[(ax_Bc),x_B=b] \\\ & =\widetilde{R1}(Proj(\mathcal{P'},AB))\odot\widetilde{R2}(Proj(\mathcal{P'},BC)) & sch(R1)=AB,sch(R2)=BC \\\ & =\widetilde{R1}([(ax_B), x_B=b])\odot\widetilde{R2}([(x_Bc),x_B=b]) \\\ & =[(ax_B,x_Bc),x_B=b] \end{align}$$
-- 假设目标表为R3,sch(R3)=AC,输入tuple(行)为ac
SELECT A FROM R1 WHERE R1.A=a AND R1.B=b
SELECT C FROM R2 WHERE R2.B=b AND R2.C=c

论文 2

Inverting relational expressions: a uniform and natural technique for various database problems

论文 1 的研究并不针对逆关系表达式,仅是用到了这个概念。于是顺着论文 1 的参考文献,我找到了论文 2

关系

  • 关系 r 是从一组属性(A)到某个域(D)的函数(元组)集合。为了简单,我们假设一个常见的(无限)域
  • 关系类型:指的是关系的属性集合$\alpha(r)$
  • 关系名:具有相关类型的符号 R
  • 关系实例:如果 r 的类型等于 R 的类型,则关系 r 是关系名 R 的实例
  • 关系操作符:projection, join, union, selection
  • 关系表达式:由关系名关系操作符构成的格式良好的表达式
  • 关系表达式类型:该表达式的结果的属性集合$\alpha(f)$
  • 数据库模式:一系列关系名的集合{R1,R2,.. ..,Rn}

表及其属性

  • 表:表是允许作为条目的变量和常量的关系
  • 变量 V:是一个可数无限的符号集
  • X 类型的表:指的是元组的任何有限集合
  • 赋值 v:任何 V->D 的映射, 赋值能以标准的方式在集合 D(对于 D 中的所有 c,v(c)=c)和元组和表的集合上扩展
  • Rep(T):是一个函数,该函数为表 T 分配如下一组关系 ${s\ |\ \exist v,v(T)\sube s}$
  • 表是“扩展”的关系,在文献IL11中引入,以表示不完整的信息。应该将表格视为表示关系集的一种手段

表具有如下三个基本属性:

逆关系表达式和表

在文献IL2中,作者证明了一个用表格表示关系式逆的一般定理,这里给出了只有一个关系符号的表达式的特例

定理 1

  • f 是一个 PJ-expression,T 是一个表格,那么存在一个表格 U 使得:
    • $Rep(U)=f^{-1}(Rep(T))={s:f(s)\in Rep(T)}$
  • 一般而言存在很多这样的表 U,通过文献IL2中的算法,我们可以构造出$f^{-1}(T)$,即 U
  • 文献IL2中提出的计算$f^{-1}(T)$的算法是一个类似于 Tableau 构造的递归过程:
    1. 如果 $f=g\bowtie h$ ,则 $INVERSE(f)=INVERSE(g,\pi_{\alpha(g)}(T))\cup INVERSE(h,\pi_{\alpha(h)}(T))$
    2. 如果 $f=\pi_Yg$ ,通过添加相关属性的新列来扩展 T,即 $INVERSE(f)=INVERSE(g,Y')$

关系表达式和表格

关系$\Omega$-表达式集合可以在表集合上正确扩展,只要对于任意表格 T 和任意关系$\Omega$-表达式 f,都有 $Rep(f(T))\equiv_{\Omega}f(Rep(T))$

  • $f(T)$:f 的结果
  • $f(Rep(T))={f(s):s\in Rep(T)}$
  • $x\equiv_\Omega y$:表示两个关系集合 x,y 是$\Omega$-等价的,即对于任意$\Omega$-关系表达式 f,$\bigcap f(x)=\bigcap f(y)$

论文 3

Incomplete Information in Relational Databases

论文 2 中有一些没有提及的相关背景理论,其中很重要的一部分就是这篇文章(貌似引用还蛮多的?),于是我读了该论文作为一个补充。

基础定义

关于关系数据模型的相关概念。

  • $\mathscr{U}$ :一个固定的、有限的集合
  • A,B,C:一般指代$\mathscr{U}$的属性
  • X,Y,Z:一般指代属性集合。例如,属性集合{A,C}通常写做 AC
  • D(A):$A\in\mathscr{U}$,D(A)是 A 的属性域。我们通常假设$|D(A)|\ge2$。通常写做$D=\bigcup_{A\in\mathscr{U}}D(A)$
  • 常量:D 中的元素通常被称为常量
  • a,b,c:D(A),D(B),D(C)的元素通常写做 a,b,c
  • X 上的元组:指的是一个映射 t,$\forall A\in X, t(A)\in D(A)$
  • 元组:通常表示为与属性相关的值字符串
  • t[AC]:表示 t 对 Y 的限制
    • 例子:假设 t 是一个 X 上的元组,t=abc,X={ABC},Y={AC},那么 t[Y]=t[AC]=ac。
  • X 上的关系:指 X 上的任何有限元组集
  • 类型:t 是 X 上的元组,r 是 X 上的关系。
    • 元组类型:$\alpha(t)=X$
    • 关系类型:$\alpha(r)=X$
  • 多重关系相关概念:
    • 多重关系:$<r_1,r_2,...,r_n>$
    • 多重关系的类型:$<X_1,X_2,...,X_n>$,($r_i$是$X_i$上的关系)。
    • 对于两个具有相同类型的多重关系 $\pmb{r}=&lt;r_1,...,r_n&gt;$, $\pmb{s}=&lt;s_1,...,s_n&gt;$ 。如果 $\forall r_i\sube s_i,1\leq i\leq n$,那么$\pmb{r}\sube\pmb{s}$
    • 所有多重关系的集合写做 $\mathscr{R}$
    • $\mathscr{R}(X_1,...,X_n)=&lt;X_1,...,X_n&gt;$:表示所有多重关系的类型集合
    • $\mathscr{R}(X)$:类型 X 的所有关系的集合
  • 对于一个多重关系集合$\mathscr{X}$,如果$\forall \pmb{r},\pmb{s}\in\mathscr{X},\alpha(\pmb{r})=\alpha(\pmb{s})$,那么我们成$\mathscr{X}$是齐次的。
  • 而所有的齐次多重关系组成的类,我们用$\mathscr{I}$表示,$\mathscr{I}$的元素一般用字母$\mathscr{X},\mathscr{Y},\mathscr{Z}$表示
  • 常见的关系运算符:
    • Projection: $\pi_Y(r)={t[Y]:t\in r}(Y\sube\alpha(r))$
    • Selection:$\sigma_E(r)={t\in r:E(t)=true}$
      • E 表示选择条件,它是一个表达式,其基本算子包括 $(A=a),(A=B)$,其中$A,B\in \mathscr{R},D(A)=D(B),a\in D(A)$
    • Union:$r\cup s$,其中$\alpha(r)=\alpha(s)$
    • Join:$r\bowtie s = {t:\alpha(t)=X\cup Y\wedge t[X]\in r\wedge t[Y]\in s }$,其中$X=\alpha(r),Y\in\alpha(s)$
    • Difference:$r-s=r\backslash s$
    • Renaming:$s^A_B(r)={s^A_B(t):t\in r}$,其中$A\in\alpha(r),B\in\mathscr{U}\backslash\alpha(r),D(A)=D(B)$
  • $\Omega$-关系表达式:由关系名和关系运算符构建的格式良好的表达式。例如:$\sigma_{A=a}(R_1)\bowtie\pi_{AB}(R_2)$是一个$PS^+J$-关系表达式
  • 多关系$\Omega$-表达式:多个$\Omega$-关系表达式序列,$\pmb{f}=<f_1,...,f_k>$
  • 关系表达式的类型化:假设与$\pmb{f}$相关联的是序列$<R_1,...,R_n>$,那么:
    • $\pmb{f}$参数类型定义:$\alpha(\pmb{f})=<\alpha(R_1),...,\alpha(R_n)>$
    • $\pmb{f}$结果类型定义:$\beta(\pmb{f})=\alpha(\pmb{f}(\pmb{r}))$

表示系统

  • 表示系统:一个三元组——$<\mathscr{T},Rep,\Omega>$

    • $\mathscr{T}:$多表集合
    • $Rep$:一个从多表集合齐次多重关系的映射,$\mathscr{T}\rightarrow\mathscr{I}$
    • $\Omega$:关系操作符的集合
  • 假设多重关系集合$\mathscr{X}\in\mathscr{I}$,$\pmb{f}$是一个$\Omega$-表达式,两者满足条件$\alpha(\pmb{f})=\alpha(\mathscr{X})$,于是我们有:

    • $\pmb{f}(\mathscr{X})={\pmb{f}(\pmb{r}):\pmb{r}\in \mathscr{X}}$
    • 这样,任何$\Omega$-表达式$\pmb{f}$都能以自然方式被处理为映射$\pmb{f}:\mathscr{I}\rightarrow\mathscr{I}$
    • 。。。。。。看晕了这块,先跳了
  • 给定一个多关系表达式$\pmb{f}$和一个多重关系集合$\mathscr{X}\in\mathscr{I}$,二者满足$\alpha(\pmb{f})=\alpha(\mathscr{X})$,我们可以定义 $\mathscr{X}$中的 f-信息

    • $\mathscr{X}^{\pmb{f}}=\bigcap\pmb{f}(\mathscr{X})$

Clone this wiki locally