扬帆大鱼
英语的价值一次又一次地重复。这是重复组吗?不。在SUBJECT_MODULE中英语的多次出现不是重复组,甚至不是人们误认为重复组的两件事中的任何一个。它们也不是冗余或缺乏规范化的证据。这样的多个外观可能与冗余或规范化有关,但是在没有冗余和各种级别的规范化的情况下,它们始终出现。如果SUBJECT_MODULE是其中“ [SUBJECT_NAME]已由[MODULE_ID]标识的[MODULE_NAME]”的行,并且一个主题可能有多个模块,则在某处您必须多次提及该主题(也许通过其名称),并提及不同的模块(也许通过名称或ID)。这不会涉及冗余。Student Age SubjectAdam 15 BiologyAdam 15 MathsAlex 14 MathsStuart 17 Maths在本示例中,问题的第二个“ this ”链接中的冗余不是亚当出现在两行中,也不是亚当出现在15行中。这是因为,如果表中的行是“ [学生] [年龄],并接受[主题]”,则学生(例如Adam)可以出现在多行中,但总是以相同的年龄(例如15)出现。但是,如果表是“ [学生]在[主题]中有一个朋友[年龄]岁”的行,则该表可能已经完全标准化。当然可以消除重复的值,但是我不确定这是否正确。它适用于您的示例数据,但可能不适用于其他示例数据。您还没有告诉我们。(无论如何,正如我在上面所说的,多次出现可能甚至都不需要规范化。)SUBJECT_MODULE中是否存在任何与归一化相关的冗余,甚至包括您给出的分解在内的任何有效分解都取决于将其标准化到1NF以上所需的常规信息。即,它的某些列是否是其他函数(函数依赖项),以及它的行是否也是“ ...”和“ ...”(联接依赖项)所在的行。通过给出可能的分解,您已经说过也是“ ... [Subject_Name] ... [Module_ID] ...”和“ ...... [Module_Name] ... [Module_ID] ...”的行您提供了一些分解数据示例。但是我们只知道它可以如此分解,因为您添加了分解。而且分解加数据仍然不足以让我们知道是否应该如此分解。我阅读了不同的教程,并看到了不同的规范化示例,尤其是第一种标准形式的“重复组”的概念。“重复组”是关系前数据库中的内容,不可能出现在关系表(关系)中。它们就像一组命名的值,类似于记录的字段,但不完全相同。关系表始终以1NF表示。行的每一列都具有该列类型的单个值。非关系数据库被“规范化”到表,即摆脱重复组的表1NF(“规范化”的第一感觉)。然后将那些表/关系“规范化”为更高的规范形式(“规范化”的第二种含义)。具有多个相似列或具有多个相似部分的列类型的关系表每个都让人想起在非关系数据库中具有重复组。并且,多个列和部分应该在单独的表中成为多个行,就像重复组的多个成员一样。但是,这些问题与设计的关系质量有关,而不与重复的组或规范化(无论在哪种意义上)或与关系有关(即在1NF中)有关。请注意,非关系数据库本身可能具有多个相似字段和/或命名集或字段值的多个相似部分的相似问题。当表的规范化摆脱了重复的组时,就不能消除它们。不管他们如何进入关系设计,将它们删除都会带来“更好”的设计。只是因为这些设计问题使人想起重复组,使人们感到困惑,并想象表可能包含重复组。因此,具有多个相似部分(或多个部分)的多个相似列和值被错误地称为“重复组”。