【发布时间】:2014-03-21 09:29:31
【问题描述】:
我正在尝试设计一个数据库。我有一张如下表:
Tag Post File
A a 1
A a 2
A a 3
A b 4
B a 1
B b 1
B c 1
B d 1
每个帖子可能有多个标签,每个文件可能有多个标签。除了标签之外,帖子和文件是不相关的。显然,仅从表格来看,就会存在冗余问题,例如后标签对 A-a 不必要地重复了 3 次,与后文件对 B-1 相同。但是,我已经查看了 1NF 到 4NF 的定义,并且似乎在所有这些定义中。
我错过了什么?
我认为如果一个表有冗余,那么它就没有被规范化。但它似乎确实被标准化为 4NF。所以我一定是哪里出错了。
【问题讨论】:
-
您不会说给定标签是否可以包含多个帖子或文件。同样,“不相关”并不意味着任何特别的东西。 “冗余”也没有。也不是“明显”有任何 NF 可以删除。如果您尝试包含该标签->>post|file,即该表始终是其在 {tag, post} 和 {tag,file} 上的投影的自然连接,那么这与您的示例数据相矛盾。不存在重要的 MVD。您需要找出 FD 和 MVD(或二进制 JD)是什么,并说出哪些 FD 持有和不持有以及哪些 MVD/JD 持有和不持有(或者有哪些无损分解)。非正式是不够的。
-
Re“这是对的”:根据您的参考/教科书显示您的工作步骤,并说明理由 - 并非所有术语/符号都是标准的,我们不确切知道您使用什么算法/方法正在关注,我们想检查你的工作,但不想重做,当流程允许时,我们需要你的选择,否则我们无法告诉你哪里对错,我们不想重写你的教科书。请参阅How to Ask,点击谷歌搜索“stackexchange 作业”和投票箭头鼠标悬停文本。如果您不确定它是否正确,请针对您卡在哪里提出 1 个经过研究的特定非重复问题。
标签: database