定义太多冗余?

时间:2015-09-07 12:49:47

标签: sql relational-database normalization redundancy

enter image description here

我正在进行在线课程,它提供了以下relvar示例,然后说:

  

嗯。虽然每个元组制作中的答案和答案都不同   每个元组在技术上都是唯一的 - 属性id的值,   questionID和answertype完全一样。规范化是有序的。

问题是,什么被认为是太多的冗余?在我们开始规范化步骤之前绘制的线在哪里?

1 个答案:

答案 0 :(得分:3)

规范化不是用于减少冗余值的东西。它用于减少值之间的冗余关联。换句话说,它的目的是确保每个事实只记录一次。

要确定是否需要规范化,请写出功能依赖关系,并查找异常的原因,如传递依赖关系,关键部分的依赖关系等。这些类型的冗余中的每一种都在正常形式的描述中明确定义在线和教科书。

在您的示例中,如果我假设questionID -> answertype(questionID, answercode) -> answerid等同于questionID并且可以忽略,那么关系仅在1NF因为answertype是非素数属性,取决于键(questionID, answercode)的一部分。如果更新要更改某些显示的answertypes(但不是全部)的值,那么您的数据将在逻辑上损坏。规范化可能会阻止这种情况。

您的客户关心准确性和一致性。你呢?