Чтобы придерживаться 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, с преимуществом, данным для Design 3, поскольку вы можете легко добавить новую статистику без фактического изменения структуры таблицы.
Но прежде чем кто-то придет и скажет, что чем вертикальнее, тем лучше, бывают моменты, когда это более двусмысленно. Как:
Дизайн 4
SN AverageCurrent (mA) BatteryCapacity (mA)
2093 200 540
Может быть вместо:
Дизайн 5
SN mA_Measuremnt Value
2093 AverageCurrent 200
2093 BatteryCapacity 540
Хотя оба атрибута принадлежат одному домену (мА), они представляют собой очень разные вещи в отношении компонента. В этом случае лучше ли дизайн 4, поскольку он не является строго повторяющейся группой? Я думаю, что я ищу некоторые критерии, чтобы знать, когда разбить его на несколько таблиц и, таким образом, сделать его более вертикальным.
Подводя итог этому смехотворно длинному вопросу, следует ли удалять и нормализовать повторяющиеся группы только в том случае, если они точно совпадают с доменом и имеют точно такое же значение? Если это так, то этому критерию соответствуют только телефонный пример и, возможно, два теста в Design 1. Хотя кажется, что дизайн 3 и 5 могут быть полезными для проектирования, даже если статистика проекта 3, строго говоря, имеет разные значения, а AverageCurrent и BatteryCapacity определенно имеют разные значения в дизайне 5.