Проблема присоединенных записей

Рассмотрим уже использованный п. 2.2.1 пример. Пусть в исходном файле хранятся данные о сотрудниках, дежуривших в составе оперативной группы предприятия (ДАТА — дата дежурства; ТЕЛЕФОН — рабочий телефон сотрудника).

ИФ

ДАТА

СОТРУДНИК

ТЕЛЕФОН

11.01

Иванов

3-12

15.01

Сидоров

4-21

24.01

Сидоров

4-21

30.01

Сидоров

4-21

1.02

Иванов

3-12

Рассмотрим две проекции файла:

ПФ1 = рго/ [ДАТА, СОТРУДНИК] (ИФ);

ПФ2 = рго/ [СОТРУДНИК, ТЕЛЕФОН] (ИФ). ПФ1

ДАТА

СОТРУДНИК

11.01

Иванов

15.01

Сидоров

24.01

Сидоров

30.01

Сидоров

1.02

Иванов

ПФ2

СОТРУДНИК

ТЕЛЕФОН

Иванов

3-12

Сидоров

4-21

В ИФ поле ДАТА является ключом и не может быть пустым. Как поступить, если нужно запомнить данные и фамилии и номере рабочего телефона нового сотрудника, который еще не дежурил (например, о Смирнове с номером телефона 7—35)? Записать эти данные в ИФ нельзя (первичный ключ не может быть пустым), но можно поместить эти сведения в проекцию ПФ2. При этом ПФ2 формально перестает быть проекцией ИФ, хотя соединение ПФ1 и ПФ2 дает исходный файл (без сведений о Смирнове).

Записи, вносимые в отдельные проекции исходного файла, называются присоединенными. Представление файла в виде его полной декомпозиции может позволить решить проблему присоединенных записей, но важно помнить, что соединение проекций ИФ может привести к их потере.

Целесообразность представления ИФ в виде полной декомпозиции с точки зрения решения проблемы присоединенных записей, как и проблемы дублирования информации, полностью определяется наличием или отсутствием в проекциях ИФ общего первичного ключа.

Пусть в ИФ БД хранятся данные о сотрудниках, исполняющих обязанности в дежурном расчете (НОМЕР_Р — номер в составе дежурного расчета; ТЕЛЕФОН — номер рабочего телефона).

ИФ

НОМЕРР

СОТРУДНИК

ТЕЛЕФОН

1

Иванов

3-12

2

Сидоров

4-20

3

Фомин

8-61

Если считать, что один и тот же сотрудник не может исполнять обязанности нескольких номеров дежурного расчета, то в качестве первичного ключа можно использовать НОМЕРР. Полную декомпозицию исходного файла составляют проекции:

ПФ1

Н0МЕР_Р

СОТРУДНИК

1

Иванов

2

Сидоров

3

Фомин

ПФ2

Н0МЕР_Р

ТЕЛЕФОН

1

3-12

2

4-20

3

8-61

В качестве присоединенных записей можно рассматривать либо добавление нового номера дежурного расчета и фамилии сотрудника, либо нового номера расчета и телефона без указания фамилии сотрудника, однако эту информацию можно внести и в ИФ путем формирования записей типа

Таким образом, представление ИФ в виде проекций, содержащих общий первичный ключ исходного файла, не дает преимуществ с точки зрения решения проблемы присоединенных записей.

Обобщая сказанное, можно сформулировать общее требование к файлу, представление которого в виде полной декомпозиции не имеет смысла.

Говорят, что файл находится в пятой нормальной форме (5 НФ), если у него или нет ни одной полной декомпозиции или нет ни одной полной декомпозиции, в которую входили бы проекции, не имеющие общего первичного ключа исходного файла.

Если файл не находится в 5 НФ, имеется возможность избежать дублирования информации и потерю присоединенных записей, переходя от исходного файла к такой его полной декомпозиции, которая образована проекциями, не содержащими первичный ключ. Если полученные таким образом файлы проекций не находятся в 5 НФ, то каждую из них можно заменить полной декомпозицией и т.д.

Процесс последовательного перехода к полным декомпозициям файлов БД называется нормализацией файлов БД, главная цель которой — исключение дублирования информации и потери присоединенных записей (более подробно — см. п. 2.2.5).

 
< Пред   СОДЕРЖАНИЕ     След >