【发布时间】:2012-06-01 07:14:14
【问题描述】:
我正在研究数据库概念,但有 3 个概念我不明白:规范覆盖、无关属性和闭包。我阅读了有关规范封面的定义,但我不了解它与 3NF 和 BCNF 的关系。规范覆盖的定义似乎是没有多余的属性,而多余的属性是不改变函数依赖集的闭包的属性,而闭包是 F 隐含的所有函数依赖的集合,一组函数依赖.
但这一切都有些模糊,我想知道一个直观的定义和如何计算
- 规范封面
- 关闭
- 无关属性
我相信我理解功能依赖性——如果我们在表中包含这些属性,这就像表中的 PK 一样。
database refinement - minimal cover of F (extraneous attributes) 有一个相当广泛的答案,但我发现很难阅读所有集合定义和代数,我宁愿用简单的英语定义。
例如,具有架构 U={A,B,C,D,E,F,G} 和函数依赖关系
AB → C
B → E
CF → D
C → A
B → F
CE → F
CD → B
B → C
闭包A+,B+,C+,D+,E+,F+是这样计算的吗?
A+ = A
B+ = BCDEF
C+ = A
D+ = D
E+ = E
F+ = F
如果我没记错的话,那么 BCDEFG 是 1NF/2NF 中的超级键(“整个键”),但它是最小 (3NF) 吗?
在闭包和规范覆盖的帮助下,还应该做些什么来将此示例规范化为 1NF、2NF 和 3NF?规范封面和最小封面一样吗?
【问题讨论】:
-
你不明白的原因是“它是什么样子”的解释是不够的,必须找到、记住和使用精确的定义。他们是不可避免的。 (一旦这样做,“代数”比“简单英语”更易于管理。) PS 这只是要求我们用定制的教程重写教科书/手册。
标签: database-design relational-database database-schema functional-dependencies canonical-form