Проблема присоединенных записей
Рассмотрим использованный в подразд. 6.1 пример. Пусть в ИФ хранятся данные о сотрудниках, дежуривших в составе оперативной группы предприятия («ДАТА» — дата дежурства; «ТЕЛЕФОН» — рабочий телефон сотрудника).
Рассмотрим две проекции файла:
В ИФ поле «ДАТА» является ключом и не может быть пустым. Как поступить, если нужно запомнить данные о фамилии и номере рабочего телефона нового сотрудника, который еще не дежурил (например, о Смирнове с номером телефона 7-35)? Записать эти данные в ИФ нельзя (первичный ключ не может быть пустым), но можно поместить эти сведения в проекцию ПФ2. При этом ПФ2 формально перестает быть проекцией ИФ, хотя соединение ПФ1 и ПФ2 дает исходный файл (без сведений о Смирнове).
Записи, вносимые в отдельные проекции ИФ, называются присоединенными. Представление файла в виде его полной декомпозиции может позволить решить проблему присоединенных записей, но важно помнить, что соединение проекций ИФ может привести к их потере.
Целесообразность представления ИФ в виде полной декомпозиции с точки зрения решения проблемы присоединенных записей, как и проблемы дублирования информации, полностью определяется наличием или отсутствием в проекциях ИФ общего первичного ключа.
Пусть в ИФ БД хранятся данные о сотрудниках, исполняющих обязанности в дежурном расчете («НОМЕР_Р» — номер в составе дежурного расчета; «ТЕЛЕФОН» — номер рабочего телефона).
Если считать, что один и тот же сотрудник не может исполнять обязанности нескольких номеров дежурного расчета, то в качестве первичного ключа можно использовать «НОМЕР_Р». Полную декомпозицию исходного файла составляют проекции:
В качестве присоединенных записей можно рассматривать либо добавление нового номера дежурного расчета и фамилии сотрудника, либо нового номера расчета и телефона без указания фамилии сотрудника, однако эту информацию можно внести и в ИФ путем формирования записей типа
Таким образом, представление ИФ в виде проекций, содержащих общий первичный ключ ИФ, не дает преимуществ с точки зрения решения проблемы присоединенных записей.
Обобщая сказанное, можно сформулировать общее требование к файлу, представление которого в виде полной декомпозиции не имеет смысла.
Говорят, что файл находится в пятой нормальной форме (5 НФ), если у него или нет ни одной полной декомпозиции или нет ни одной полной декомпозиции, в которую входили бы проекции, не имеющие общего первичного ключа ИФ.
Если файл не находится в 5 НФ, имеется возможность избежать дублирования информации и потерю присоединенных записей, переходя от ИФ к такой его полной декомпозиции, которая образована проекциями, не содержащими первичный ключ. Если полученные таким образом файлы проекций не находятся в 5 НФ, то каждую из них можно заменить полной декомпозицией и т.д.
Процесс последовательного перехода к полным декомпозициям файлов БД называется нормализацией файлов БД, главная цель которой — исключение дублирования информации и потери присоединенных записей.