琐碎的连接依赖

Trivial join dependency

我很难理解如何 "work" 加入依赖项,我想问一个问题来帮助我自己弄清楚事情。

这是来自 Wikipedia 的简单定义:

A table T is subject to a join dependency if T can always be recreated by joining multiple tables each having a subset of the attributes of T.

一个简单的连接依赖定义如下:

If one of the tables in the join has all the attributes of the table T, the join dependency is called trivial.

我的问题是:如果我们将关系 R 分解为无损分解,是否有可能 R 的每个连接依赖项都可以是平凡的连接依赖项? 一个例子会很棒。

If we decompose a relation R into a lossless decomposition, is it possible that the join dependency\ies of R would be a trivial join dependency\ies?

如果你的意思是,如果我们无损地分解关系 R 是否有可能 R 的所有 JD 都是平凡的:是的。

只要 R 的所有JD 都是平凡的,就可以无损分解它,因为根据定义,JD 只是对无损分解的描述。并且存在这样的关系。每个 R,调用其属性集 S,满足 JDs *(S,S), *(S,S,S) 等。有些不满足其他 FDs。有的满足了别人,也有的微不足道。

例如:这个R只满足*(S,S), *(S,S,S)等:

x   y
1   2
5   2
5   4

例如:说 S = {x,y} 并且 FD {x}->{y} 成立,所以 *({x},S} 成立。但是说 JD *({x},{y} ) 不成立。那么 JD 可以将集合联合到 S 的唯一方法是如果 S 是其中之一。所以 R 只有微不足道的 JD。但不仅仅是那些只使用 S 的 JD。

x   y
1   2
5   2
6   4

如果你的意思是,如果我们将关系 R 无损地分解 为更小的组件 是否有可能 R 的所有 JD 都是微不足道的:不。因为根据定义,一个平凡的 JD 有一组是 R 的所有属性,即有一个组件是 R,它不会分解成小于 R 的组件。