Логическое проектирование базы данных

Создание и проверка локальной логической модели данных для отдельных пользовательских представлений

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

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

Исключение особенностей, несовместимых с реляционной моделью (необязательный этап)

Пример преобразования связи

Определение набора отношений исходя из структуры локальной логической модели данных

Связь между двумя сущностями отображается с использованием механизма "первичный ключ/внешний ключ". При определении того, в каком отношении должен находиться атрибут (атрибуты) внешнего ключа, необходимо вначале выяснить, какая из сущностей, участвующих в связи, является родительской, а какая дочерней. Родительской называется сущность, которая передает копию своего первичного ключа в отношение, представляющее дочернюю сущность, для использования в качестве внешнего ключа.

Ниже описаны способы создания отношений на основе структур, представленных в модели данных.

Проверка отношений с помощью правил нормализации

Задача состоит в проверке корректности состава каждого из созданных отношений путем применения к ним процедуры нормализации. Процесс нормализации включает следующие основные этапы:

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

Проверка соответствия отношений требованиям пользовательских транзакций

Необходимо проверить, что указанные транзакции поддерживаются также отношениями, созданными на предыдущем этапе. Для этого все необходимые операции доступа к данным должны быть выполнены вручную с помощью отношений, линий связи первичного ключа/внешнего ключа, соединяющих отношения, ER-диаграммы и словаря данных. Если нам удастся подобным образом выполнить все требуемые транзакции, то на этом проверка логической модели данных будет завершена. Однако если какую-либо из транзакций выполнить вручную не удастся, значит, составленная модель данных является неадекватной и содержит ошибки, которые потребуется устранить. Необходимо вернуться к предыдущим этапам, проверить те области модели данных, которые затрагиваются рассматриваемой транзакцией, найти и устранить ошибку.

Определение требований поддержки целостности данных

Ограничения целостности данных вводятся с целью предотвратить появление в базе противоречивых данных. Ниже рассматриваются пять типов ограничений целостности данных.

Обязательные данные

Некоторые атрибуты всегда должны содержать одно из допустимых значений. Другими словами, эти атрибуты не могут иметь пустого значения. Эти ограничения должны фиксироваться при занесении сведений об атрибуте в словарь данных.

Ограничения для доменов атрибутов

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

Целостность сущностей

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

Ссылочная целостность

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

Необходимо решить несколько важных вопросов, связанных с использованием внешних ключей. Прежде всего, следует проанализировать, допустимо ли использование во внешних ключах пустых значений. В общем случае, если участие дочернего отношения в связи является обязательным, то пустые значения не допускаются. С другой стороны, если участие дочернего отношения в связи является необязательным, то могут быть разрешены пустые значения. Следующая проблема связана с организацией поддержки ссылочной целостности. Реализация этой поддержки осуществляется путем задания ограничений существования, определяющих условия, при которых может вставляться, обновляться или удаляться каждое значение потенциального или внешнего ключа.

Рассмотрим следующие случаи, которые могут возникнуть при обработке данных, моделируемых связью типа 1:*:

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

При удалении строки из дочернего отношения никаких нарушений ссылочной целостности не происходит.

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

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

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

Обновление первичного ключа в строке родительского отношения

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

Ограничения предметной области

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

Обсуждение разработанных локальных логических моделей данных с конечными пользователями

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

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

Создание и проверка глобальной логической модели данных

На данном этапе методологии логического проектирования баз данных путем слияния отдельных локальных логических моделей данных, соответствующих конкретным пользовательским представлениям, создается глобальная логическая модель данных. По завершении объединения локальных моделей может потребоваться проверить правильность полученной глобальной модели как в отношении правил нормализации, так и в отношении возможности выполнения транзакций, предусмотренных спецификациями всех представлений. Проверка происходит с использованием тех же методов, которые применялись при выполнении этапов 2.3 и 2.4. Однако проведение нормализации потребуется только в том случае, если в процессе слияния были внесены изменения в состав отдельных отношений. Аналогичным образом, проверка возможности выполнения транзакций требуется только для тех транзакций, связанных с областями модели, которые были подвергнуты изменениям в ходе слияния. В больших системах подобный подход позволяет существенно сократить объем требуемых повторных проверок.

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

Слияние локальных логических моделей данных в единую глобальную модель данных

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

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

Объединение отношений BusinessOwner с разными первичными ключами

Проверка глобальной логической модели данных

Этот этап аналогичен этапам 2.3 и 2.4, на которых выполнялась проверка каждой локальной логической модели данных. Но в данном случае необходимо проверить только те области модели, которые были созданы в результате любых изменений, внесенных в процессе объединения моделей.

Проверка возможностей расширения модели в будущем

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

Обсуждение глобальной логической модели данных с пользователями

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