Замечание о денормализации
Не следует ставить нормализацию структуры хранения данных самоцелью. В реальных системах активно используются денормализованные структуры. Это диктуется требованиями к скорости обработки запросов и удобством работы с базой на программном уровне. Часто целесообразно денормализовать БД и, соответственно, усложнить специализированное ПО, поддерживающие БД в непротиворечивом состоянии, но тем самым одновременно облегчить формирование SQL-запросов, упростить их и увеличить скорость обработки. Например, сама концепция баз данных типа «хранилище данных» (data warehouse), ориентированных на накопление и анализ информации, предполагается использование простых избыточных структур.
Этапы построения модели (по IDEF1X)
Оригинальная документация на IDEF1X содержит не только описание визуального языка, но рекомендации по моделированию. В частности, разработчики предлагают придерживаться описываемой ниже последовательности действий.
Весь процесс построения условно делится на пять фаз:
1. подготовка;
2. определение сущностей;
3. определение отношений;
4. определение ключей;
5. определение атрибутов.
Каждая фаза состоит из нескольких шагов, отличающихся друг от друга по содержанию.
Фаза | Шаг | Описание |
1. | 1.1. Определение целей моделирования | Должны быть определены назначение модели и границы моделирования (очерчена область моделирования). Например, необходимо определиться, будет ли это модель типа «как есть» на самом деле (as is), или типа «как должно быть» (should be). |
1.2. Разработка плана моделирования | Необходимо установить состав и последовательность выполнения работ, участие персонала, а также оценить затраты. | |
1.3. Организация команды | Участники команды должны совместно выполнять по крайней мере пять основных ролей: руководитель, моделировщик, поставщик информации, эксперт в предметной области, участник группы приемочного контроля. Назначение каждому участнику команды одной основной роли позволит распределить ответственность. | |
1.4. Сбор информации | Сбор материала для моделирования на основе сформулированных целей. | |
1.5. Утверждение условных соглашений | Согласование условных соглашений, форм представления информации. Например, правил формирования наименований сущностей. | |
2. | 2.1. Выявление сущностей | Поиск объектов, которые могут стать сущностями. При выявлении сущностей может быть полезно отвечать на такой набор вопросов относительно каждого объекта-кандидата: - имеет ли объект различимые характеристики? - существует ли несколько экземпляров объекта? - отличим ли один экземпляр от другого? - ссылается ли он на что-то или характеризует что-то? Положительные ответы на первые три вопроса идут в пользу того, что объект надо рассматривать как сущность, положительный ответ на последний вопрос свидетельствует в пользу варианта атрибутного характера. |
2.2. Определение сущностей | Составление словаря сущностей, включающего: наименование сущности, пояснение смысла сущности (собственно определение), синонимы наименования сущности. | |
3. | 3.1. Выявление взаимосвязанных сущностей | Определение пар сущностей, между которыми может существовать связь. Новичкам может быть полезно воспользоваться матрицей связей, в которой строки и столбцы помечены наименованиями сущностей, а факт возможной связи между сущностью-строкой и сущностью-столбцом показывается крестом в ячейке пересечения этих строки и столбца. |
3.2. Определение отношений | Для каждой выявленной связь указывается вид зависимости сущностей, наименование и развернутое словесное описание. Естественно, в процессе определения отношений могут быть отвергнуты одни выявленные связи и/или добавлены другие. | |
3.3. Построение концептуального уровня модели | Изображается концептуальный уровень модели, содержащий определенные ранее сущности и отношения, при этом допустимо использовать связи «многие ко многим». | |
4. | 4.1. Устранение неопределенных отношений | Все неопределенные отношения заменяются на совокупность связей «один ко многим» и/или связей типа «наследование», при этом обычно формируются новые сущности. Как правило, новые сущности абстрактны, имеют вспомогательный характер и отражают взаимодействие исходных сущностей. Наименования новых сущностей часто сложные, например: сущность «Поставщик-склад» описывает некоторое отношение между сущностью «Поставщик» и сущностью «Склад». |
4.2. Формирование функциональных представлений. | Поскольку модель становится сложна, то эффективной работы с ней, в частности рецензирования, целесообразно нарисовать некоторое количество фрагментов, соответствующих определенной точке зрения, — так называемых функциональных представлений. Каждое представление изображается на одной диаграмме. | |
4.3. Выявление первичных ключей | Выявляются все кандидаты на роль первичного ключа, из них выбирается первичный ключ. Оставшиеся ключи помечаются как альтернативные первичные ключи (alternate key) | |
4.4. Миграция первичных ключей | Первичный ключ родительской (родовой) сущности добавляется в состав атрибутов дочерней (категориальной) сущности. Он становится так называемым внешним ключом (foreign key). В зависимости от вида связи ключ может войти в состав как первичного ключа, так и описательных атрибутов. | |
4.5. Проверка ключей и отношений | Модель должна удовлетворять следующим основным требованиям: - отсутствие отношений «многие ко многим»; - осуществлено добавление (миграция) внешних ключей в соответствии с имеющимися отношениями; - все атрибуты атомарны, т.е. атрибут любого экземпляра сущности может иметь только одно значение; - никакой атрибут первичного ключа не может принимать неопределенное значение; - сущности со сложным (многоатрибутным) первичным ключом не могут быть разделены на несколько сущностей с более простыми уникальными ключами; - нет дублирования отношений, когда пара сущностей связываются одинаковыми отношениями, но по различным путям, обычно с использованием промежуточных сущностей. | |
4.6. Определение ключей | Для каждого ключа указывается наименование, определение, синонимы. | |
4.7. Формирование логического уровня модели | Функциональные представления модели изображаются на логическом уровне, т.е. они включают сущности, отношения, первичные и внешние ключи. | |
5. | 5.1. Выявление неключевых атрибутов | Процесс аналогичен вычленению сущностей, но теперь отбираются характеристики. |
5.2. Привязка атрибутов к сущностям | Каждый атрибут должен быть помещен в состав одной из сущностей. | |
5.3. Определение атрибутов | Для каждого атрибута указывается наименование, определение, синонимы. | |
5.4. Усовершенствование модели | Анализ и улучшение структуры модели, нормализация. | |
5.5. Формирование физического уровня модели | Функциональные представления модели изображаются на физическом уровне, т.е. они включают полные описания сущностей, всех атрибутов и отношений. На основе словарей сущностей, атрибутов и отношений формируется документация. |
Дата добавления: 2018-11-25; просмотров: 345;