21、数据库架构中的树投影必要性及状态构建

数据库树投影与状态构建解析

数据库架构中的树投影必要性及状态构建

1. 基础概念
  • 关系数据库与运算符
    • 关系模式 R 是属性的有限子集,数据库模式 D 是一组命名的关系模式,可表示为 (R1, ..., Rn)
    • 数据库状态 D 中,每个 Ri 是对应关系模式的关系。
    • 元组匹配:若关系模式 R 上的元组 r 和关系模式 S 上的元组 s R∩S 的所有属性上常量相同,则它们匹配。
    • 自然半连接:关系 R S 的自然半连接 R >< S 是包含 R 中所有与 S 中某些元组匹配的元组的关系,是一种缩减运算符。
    • 连接缩减(JR)状态:对于数据库状态 D 中的每个关系 R ,若 R = ΠR ×S∈D S ,则 D 是连接缩减状态。
    • 半连接缩减(SJR)状态:若 D 中每对关系 R S 都兼容(即 R 中的每个元组都与 S 中的一个元组匹配,反之亦然),则 D 是半连接缩减状态。
  • 树和循环模式
    • 无向图:无自环的图。子图 G′ = (V ′, E′) 是无向图 G = (V, E) 的子图,满足 V ′ ⊆V E′ ⊆E
    • 对于数据库模式 D ,若图 G 的节点与 D 的关系模式一一对应,对于属性 A ∈U(D) ,若包含 A 的关系模式(节点)诱导的 G 的子图是连通的,则称 G A - 连通的;对于属性集 X ,若对所有 A ∈X G 都是 A - 连通的,则称 G X - 连通的;若 G U(D) - 连通的,则称 G D 的质量图;若质量图 G 是树,则称 G 是质量树。
    • 树模式:若 D 存在一个质量图是树,则 D 是树模式(等价于无环超图、无环方案);否则, D 是循环模式(等价于循环超图、循环方案)。
    • 邻接图:数据库模式 D 的邻接图 AG(D) D 的属性为节点,若两个属性在 D 的一个关系模式中同时出现,则它们通过一条边连接。
    • 团:若 AG(D) n 个节点上的团,则循环数据库模式 D 是大小为 n 的团。
    • 属性环(Aring):若数据库模式 D 与模式 A = ({A1, A2}, {A2, A3}, ..., {An−1, An}, {An, A1}) 同构,则 D 是大小为 n 的属性环,可简写为 A = (A1A2 ... An−1An) ,所有属性环数据库模式都是循环模式。
    • 投影:若对于数据库模式 D 中的所有关系模式 R ,都存在数据库模式 E 中的关系模式 S 使得 R ⊆S ,则称 D E 的投影,记为 D ≤E 是传递关系。
    • 树投影:数据库模式 TP 是数据库模式 E 关于 D 的树投影(TP),若 U(TP) = U(D) TP 是树模式且 D ≤TP ≤E
概念 定义
关系模式 R 属性的有限子集
数据库模式 D 一组命名的关系模式
自然半连接 R >< S 包含 R 中所有与 S 中某些元组匹配的元组的关系
连接缩减(JR)状态 R = ΠR ×S∈D S
半连接缩减(SJR)状态 每对关系都兼容
树模式 存在质量图是树
循环模式 不存在质量图是树
邻接图 AG(D) D 的属性为节点,属性同时出现则有边连接
AG(D) n 个节点上的团
属性环(Aring) 与特定模式同构
投影 D ≤E D 中所有 R 存在 E S 使 R ⊆S
树投影 TP U(TP) = U(D) TP 是树模式且 D ≤TP ≤E
2. 树投影示例

考虑以下数据库模式:
- D = ({A, B}, {B, C}, {C, D}, {D, E}, {E, F}, {F, A}) ,是大小为 6 的属性环,因此是循环模式。
- TP = D ∪({C, D, E, F}, {F, A, B, C}) ,是树模式。
- E = ({A, D}, {F, A, B, C}, {C, D, E, F}) ,由于包含属性 {A, C, D} 上的属性环,所以是循环模式。
因为 D ≤TP ≤E ,所以 TP E 关于 D 的树投影。

