📜  在关系中查找额外的函数依赖

📅  最后修改于: 2021-09-28 09:55:12             🧑  作者: Mango

函数依赖只是数据库中两组属性之间的约束。函数依赖用于规范化。函数依赖用箭头 → 表示。A 对 B 的函数依赖用 A → B 表示。函数依赖在找出好的和坏的数据库设计之间的差异方面起着至关重要的作用。

A→B

以上功能依赖的发音为:

  1. A决定B
  2. A 在功能上决定 B
  3. B 在功能上依赖于 A
  4. 对于给定的 A 值,我们可以从函数上确定 B 的值。

A 和 B 可以是一组属性,它们不必总是单个属性。

Example : 
AB→B,  A→ ACB etc. 

对于给定的关系,根据数据库设计的语义,我们在大多数情况下也会获得一组功能依赖。

最有趣的是,我们可以通过对给定的函数依赖应用一些规则来产生更多额外的函数依赖。

例子:
关系 R(AB) 由函数依赖 F 给出:{ A→B, B→A }。找出可从关系 R 上的给定函数依赖导出的附加函数依赖。

解释:

步骤 1:找出可能的函数依赖集:
假设函数依赖为 A→B。函数依赖的左侧是 A ,右侧是 B 。
因此,我们可以在任一侧拥有的有效属性如下所示:

  \begin{center} \begin{tabular}{ |c|c|c| }   \hline  Left &  & Right \\   \emptyset &  & \emptyset \\   A & * & A \\   B &  & B \\   AB &  & AB \\  \hline \end{tabular} \end{center}

因此,可能的函数依赖数 = 4*4 = 16

步骤 2:列出所有可能的函数依赖关系 R 的 2 个属性 AB:

以下是关系 R 的 2 个属性 AB 的所有 16 个可能的函数依赖项的列表:

  \begin{center} \begin{tabular}{ |c|c|c| }   \hline    \emptyset & \rightarrow & \emptyset \\   \emptyset & \rightarrow & A \\   \emptyset & \rightarrow & B \\   \emptyset & \rightarrow & AB \\  \hline \end{tabular} \end{center}

  \begin{center} \begin{tabular}{ |c|c|c| }   \hline    A & \rightarrow & \emptyset \\   A & \rightarrow & A \\   A & \rightarrow & B \\   A & \rightarrow & AB \\  \hline \end{tabular} \end{center}

  \begin{center} \begin{tabular}{ |c|c|c| }   \hline    B & \rightarrow & \emptyset \\   B & \rightarrow & A \\   B & \rightarrow & B \\   B & \rightarrow & AB \\  \hline \end{tabular} \end{center}

  \begin{center} \begin{tabular}{ |c|c|c| }   \hline    AB & \rightarrow & \emptyset \\   AB & \rightarrow & A \\   AB & \rightarrow & B \\   AB & \rightarrow & AB \\  \hline \end{tabular} \end{center}

步骤 3:检查可能的函数依赖项是否可推导:

在这一步中,我们通过使用属性的闭包集来检查可能的函数依赖是否可以由给定的函数依赖集导出。

Φ → Φ :可推导,因为它是一个微不足道的函数依赖。
A→Φ :可推导,因为 phi 是 A 的子集
A→A :可推导,因为它是一个微不足道的函数依赖。
A→B :可从给定的函数依赖 A→B 派生。
A→AB :可推导,因为 A 的闭包给出了 AB。
B→Φ :可推导,因为 phi 是 B 的子集
B→A :可从给定的函数依赖 B→A 派生。
B→B :可推导,因为它是一个微不足道的函数依赖。
B→AB :可推导,因为 B 的闭包给出了 AB。
AB→Φ :可推导,因为它是一个微不足道的函数依赖。
AB→A :可推导,因为它是一个微不足道的函数依赖。
AB→B :可推导,因为它是一个微不足道的函数依赖。
AB→AB :可推导,因为它是一个微不足道的函数依赖。

其余可能的依赖项无效。

因此,由关系R上的给定函数依赖A→B和B→A可以确定的附加函数依赖的总数为13,包括A→B,B→A如下:

Φ→Φ, A→Φ, A→A, A→B, A→AB, B→Φ, B→A, B→B, B→AB, AB→Φ, AB→A, AB→B, AB→AB