<На страницу назад | На страницу вперед >

4.4.5. Проверка правильности ключей и отношений

Идентификация и миграция ключей подчиняется следующим основным правилам:

  1. Нельзя использовать синтаксис неспецифических отношений.
  2. Миграция ключей от родительских (или общих) сущностей к сущностям-потомкам (или сущностям-категориям) является обязательной.
  3. Запрещается использовать атрибуты, которые могут принимать более одного значения для данного экземпляра сущности в одно и то же время (правило неповторяемости).
  4. Нельзя использовать атрибуты, обращающиеся в ноль (т.е. не принимающие никакого значения) для некоторого экземпляра сущности (правило необращения в ноль).
  5. Сущности с составными ключами не могут быть разбиты на несколько сущностей с более простыми ключами (правило наименьшего ключа).
  6. Необходимо объявлять об имеющихся между двумя сущностями двойных путях отношений.

В предыдущих разделах мы уже рассмотрели первые два правила, поэтому остановимся на оставшихся.

На рис. 4-16 приведена диаграмма, относящаяся к применению правила неповторяемости. Обратите внимание, что субъект диаграммы содержит в качестве элементов первичного ключа сущности ЗАКАЗ атрибуты НОМЕР_ЗАКАЗА и НОМЕР_ПУНКТА_ЗАКАЗА. Однако, рассмотрев использование НОМЕРА_ПУНКТА_ЗАКАЗА, мы увидим, что один и тот же экземпляр сущности ЗАКАЗ может быть ассоциирован со многими НОМЕРАМИ_ПУНКТА_ЗАКАЗА, по одному на каждый заказываемый пункт. Для правильного отражения этого факта в модели данных должна быть создана новая сущность, называющаяся ПУНКТ_ЗАКАЗА с добавлением дуги и метки отношения, синтаксиса и определения. Таким образом, начинают выясняться истинные характеристики связи между заказами на покупку и пунктами заказов на покупку.

Рис. 4-16. Детализация правила неповторяемости

На рис. 4-17 приведена диаграмма вариантов детализации, относящаяся к применению правила необращения в ноль. Заметим, что НОМЕР_ДЕТАЛИ промигрировал к ПУНКТУ_ЗАКАЗА. Эта ассоциация установилась в связи с тем, что пункты заказа связаны некоторым образом с деталями. Однако показано, что диаграмма утверждает ассоциированность каждого пункта заказа на покупку в точности, с одним номером детали. Исследование (или, возможно, комментарий рецензента) показывает, что не все пункты заказа на покупку ассоциируются с деталями. Некоторые из них могут быть связаны с услугами или другими товарами, не имеющими номеров деталей. Это запрещает миграцию НОМЕРА_ДЕТАЛИ непосредственно в сущность ПУНКТА_ЗАКАЗА и требует в нашем примере установления новой сущности ЗАКАЗАННАЯ_ДЕТАЛЬ.

Рис. 4-17. Детализация правила необращения в ноль

Как только новая сущность установлена, в соответствии с правилом миграции обязательно должна произойти миграция ключа, и разработчик будет снова проверять правильность соответствия структуры сущность-отношение правилам необращения в ноль и неповторяемости.

Каждый составной ключ должен проверяться на соответствие правилу наименьшего ключа. Это правило требует, чтобы любая сущность с составным ключом не могла разделяться на несколько сущностей с более простыми ключами (на меньшие компоненты) без потери некоторой информации. Это правило является комбинацией и расширением четвертой и пятой нормальных форм в реляционной теории. Другие правила нормализации, такие, как правило полной функциональной зависимости или правило отсутствия транзитивной зависимости, не могут применяться до тех пор, пока на стадии 4 неключевые атрибуты не будут отражены в модели.

В связи со стадией 2 упоминалась тенденция выявления избыточных отношений. Однако на стадии 2 анализ, в основном, проводится разработчиком по его усмотрению. Установив ключи, разработчик может быть более точным в анализе. Двойной путь отношений существует тогда, когда существует сущность-потомок с двумя отношениями, ведущими, в конечном итоге, обратно (через одно или несколько отношений) к общей "корневой" сущности-родителю. В случае существования двойных путей требуется утверждение пути, чтобы определить, являются ли пути равными, неравными или неопределенными. Пути равны, если для каждого экземпляра сущности-потомка оба пути отношений всегда ведут к одному и тому же экземпляру корневой родительской сущности. Пути являются неравными, если для каждого экземпляра сущности-потомка оба пути отношений всегда ведут к различным экземплярам корневой родительской сущности. Пути являются неопределенными, если они равны для некоторых экземпляров сущности-потомка и не равны для остальных экземпляров. Если один из путей состоит только из одного отношения и пути равны, то путь из одного отношения является излишним и должен быть удален.

