
- •Определение типов связей
- •Определение атрибутов и связывание их с типами сущностей и связей
- •Определение доменов атрибутов
- •Определение атрибутов, являющихся потенциальными и первичными ключами
- •Обоснование необходимости использования понятий расширенного моделирования (необязательный этап)
- •Проверка модели на отсутствие избыточности
- •Проверка соответствия локальной концептуальной модели конкретным пользовательским транзакциям
- •Обсуждение локальных концептуальных моделей данных с конечными пользователями
- •Создание и проверка локальной логической модели данных для отдельных пользовательских представлений
- •Исключение особенностей, несовместимых с реляционной моделью (необязательный этап)
- •3. Удаление сложных связей
- •4. Удаление многозначных атрибутов
- •Определение набора отношений исходя из структуры локальной логической модели данных
- •5. Рекурсивные связи "один к одному" (1:1)
- •6. Связи типа суперкласс/подкласс
- •7. Двухсторонние связи "многие ко многим" (*:*)
- •Проверка отношений с помощью правил нормализации
- •Проверка соответствия отношений требованиям пользовательских транзакций
- •Определение требований поддержки целостности данных
- •Обсуждение разработанных локальных логических моделей данных с конечными пользователями
- •Создание и проверка глобальной логической модели данных
- •Слияние локальных логических моделей данных в единую глобальную модель данных
- •1. Анализ имен и содержимого сущностей/отношений и их потенциальных ключей
- •2. Анализ имен и содержимого связей/внешних ключей
- •3. Слияние сущностей/отношений, соответствующих локальным моделям данных
- •Разработка способов получения производных данных
- •Реализация ограничений предметной области
- •Проектирование физического представления базы данных
- •Анализ транзакций
- •Выбор файловой структуры
- •Определение индексов
Обсуждение локальных концептуальных моделей данных с конечными пользователями
Прежде чем завершить первый этап разработки, необходимо обсудить созданные локальные концептуальные модели данных с конечными пользователями. Концептуальная модель данных должна быть представлена ER-диаграммой и сопроводительной документацией, содержащей описание разработанной модели данных. Если в предложенной модели будут обнаружены какие-либо несоответствия, следует внести в нее необходимые изменения (скорее всего, для этого потребуется повторно выполнить один или несколько предыдущих этапов разработки). Этот процесс должен продолжаться до тех пор, пока пользователь не подтвердит, что предложенная ему модель полностью соответствует рассматриваемой предметной области.
Логическое проектирование базы данных (для реляционной модели)
Создание и проверка локальной логической модели данных для отдельных пользовательских представлений
На этом этапе каждая локальная концептуальная модель данных, созданная на этапе 1, преобразуется в локальную логическую модель данных, состоящую из ER-диаграммы реляционной схемы и сопроводительной документации.
По завершении этого этапа должна быть получена правильная, полная и непротиворечивая модель представления. Если в приложении применяется только одно представление, то на этом стадия логического проектирования базы данных, предусмотренная в методологии, заканчивается. А если имеется несколько представлений, должен быть выполнен еще один этап, на котором отдельные локальные логические модели данных объединяются в глобальную логическую модель данных организации.
Исключение особенностей, несовместимых с реляционной моделью (необязательный этап)
1. Удаление двухсторонних связей "многие ко многим" (*:*)
Если в концептуальной модели данных присутствует связь "многие ко многим" (*:*), может быть выполнена декомпозиция этой связи для выявления промежуточной сущности. Связь *:* заменяется двумя связями "один ко многим" (1:*), в которых участвует вновь выявленная сущность.
2. Удаление рекурсивных связей "многие ко многим" (*:*)
Рекурсивная связь представляет собой особый тип связи, в которой определенный тип сущности соединен связью сам с собой. Ниже перечислены три типа рекурсивных связей:
Рекурсивная связь "один к одному" (1:1);
Рекурсивная связь "один ко многим" (1:*);
Рекурсивная связь "многие ко многим" (*:*).
Первые две связи могут быть преобразованы в одно отношение реляционной модели без какой-либо структуризации, но если рекурсивная связь 1:* допускает необязательное участие со стороны связи "многие", то для уменьшения количества пустых значений, хранимых в базе данных, целесообразнее создать второе отношение. Способы преобразования рекурсивных связей 1:1 и 1:* рассматриваются на этапе 2.2. А если в концептуальной модели данных присутствует рекурсивная связь *:*, то следует выполнить декомпозицию этой связи для выявления промежуточной сущности.
3. Удаление сложных связей
Сложной называется связь, в которой участвуют три или более типов сущностей. Если в концептуальной модели данных присутствует сложная связь, можно выполнить ее декомпозицию для выявления промежуточной сущности. А сложная связь заменяется необходимым количеством (двухсторонних) связей 1:* со вновь выявленной сущностью. Например, трехсторонняя связь Registers в представлении Branch соответствует той ситуации, когда сотрудник компании регистрирует нового клиента в отделении (рис. 2, а). Эту связь можно упростить, введя новую сущность и определив (двухсторонние) связи между каждой из первоначальных сущностей и новой сущностью
Рис. 2. Пример преобразования связи: а) сложная связь Registers; б) декомпозиция сложной связи на три двухсторонние связи ('Registers, Processes и Agrees) и новую (слабую) сущность Registration
В этом примере в результате декомпозиции связи Registers выявлена новая (слабая) сущность Registration (Регистрация). Новая сущность связывается с первоначальными сущностями с помощью трех новых двухсторонних связей: Branch Registers Registration(В отделении проводится регистрация), Staff Processes Registration (Сотрудник компании проводит регистрацию) и Client Agrees Registration (Клиент соглашается на регистрацию), как показано на рис. 2, б.