- •1. Создание модели процессов в bp-win
- •1.1. Инструментальная среда bp-win
- •1.2. Методология idef0
- •1.2.1. Принципы построения модели idef0
- •1.2.2. Работы (Activity)
- •1.2.3. Стрелки (Arrow)
- •1.2.4. Нумерация работ и диаграмм
- •1.1.5. Диаграммы дерева узлов и fео
- •1.2.6. Каркас диаграммы
- •1.2.7. Слияние и расщепление моделей
- •1.2.8. Рекомендации по рисованию диаграмм
- •1,2.9. Проведение экспертизы
- •1.3. Создание отчетов в bp-win
- •1.4. Стоимостный анализ (abc) и свойства, определяемые пользователем (udp)
- •1.5. Дополнение созданной модели процессов диаграммами dfd и Workflow (idef3)
- •1.5.1. Диаграммы потоков данных (Data Flow Diagramming)
- •1.5.2. Метод описания процессов idef3
- •1.5.3. Имитационное моделирование
- •Рис, 1.58. Диалог задания свойств, определяемых пользователем для экспорта в
- •2. Создание модели данных с помощью er-win
- •2.1. Отображение модели данных в er-win
- •2.1.1. Физическая и логическая модель данных
- •2.1.3. Подмножества модели и сохраняемые отображения
- •2.2. Создание логической модели данных
- •2.2.1. Уровни логической модели
- •2.2.2. Сущности и атрибуты
- •2.2.3. Связи
- •2.2.4. Типы сущностей и иерархия наследования
- •2.2.5. Ключи
- •Табельный номер;
- •Номер паспорта;
- •2.2.6. Нормализация данных
- •Рас. 2.53. Иллюстрация четвертой нормальной формы
- •2.2.7. Домены
- •2.3. Создание физической модели данных
- •2.3.1. Уровни физической модели
- •2.3.2. Выбор сервера
- •2.3.3. Таблицы, колонки и представления (view)
- •Рас. 2.63. Диалог Column Editor
- •2.3.4. Правила валидации и значения по умолчанию
- •2.3.5. Индексы
- •2.3.6. Задание объектов физической памяти
- •2.3.7. Триггеры и хранимые процедуры
- •Puс. 2.85. Редактор Schema Properties
- •Рас. 2.86. Закладка Pre&Post Script диалога Schema Properties
- •2.3.8. Проектирование хранилищ данных
- •Рас. 2.91. Выбор нотации dm
- •2.3.10. Прямое и обратное проектирование
- •Рас. 2.106. Диалог Reverse Engineer - Set Options
- •2.4. Генерация кода клиентской части с помощью er-win
- •2.4.1. Расширенные атрибуты
- •2.4.2. Генерация кода к Visual Basic
- •Рас. 2.116. Закладки Power Builder диалога Column Editor
- •2.5. Создание отчетов в er-win
- •2.5.1. Интерфейс Report Browser
- •2.6. Словари er-win
- •2.6.1. Генерация словаря er-win
- •2.6.2. Использование словаря er-win
- •3. Связывание модели процессов и модели данных
- •3.1. Соответствие модели данных и модели процессов
- •3.2. Экспорт данных из er-win в bp-win и связывание объектов модели данных со стрелками и работами
- •3.3. Создание сущностей и атрибутов bp-win и их экспорт в er-win
- •4. Групповая разработка моделей данных: и моделей процессов с помощью platinum Model Mart
- •4.1. Инсталляция Model Mart
- •Рис, 4.1. Создание табличного пространства для Model Mart в диалоге oracle Physical Object Editor
- •4.2. Администрирование Model Mart
- •Рис, 4.5. Model Marl Security Profile Manager -диалог задания прав группам пользователей
- •4.3. Использование репозитория Model Mart
- •5. Создание объектной модели
- •5.1. Язык uml
- •5.2. Создание модели данных на основе объектной модели с помощью er-win Translation Wizard
Рас. 2.53. Иллюстрация четвертой нормальной формы
Поддержка нормализации в ER-win. ER-win не содержит полного алгоритма нормализации и не может проводить нормализацию автоматически, однако его возможности облегчают создание нормализованной модели данных. Запрет на присвоение неуникальных имен атрибутов в рамках модели (при соответствующей установке опции Unique Name) облегчает соблюдение правила "один факт - в одном месте". Имена ролей атрибутов внешних ключей и унификация атрибутов также облегчают построение нормализованной модели.
Денормализация. В результате нормализации все взаимосвязи данных становятся правильно определены, исключаются аномалии при оперировании с данными, модель данных становится легче поддерживать. Однако часто нормализация данных не ведет к повышению производительности ИС в целом. Рассмотрим примеры на рис. 2.47 и 2.52. Для получения полной информации о сотруднике из ненормализованной структуры данных достаточно обратиться к одной таблице (см. рис. 2.47). После приведения структуры данных к третьей нормальной форме (рис. 2.52) информация о сотруднике содержится уже в четырех таблицах. Хотя общее количество строк в этих таблицах может быть меньше, чем в исходной (до нормализации), теперь для получения полной информации о сотруднике серверу БД необходимо обращаться одновременно к четырем таблицам (объединение таблиц, join). Время выполнения запроса с объединением может во много раз превосходить время выполнения запроса к одной таблице, другими словами, в приведенном примере общая производительность ИС в результате нормализации скорее всего упадет. В целях повышения производительности при переходе на физический уровень приходится сознательно отходить от нормальных форм для того, чтобы использовать возможности конкретного сервера или ИС в целом.
В отличие от процесса нормализации денормализация не может быть представлена в виде четко сформулированных правил. К сожалению, в каждом конкретном случае приходится искать конкретные решения, которые используют специфику ИС и предметной области и не могут быть тиражированы.
Примером денормализации могут служить производные атрибуты, которые являются нарушением первой нормальной формы (см. 2.2.2). Другой пример денормализации приведен на рис. 2.54.
Рис. 2.54. Пример денормализации
Слева данные находятся в третьей нормальной форме, но для получения из БД информации о сотруднике, включая его оклад, приходится обращаться к таблицам Должность и Сотрудник. Если в таблицу Сотрудник добавить колонку Оклад (рис. 2.54, справа), то тогда при выборке информации о сотруднике достаточно обратиться только к таблице Сотрудник (исключается объединение). При этом нарушается третья нормальная форма и возникают аномалии, в том числе аномалии при обновлении (если оклад соответствующих должности меняется, необходимо менять несколько записей по числу сотрудников на одной должности). Для решения проблемы можно делать выборку только из таблицы Сотрудник, а обновлять значение оклада только в таблице Должность. Но при этом возникает противоречие между старым значением оклада, хранящимся в таблице Сотрудник, и новыми данными, хранящимися в таблице Должность. Чтобы избежать противоречия, можно создать утилиту (процедуру сервера), которая будет запускаться во время минимальной загрузки сервера, например но- 1 чью, и выравнивать значения колонок. Если при выборке должности всегда необходимо самое свежее значение, то такое решение неприемлемо. Если задача позволяет подождать до начала следующего дня после редактирования справочника Должность, то такое решение вполне допустимо.
Заметим, что приведенный пример следует воспринимать исключительно как иллюстрацию, а не как руководство к действию.
Еще один пример денормализации данных будет рассмотрен в подразделе 2.2.8, посвященном проектированию хранилищ данных.
Поддержка денормализации в ER-win. Денормализация, как правило, проводится на уровне физической модели. ER-win позволяет сохранить на уровне логической модели нормализованную структуру, при этом построить на уровне физической модели структуру (возможно, денормализованную), которая обеспечивает лучшую производительность, используя особенности конкретной СУБД и бизнес-правил предметной области.
ER-win имеет следующую функциональность для поддержки денормализации:
Сущности, атрибуты, ключи и домены можно создавать только на уровне логической модели, включив в соответствующих редакторах опцию Logical Only (см., например, рис. 2.10 и 2.15). Такие объекты не будут отображаться на уровне физической модели и не будут создаваться при генерации БД.
Таблицы, колонки, домены и индексы можно создавать только на уровне физической модели (опция Physical Only, см. 2.3). Например, на уровне только физической модели может быть создана колонка Оклад таблицы Сотрудник, см. рис. 2.54.
При автоматическом разрешении связи многие-ко-многим (см. 2.2.3) в физической модели создается новая таблица и структура данных может быть дополнена только на уровне физической модели.