这种功能依赖是否正确?

时间:2014-02-26 06:13:14

标签: relational-database database-normalization functional-dependencies

这只是我创建的一个例子。 假设这是我的关系:

0NF 汽车(CarID PK,(TireID,Tire_Colour,Tire_Punctured),安全) 其中TireID,Tire_Colour,Tire_Punctured是重复组的一部分。

如果所有轮胎都没有被刺穿,那么它将被认为是安全的。

以下功能依赖性是否正确:

CardID,TireID,Tire_Punctured - > {安全}

如果我要继续规范化并将关系分解为单独的表格,我将如何在表格中显示Safe的依赖关系。

Sample Data
------------
CarID   |  TireID  |   Tire_Colour   |   Tire_Punctured   |   Safe   |  
   1          23             black              false            true  
   1          11             blue               false            true  
   1          29             black              false            true  
   1           1             black              false            true  

   2           4             red                false            false  
   2          34             purple             false            false  
   2          24             black              true             false  
   2          64             black              false            false  

1 个答案:

答案 0 :(得分:2)

经典规范化理论只有在您将模式的(TireID,Tire_Colour,Tire_Punctured)部分视为表示 * * 属性/列时才适用于此方案,该属性/列本身采用 * 关系(/ table)值* 。关系值属性,简称RVA,在现代理论中。

在这种情况下,你有两个FD的carID - > yourRVA和yourRVA - >安全

前者表达了这样一个事实:知道我们正在谈论哪辆车让我们知道涉及哪种轮胎(及其状态),第二种表达了轮胎状态决定的事实(所有这些都是自己的) )汽车是否安全。

如果您将此设计(*)“解包”为更传统的设计(通过将RVA属性替换为其包含的标量属性),那么yourRVA - >安全的FD根本不再可以表达,因为很明显你的RV不再存在。在此类设计中指定此类规则超出了功能依赖性的范围,也无法实现。

(*)如果你要在SQL系统中实现它,你将被迫这样做,因为SQL系统(甚至可能是SQL语言本身)通常不支持基表中的RVA。