Простейшим случаем отношения, имеющего двойственные пути является отношение, в котором оба пути состоят из единственного отношения. Пример такой структуры приведен на рис. 4-15. Поскольку каждый экземпляр сущности СХЕМА_СБОРКИ может быть связан с двумя различными экземплярами сущности ДЕТАЛЬ, избыточности нет. В этом случае утверждение пути будет требовать, чтобы пути были неравны, поскольку ДЕТАЛЬ не может быть вмонтирована в себя.

Если один из путей содержит несколько отношений, а другой путь содержит одно отношение, то такая структура называется триадой. На рис. 4-18 приведен пример триады. В этом случае СЛУЖАЩИЙ связан с ОТДЕЛЕНИЯМИ как прямо, так и косвенно, через ОТДЕЛ. Если утверждение пути состоит в том, что ОТДЕЛЕНИЕ, которому принадлежит СЛУЖАЩИЙ, содержит ОТДЕЛ, которому принадлежит СЛУЖАЩИЙ, то отношение между сущностями ОТДЕЛЕНИЯ и СЛУЖАЩИЙ является избыточным и должно быть удалено. Заметим, что если некоторые, но не все, СЛУЖАЩИЕ могут в действительности принадлежать двум различным отделениям, то должна быть добавлена еще одна сущность; такая, как ВРЕМЕННЫЙ_СЛУЖАЩИЙ, чтобы НОМЕР_ОТДЕЛЕНИЯ удовлетворял правилу необращения в ноль в качестве внешнего ключа сущности СЛУЖАЩИЙ.

Рис. 4-18. Пример триады

Утверждения могут также применяться к отношениям двойственных путей, когда оба пути раскрывают более одного отношения. В приведенном на рис. 4-19 примере между сущностями ОТДЕЛ и ИСПОЛНИТЕЛЬ_ЗАДАНИЯ существуют два пути отношений. Если СЛУЖАЩИЙ может быть приписан только к тому ПРОЕКТУ, которым руководит его ОТДЕЛ, то пути равны. Если СЛУЖАЩИЙ может быть приписан только к тому ПРОЕКТУ, которым руководит не его отдел, то пути не равны. Если СЛУЖАЩИЙ может быть приписан к ПРОЕКТУ независимо от того, руководит его ОТДЕЛ ПРОЕКТОМ или нет, то пути являются неопределенными. Обычно, пути предполагаются неопределенными, если только утверждения точно не определены. Утверждения должны быть добавлены в качестве примечаний к диаграммам стадии 3 и включены в определение сущности-потомка.

Рис. 4-19. Утверждения пути

После идентификации элементов первичного ключа производятся записи в пул атрибутов. Для идентификации распределения и использования атрибутов в модели может применяться матрица сущность/атрибут. Эта матрица обладает следующими свойствами:

  1. Все имена сущностей изображаются с краю.
  2. Все имена атрибутов изображаются наверху.
  3. Использование атрибутов сущностями изображается в соответствующей строке с помощью следующей кодировки: "О" = владелец, "К" = первичный ключ, "I" = наследуемый.

Пример матрицы сущность/атрибут приведен на рис.4-20. Эта матрица является основным средством поддержки целостности модели.

СУЩНОСТИ * Имена соответствующих атрибутов приведены в таблице 1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
Условия покупки 1 OK I                                        
Покупатель 2   OK                                        
Продавец 3     OK                                      
Заказ 4   I I                         OK            
Оформитель 6                       OK                    
Деталь 9                                            
Пункт заказа 10 IK                                          
Строка заказа 12 IK                                          
Администратор 21     IK                                      
Поставщик 22                                            

 

* Таблица №1

АТРИБУТЫ АТРИБУТЫ
1 Номер условий покупки 12 Имя оформителя
2 Код покупателя 13 Код отдела
3 Код продавца 14 Послать через …
4 Код заказа 15 Имя покупателя
5 Номер изменения 16 Номер заказа
6 Пункт назначения 17 Дата пункта заказа
7 Имя продавца 18 Код получателя
8 Адрес продавца 19 Код налога
9 Код подтверждения 20 Код дилера
10 Имя подтверждающего лица 21 Номер бланка
11 Код дополнительных копий 22 Условия платежа

Рис. 4-20. Матрица "Сущности/Атрибуты"

<На страницу назад | На страницу вперед >