Рассмотрим следующий пример. Пусть требуется учитывать данные об абитуриентах, поступающих в ВУЗ. При анализе предметной области были выделены следующие требования:
Предположим, что нам требуется хранить данные о том, какие предметы должен сдавать каждый абитуриент. Попытаемся хранить данные в одном отношении "Абитуриенты-Факультеты-Предметы":
Иванов | Математический | Математика |
Иванов | Математический | Информатика |
Иванов | Физический | Математика |
Иванов | Физический | Физика |
Петров | Математический | Математика |
Петров | Математический | Информатика |
Таблица 7 Отношение "Абитуриенты-Факультеты-Предметы"
В данный момент в отношении хранится информация о том, что абитуриент Иванов поступает на два факультета (математически и физический), а абитуриент Петров - только на математический. Кроме того, можно сделать вывод, что на математическом факультете нужно сдавать математику и информатику, а на физическом - математику и физику.
Кажется, что в отношении имеется аномалия обновления, связанная с тем, что дублируются фамилии абитуриентов, наименования факультетов и наименования предметов. Однако эта аномалия легко устраняется стандартным способом - вынесением всех наименований в отдельные отношения, оставляя в исходном отношении только соответствующие номера:
1 | 1 | 1 |
1 | 1 | 2 |
1 | 2 | 1 |
1 | 2 | 3 |
2 | 1 | 1 |
2 | 1 | 2 |
Таблица 8 Модифицированное отношение "Абитуриенты-Факультеты-Предметы"
1 | Иванов |
2 | Петров |