定义太多冗余?

Define too much redundancy?

我正在上在线课程,它给出了以下 relvar 示例,然后说:

Hmm. Although answer and answercode are different in each tuple—making each tuple technically unique—the values for attributes id, questionID, and answertype are exactly the same. Normalization is in orderd.

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

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

要确定是否需要规范化,写出函数依赖并寻找异常的原因,如传递依赖、对部分键的依赖等。这些类型的冗余中的每一种都在描述中明确定义在线和教科书中的标准表格。

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

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