Преобразование сложных связей.
Под сложными здесь понимаются связи степени выше второй. Они должны быть заменены наборами бинарных связей. При этом могут вводиться дополнительные типы сущности. Пример такого преобразования был рассмотрен в п. 4.5.2.
Удаление избыточных связей.
Легко заметить, что во многих случаях пары сущностей в модели оказываются связаны посредством нескольких цепочек связей. Например, сущности Покупатель и Товар связаны связью Покупает и связями Выписывает и Включается в через сущность Накладная на продажу. Возникает вопрос: а необходимо ли такое дублирование? Нельзя ли связь Покупает удалить из модели (альтернативную пару связей удалять нельзя, поскольку в них задействована Накладная на продажу). Для ответа на сформулированный вопрос проанализируем: для выполнения каких транзакций используется удаляемая связь и возможно ли эти транзакции выполнить с помощью других связей.
Связь Покупает будет использоваться при выполнении запросов вида: какие товары покупает конкретный покупатель и какими покупателями покупается конкретный товар. Причем запросы эти будут ограничены по рассматриваемому промежутку времени, например, за последний год или последний квартал. Очевидно, что такого рода запросы могут быть реализованы и путем анализа накладных за интересующий промежуток времени. Конечно, при этом скорость выполнения запросов будет ниже, чем при использовании прямой связи Покупатель – Товар, но, учитывая небольшую частоту поступления такого рода запросов и их не самую важную роль для функционирования всей системы учета, скоростью их выполнения можно пренебречь. Поэтому связь Покупает вполне может быть удалена из модели.
|
|
Другой пример. Связь Товары хранятся на Складах дублируется связями через накладные на покупку и продажу. Опять же, количество любого товара на любом складе можно определить, просчитав все накладные, касающиеся интересующего товара. Но! Накладные придется просматривать не за ограниченный промежуток времени, а за все время существования системы. Кроме того, запрос о количестве товаров на складах – это самый важный и самый частый запрос в системе и время его выполнения критично для производительности всей системы учета. При таких условиях связь Хранится на не может быть признана избыточной.
Преобразование связей типа многие-ко-многим.
Связи кардинальности M:N не могут быть непосредственно реализованы в рамках реляционной модели данных. Поэтому они заменяются парами связей кардинальности 1:M с использованием дополнительных промежуточных типов сущности.
Преобразование связей, имеющих атрибуты.
|
|
Выполняется аналогично предыдущему пункту (связь Товары хранятся на Складах имеет атрибут Количество).
Преобразование рекурсивных связей.
Также выполняется с помощью дополнительных типов сущности. Например, для связи приведенной на рис. можно предложить такой вариант (рис. 3).
Рис. 3. Преобразование рекурсивной связи
Здесь работник может замещать некоторые должности согласно штатному расписанию, а каждой должности в штатном расписании соответствует определенный состав подчиненных работников.
Проверка связей кардинальности 1:1.
Все связи, имеющие кардинальность 1:1, должны быть проверены: не являются ли связываемые типы сущности частями одного и того же типа сущности. Может быть, в целях сокращения набора отношений и связей между ними имеет смысл объединить их в один тип сущности.
В нашем примере кардинальность 1:1 имеют связи Руководит и Отвечает за. Они связывают руководителей отделений и заведующих складами с руководимыми ими подразделениями. Попытка их объединения вряд ли целесообразна (это, все-таки, разные типы сущности).
Дата добавления: 2018-05-31; просмотров: 238; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!