我的表是否用2NF标准化了?

时间:2014-01-03 03:41:07

标签: database-design

问题:是第二范式的数据库?

如果我没有规范化我的数据库会怎样?

enter image description here

我知道我们需要一些数据来检查普通表格,但是列名称会为您提供数据来回答我的问题!

2 个答案:

答案 0 :(得分:2)

没有人能够确定您的数据库是否满足2NF,而不知道它应该满足哪些依赖关系。

除非这是一个学术练习,否则你不必过分担心2NF。自己列出依赖关系并确保所有决定因素都是数据库中的超级密钥。这样你就可以满足BCNF,也很可能是5NF。

答案 1 :(得分:1)

是的,您的数据是2nf(数据库也满足3nf规范)。如果您没有规范化数据库,那么它可能包含冗余数据(跨表的重复数据),如果您更新一个表中的相同记录并且不更新另一个表中的重复记录,这可能会导致数据不正确。例如,在你的情况下,如果你把url放在投票表和user_visited表而不是url_id.Then如果在url中有任何更新,你需要更新所有具有url的表,如果你没有这样做,那么数据就会被破坏。如果您的表在此处进行了规范化,则只需更新一个表URL。另一点是要获得投票数据,你需要与urls表进行连接以获取url,如果数据很大,那么使用join的select操作将花费时间。所以为了避免这种情况,有时候规范化会受到影响,这被称为DeNormalization。