Преобразование сложных связей.



Под сложными здесь понимаются связи степени выше второй. Они должны быть заменены наборами бинарных связей. При этом могут вводиться дополнительные типы сущности. Пример такого преобразования был рассмотрен в п. 4.5.2.

Удаление избыточных связей.

Легко заметить, что во многих случаях пары сущностей в модели оказываются связаны посредством нескольких цепочек связей. Например, сущности Покупатель и Товар связаны связью Покупает и связями Выписывает и Включается в через сущность Накладная на продажу. Возникает вопрос: а необходимо ли такое дублирование? Нельзя ли связь Покупает удалить из модели (альтернативную пару связей удалять нельзя, поскольку в них задействована Накладная на продажу). Для ответа на сформулированный вопрос проанализируем: для выполнения каких транзакций используется удаляемая связь и возможно ли эти транзакции выполнить с помощью других связей.

Связь Покупает будет использоваться при выполнении запросов вида: какие товары покупает конкретный покупатель и какими покупателями покупается конкретный товар. Причем запросы эти будут ограничены по рассматриваемому промежутку времени, например, за последний год или последний квартал. Очевидно, что такого рода запросы могут быть реализованы и путем анализа накладных за интересующий промежуток времени. Конечно, при этом скорость выполнения запросов будет ниже, чем при использовании прямой связи Покупатель – Товар, но, учитывая небольшую частоту поступления такого рода запросов и их не самую важную роль для функционирования всей системы учета, скоростью их выполнения можно пренебречь. Поэтому связь Покупает вполне может быть удалена из модели.

Другой пример. Связь Товары хранятся на Складах дублируется связями через накладные на покупку и продажу. Опять же, количество любого товара на любом складе можно определить, просчитав все накладные, касающиеся интересующего товара. Но! Накладные придется просматривать не за ограниченный промежуток времени, а за все время существования системы. Кроме того, запрос о количестве товаров на складах – это самый важный и самый частый запрос в системе и время его выполнения критично для производительности всей системы учета. При таких условиях связь Хранится на не может быть признана избыточной.

Преобразование связей типа многие-ко-многим.

Связи кардинальности M:N не могут быть непосредственно реализованы в рамках реляционной модели данных. Поэтому они заменяются парами связей кардинальности 1:M с использованием дополнительных промежуточных типов сущности.

Преобразование связей, имеющих атрибуты.

Выполняется аналогично предыдущему пункту (связь Товары хранятся на Складах имеет атрибут Количество).

Преобразование рекурсивных связей.

Также выполняется с помощью дополнительных типов сущности. Например, для связи приведенной на рис. можно предложить такой вариант (рис. 3).

 

 

Рис. 3. Преобразование рекурсивной связи

 

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

Проверка связей кардинальности 1:1.

Все связи, имеющие кардинальность 1:1, должны быть проверены: не являются ли связываемые типы сущности частями одного и того же типа сущности. Может быть, в целях сокращения набора отношений и связей между ними имеет смысл объединить их в один тип сущности.

В нашем примере кардинальность 1:1 имеют связи Руководит и Отвечает за. Они связывают руководителей отделений и заведующих складами с руководимыми ими подразделениями. Попытка их объединения вряд ли целесообразна (это, все-таки, разные типы сущности).


Дата добавления: 2018-05-31; просмотров: 238; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!