3NF 和关系和函数依赖的无损分解
3NF and lossless decomposition of relation and functional dependencies
我试图找到以下关于函数依赖关系的 3NF 无损分解:
首先,我从上面给出的函数依赖项中导出密钥开始。我认为关键如下:
{L,T}, {E,T} 和 {T,M} 因为关系中的所有属性都可以使用这些键中的任何一个获得。
现在,我熟悉的3NF的定义是:
A relation schema R is in 3NF if, whenever a function dependency X -> A holds in R, either
(a) X is a superkey of R, or
(b) A is a prime attribute of R.
如果我们将其应用于问题中给出的 FD,则以下内容成立:
- LT -> E 满足 (a) 因为 LT 是一个键(因此是一个超级键)。
- ET -> L 满足 (a) 因为 ET 是一个键(因此是一个超级键)。
- TM -> E 满足 (a) 因为 TM 是一个键(因此是一个超级键)。
- E->M满足(b)因为M是质数属性
鉴于此,如何获得关于函数依赖关系的 3NF 无损分解?我怀疑我假设关系在 3NF 中可能是错误的,因为存在传递依赖但不是 100% 确定。
如果有人可以就我可能出错的地方提供意见,我将不胜感激。
您的回答正确:
所有的key实际上都是LT, ET, TM,因为它们决定了所有其他的属性,没有其他的key,因为它们的子集都不满足这个属性。
依赖关系已经是关系的规范覆盖。
由于您所述的原因,该关系已经在 3NF 中。
请注意,如果您正确地遵循了第三范式的定义,则无需检查是否存在传递函数依赖。
我们还可以注意到原始关系不是 Boyce-Codd 范式,对于依赖 E → M,通过应用分析算法将其带入 BCNF 产生分解:
R1 <(E M), {E → M}>
R2 <(E L T), {L T → E, E T → L}>
有属性依赖T M → E丢失
我试图找到以下关于函数依赖关系的 3NF 无损分解:
首先,我从上面给出的函数依赖项中导出密钥开始。我认为关键如下:
{L,T}, {E,T} 和 {T,M} 因为关系中的所有属性都可以使用这些键中的任何一个获得。
现在,我熟悉的3NF的定义是:
A relation schema R is in 3NF if, whenever a function dependency X -> A holds in R, either
(a) X is a superkey of R, or
(b) A is a prime attribute of R.
如果我们将其应用于问题中给出的 FD,则以下内容成立:
- LT -> E 满足 (a) 因为 LT 是一个键(因此是一个超级键)。
- ET -> L 满足 (a) 因为 ET 是一个键(因此是一个超级键)。
- TM -> E 满足 (a) 因为 TM 是一个键(因此是一个超级键)。
- E->M满足(b)因为M是质数属性
鉴于此,如何获得关于函数依赖关系的 3NF 无损分解?我怀疑我假设关系在 3NF 中可能是错误的,因为存在传递依赖但不是 100% 确定。
如果有人可以就我可能出错的地方提供意见,我将不胜感激。
您的回答正确:
所有的key实际上都是LT, ET, TM,因为它们决定了所有其他的属性,没有其他的key,因为它们的子集都不满足这个属性。
依赖关系已经是关系的规范覆盖。
由于您所述的原因,该关系已经在 3NF 中。
请注意,如果您正确地遵循了第三范式的定义,则无需检查是否存在传递函数依赖。
我们还可以注意到原始关系不是 Boyce-Codd 范式,对于依赖 E → M,通过应用分析算法将其带入 BCNF 产生分解:
R1 <(E M), {E → M}>
R2 <(E L T), {L T → E, E T → L}>
有属性依赖T M → E丢失