3. 构建 (k - 1) - 完全 k - 部图
  • 定义
    • 无向 k - 部图:无向图 G = (V, E) ,其中 V = V1 ∪... ∪Vk Vi 两两不相交,称为图的分区,且同一分区内的节点之间没有边。
    • (k - 1) - 完全 k - 部图:满足两个条件:一是图中不存在大小为 k 的团作为子图;二是 E 中的每条边 e 恰好是 (k - 2)! 个大小为 (k - 1) 的团的一部分,每个团的顶点来自 (k - 1) 个分区(即边 e 的两个分区加上 (k - 3) 个额外分区)。
  • 构建算法
    • 输入 k ,构建 (k - 1) - 完全 k - 部无向图 Gk 的算法 Construct(k) 步骤如下:
      1. 对于 i = 1, ..., k ,令 Vi = {(i, 1), ..., (i, (k - 1))} ,即每个分区 i (k - 1) 个不同的顶点,形式为 (i, b)
      2. 对于每对不同的分区 Vi Vj i < j ),对于 u = 1, ..., (k - 1) ,对于 v = 1, ..., (u - 1), (u + 1), ..., (k - 1) ,形成无向边 {(i, u), (j, v)} ,即连接不同分区的每对顶点,除非它们的形式为 (i, b) (j, b) (相同常量 b )。
graph TD;
    A[开始] --> B[初始化分区 Vi];
    B --> C[遍历不同分区对 Vi 和 Vj];
    C --> D[遍历 u 和 v];
    D --> E[形成边 {(i, u), (j, v)}];
    E --> F{是否完成所有分区和顶点遍历};
    F -- 否 --> C;
    F -- 是 --> G[结束];
  • 算法正确性证明
    • 引理 2:由 Construct(k) 形成的图 Gk = (V k, Ek) 不包含形式为 {(a, b), (c, b)} 的边。证明:算法的两个 for 循环明确禁止构建这样的边。
    • 引理 3:算法 Construct(k) 构建了一个 (k - 1) - 完全图 Gk = (V k, Ek)
4. 数据库状态构建与树投影的关系
  • 数据库状态编码 :图 Gk 编码了一个 2 - 属性(即 2 列)关系状态的数据库状态。 Gk 中的边对应数据库状态中的元组,形成关系状态 Rmn ,其关系模式为 Rmn ,属性为 Am An 。令 Dk 是由所有这些关系状态组成的数据库状态,其数据库模式为 Dk ,由于 AG(Dk) 是团,所以 Dk 是团。
  • 查询计算问题 :假设要计算 Dk 中所有关系状态在一组属性 X ≠ U(Dk) 上的自然连接投影。可以使用带有连接和投影语句的程序 P ,构建扩展数据库状态,应用半连接循环达到 SJR 状态,然后从包含 X 的关系状态中投影出所需结果。
    • 若扩展数据库模式 E 包含关系模式 U(Dk) ,计算是正确的,因为扩展状态包含 Dk 的所有原始关系状态。
    • E 不包含 U(Dk) ,但 P 进行了“最大努力”,即扩展模式 E 包含所有基数为 (k - 1) 的关系模式。
    • 由于引理 3, Gk 的每个 (k - 1) C = (Vc, Ec) 为关系状态 S 提供常量, S 的模式是 Vc (k - 1) 个顶点的分区, S 中属性的常量就是 Vc 中的 (k - 1) 个顶点本身。所有初始数据库元组(即 Ek 中的边),其属性包含在关系模式 S 中,将在构建相应关系 S 的连接操作和半连接循环中“存活”,并在 S 中产生最终状态元组。
    • 然而, E 的构建并没有解决初始问题,因为最终得到的所有关系状态都不为空,从这个最终状态推导出 X 的结果元组,但实际上所有初始关系的连接为空。假设所有初始关系的连接不为空,考虑连接结果中的元组 s = (a1, ..., ak) ,每对 (ai, aj) 必须是 Gk 中的边,这意味着 Gk 中存在大小为 k 的团,与引理 3 矛盾。
  • 定理 1 :设 k - 部图 Gk Construct(k) 形成, Dk 是数据库状态,其中每对属性(分区)形成一个关系模式,元组是 Gk 中连接相应分区节点的边。若数据库模式 E 解决了 Dk ,则 E 必须包含关系模式 U(Dk)
5. 一般构造定理
  • 二进制数据库模式 :若数据库模式 D 中的所有关系模式都由两个属性组成,则 D 是二进制数据库模式。可以将数据库模式 D 的邻接图 AG(D) 视为一个派生的二进制数据库模式,其每个关系模式由 AG(D) 中边的顶点(属性)组成。
  • 定理 2 :设 D 是循环数据库模式, GD 是从 AG(D) 派生的二进制数据库模式, DG GD 的数据库状态,若要在数据库状态 DG 上解决 GD 必须形成关于 GD 的树投影,则可以按以下方式构造数据库状态 D :对于 D 中的每个关系模式 R ,通过连接 DG 中所有属性都包含在 R 中的关系状态来构造 R 的状态。这样,要在状态 D 上解决 D 必须形成关于 D 的树投影。

