2016-06-13 27 views
0

我正在进行数据库规范化以使其最小化为3NF,但我无法仅在最后一个中继续。将数据库归一化为3NF或BCNF

最后一个表我有以下键。 ID,Organization_number和名称。 ID是主键。 ID可以确定ORG_NR和Name,ORG_NR也可以确定ID和名称。 我知道这是违反3NF。 所以我的问题是,我应该做些什么来使它成为3NF甚至BCNF。

如果我把它分解到表中,这使得一对一的关系。

My table

+0

是什么让你觉得“让一对一的关系”成为一个问题? – philipxy

+0

感谢您的评论,现在我得到了我的答案:) – Alex

回答

2

功能依赖性决定候选键。主键只是您决定调用PK的一些CK。除了CK之外,PK在标准化中没有作用。想必你知道这个ID是唯一的(而且{}不是CK),所以它是一个CK,你已经做了PK。 (但你应该清楚地说明)。

既然{ID}和{ORG_NR}确定了所有其他属性并且每个属性都没有更小的子集,它们都是CK。据推测,唯一的FD是从这些跟随的FD。 (但是你应该明确说明。)由于所有非平凡的FK都超出了超级键,所以这是BCNF(&也是3NF)。

PS既然你(错误地)认为这不是在3NF,找到3NF的定义,并试图显示它是否满足3NF。

+0

现在我明白了,关于您的答案,这意味着没有必要将其拆分为两个表。 最后,工作完成;) – Alex