好吧,基本上我觉得我倾向于过度规范化事情,也许我这样做是以牺牲性能为代价的。因此,为了阐明这个问题,我创建了以下模式作为示例:
如您所见,我概述了两种不同的方法。这里的想法是所有大学都有课程(例如工程),并且所有课程都有专业(例如电气工程)。为了让这个例子起作用,我们必须假设有 40 个项目,比如 1000 个专业,并且学校有相同的项目/专业。
现在,我在这种情况下的典型做法是将任何可能重复的内容(即专业和课程)放入自己的表中;然后有一个关系,如上所示。另一种我倾向于远离的方法是第二种模型,其中 program 和 major 是具有重复值的列(例如,Engineering 可能会在表格中重复 1,00 次)。基本上,如果值重复,我会为它创建一个表。
现在,我对其中哪一种更好的方法不太感兴趣,因为我只是用它们作为一个例子来阐明真正的问题:人们如何知道它们何时过度规范化?我知道您在规范化表格方面做得太过分了,但我从来不知道衡量标准是什么。
附录
大学不需要在一个项目中拥有所有专业,因此大学与专业相关,而不是项目(例如,大学 X 有工程学院,但没有核工程,这是工程项目的一部分)。