这只是我创建的一个例子。 假设这是我的关系:
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
答案 0 :(得分:2)
经典规范化理论只有在您将模式的(TireID,Tire_Colour,Tire_Punctured)部分视为表示 * 单 * 属性/列时才适用于此方案,该属性/列本身采用 * 关系(/ table)值* 。关系值属性,简称RVA,在现代理论中。
在这种情况下,你有两个FD的carID - > yourRVA和yourRVA - >安全
前者表达了这样一个事实:知道我们正在谈论哪辆车让我们知道涉及哪种轮胎(及其状态),第二种表达了轮胎状态决定的事实(所有这些都是自己的) )汽车是否安全。
如果您将此设计(*)“解包”为更传统的设计(通过将RVA属性替换为其包含的标量属性),那么yourRVA - >安全的FD根本不再可以表达,因为很明显你的RV不再存在。在此类设计中指定此类规则超出了功能依赖性的范围,也无法实现。
(*)如果你要在SQL系统中实现它,你将被迫这样做,因为SQL系统(甚至可能是SQL语言本身)通常不支持基表中的RVA。