数据库架构中的树投影必要性及状态构建

6. 属性环(Aring)数据库模式
  • 重复语句与同义词
    • 对于关系模式 {A} 上的关系 R ,引入一种新的语句: (duplicate) RNEW ←R.AA′ ,其中 RNEW 是新的关系名, A′ 是新的属性, RNEW = {A, A′} RNEW 的关系模式,且之前没有涉及属性 A 的重复语句。该语句的语义是: R 中的每个元组 t 会产生 RNEW 中的一个元组 t′ t′ 中分配给 A′ 的常量与 t 中分配给 A 的常量相同, A′ 称为 A 的同义词。
    • 对于数据库模式 D ,定义有向图 G(D) ,其节点是 U(D) ,边的形式为 (A, B) ,其中 B A 的同义词。若 A = B 或在 G(D) 中存在从 A B 的路径,则属性 B 是属性 A 的传递同义词。若程序 P 允许使用重复语句,则称 P 是支持重复语句的。
    • 例如,对于关系模式 {A} 上的关系状态 R = {(1), (4), (5)} ,执行重复语句 RNEW ←R.AA′ 后, RNEW = {(1, 1), (4, 4), (5, 5)}
  • 标准状态
    • 对于属性环 A = (A1, ..., An) 的数据库状态 A ,若关系模式 S1 = {A1, A2} 的关系状态(称为切换关系)为 {(0, 1), (1, 0)} ,其他关系模式的关系状态为 {(1, 1), (0, 0)} ,则称该数据库状态为 A 的标准状态,且该状态下所有关系的连接为空。
  • 相关定理
    • 声明 :设 A = (A1 ... An) 是大小为 n 的属性环数据库模式, A 是其标准状态,若支持重复语句的程序 P 创建的数据库模式 D 能解决 A ,则程序 P 必须形成一个关系状态 R ,其模式 R 包含属性环 A 中连续属性 Ai, Ai+1 Ai+1+1 1 ≤i ≤n n + 1 = 1 )的三个传递同义词。
    • 定理 3 :设 A 是大小为 n 的属性环模式, A 是其标准状态,若支持重复语句的程序 P 创建的数据库模式 D 能解决 A ,则存在一个树模式 TP ,使得 U(TP) = U(A) A 包含在 TP 中,且对于 TP 中的每个关系模式 R D 中存在一个关系模式 S ,使得 R 的每个属性在 S 中有一个传递同义词属性(即 TP D 关于 A 的树投影)。证明过程是对 n 进行归纳,且不妨假设在 P 的每个语句后应用半连接循环直到稳定,这不会影响最终结果。
    • 由此可知,若程序 P 完全不使用重复语句,解决属性环 A 的标准状态 A 就必须构建关于 A 的树投影。
概念 定义
重复语句 RNEW ←R.AA′ ,产生新关系 RNEW A′ A 的同义词
传递同义词 在有向图 G(D) 中, A = B 或存在从 A B 的路径
标准状态 关系模式 S1 = {A1, A2} {(0, 1), (1, 0)} ,其他为 {(1, 1), (0, 0)}
定理 3 结论 支持重复语句的 P 解决 A 时存在树投影 TP
7. 结论
  • 对于邻接图是团或简单循环的数据库模式 D ,构建了相应的数据库状态,使得该数据库状态中所有关系的连接为空。但如果使用一个包含投影和连接语句的直线程序,接着进行半连接循环直到收敛,在扩展状态(和模式)的过程中不形成树投影,就无法将状态完全缩减为空关系状态。
  • 这为这类模式提供了明确的状态构造,展示了形成树投影的必要性。这种构造具有理论意义,也可能在测试查询处理器方面有实际应用。通过证明可知,循环数据库模式的状态构造可从由该数据库模式派生的二进制数据库模式的状态构造中获得。
graph LR;
    A[循环数据库模式 D] --> B[派生二进制数据库模式 GD];
    B --> C[GD 的状态构造 DG];
    C --> D[D 的状态构造 D];
    D --> E[解决 D 需树投影];

综上所述,树投影在解决特定数据库模式的查询问题中起着关键作用,无论是从理论分析还是实际应用的角度,都值得进一步深入研究和探索。在实际操作中,根据不同的数据库模式和查询需求,合理运用树投影和相关的状态构造方法,能够提高查询处理的效率和准确性。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值