Чтобы придерживаться 1-й нормальной формы, одной из вещей, которых вы должны избегать, является повторение групп. Как вместо:
CustID Name Address Phone1 Phone2 Phone3
102 Jerry 234 East.. 555-2342 555-9854 555-2986
Вы должны создать вторую таблицу номеров телефонов, а затем при соединении вы получите:
CustID Name Address Phone
102 Jerry 234 East.. 555-2342
102 Jerry 234 East.. 555-9854
102 Jerry 234 East.. 555-2986
Иногда это немного более неоднозначно, и трудно сказать, когда подходит группа заголовков столбцов. Например, предположим, что на данный момент у вас есть два теста, которые вы запускаете на каждой части оборудования. И ваш первый дизайн БД дает самый горизонтальный подход:
Дизайн 1
SN Test1_Max Test1_Min Test1_Mean Test2_Max Test2_Min Test2_Mean
2093 23 2 15 54 -24 45
Очевидно, что это повторяющаяся группа, которую гораздо проще представить как (на соединении между «Части» и «Тесты»):
Дизайн 2
SN Test Max Min Mean
2093 1 23 2 15
2093 2 54 -24 45
Однако вы можете пойти еще более вертикально:
Дизайн 3
SN Test Statistic Value
2093 1 Max 23
2093 1 Min 2
2093 1 Mean 15
2093 2 Max 54
2093 2 Min -24
2093 2 Mean 45
Нужен ли дизайн 3? Как вы решаете, насколько вертикально сделать это? Каковы плюсы и минусы между Дизайном 2 и 3? Кажется, что оба варианта можно легко выбрать или соединить с помощью SQL, с преимуществом, предоставленным схеме 3, поскольку вы можете легко добавить новую статистику, фактически не изменяя структуру таблицы.
Но прежде чем кто-то пойдет и скажет, что чем больше вертикаль, тем лучше, бывают случаи, когда это более двусмысленно. Нравится:
Дизайн 4
SN AverageCurrent (mA) BatteryCapacity (mA)
2093 200 540
Вместо этого может быть:
Дизайн 5
SN mA_Measuremnt Value
2093 AverageCurrent 200
2093 BatteryCapacity 540
Хотя оба атрибута имеют один и тот же домен (мА), они представляют очень разные вещи в отношении компонента. В этом случае лучше ли будет Дизайн 4, поскольку это не строго повторяющаяся группа? Я думаю, что я ищу какие-то критерии, чтобы знать, когда разбить его на большее количество таблиц и, таким образом, сделать его более вертикальным.
Подводя итог этому смехотворно длинному вопросу, должны ли вы удалять и нормализовать повторяющиеся группы только в том случае, если они являются одним и тем же доменом и имеют точно такое же значение?. Если это так, то только пример с телефоном и, возможно, два теста в схеме 1 соответствуют этим критериям. Хотя кажется, что в дизайне 3 и 5 могут быть преимущества дизайна, даже несмотря на то, что статистика дизайна 3 имеет, строго говоря, разные значения, а AverageCurrent и BatteryCapacity определенно имеют разные значения в дизайне 5.
Phone1
,Phone2
иPhone3
не являются повторяющимися группами. Повторяющаяся группа — это столбец, который может состоять из многозначных атрибутов. - person haccks   schedule 31.03.2015