
- •Определение типов связей
- •Определение атрибутов и связывание их с типами сущностей и связей
- •Определение доменов атрибутов
- •Определение атрибутов, являющихся потенциальными и первичными ключами
- •Обоснование необходимости использования понятий расширенного моделирования (необязательный этап)
- •Проверка модели на отсутствие избыточности
- •Проверка соответствия локальной концептуальной модели конкретным пользовательским транзакциям
- •Обсуждение локальных концептуальных моделей данных с конечными пользователями
- •Создание и проверка локальной логической модели данных для отдельных пользовательских представлений
- •Исключение особенностей, несовместимых с реляционной моделью (необязательный этап)
- •3. Удаление сложных связей
- •4. Удаление многозначных атрибутов
- •Определение набора отношений исходя из структуры локальной логической модели данных
- •5. Рекурсивные связи "один к одному" (1:1)
- •6. Связи типа суперкласс/подкласс
- •7. Двухсторонние связи "многие ко многим" (*:*)
- •Проверка отношений с помощью правил нормализации
- •Проверка соответствия отношений требованиям пользовательских транзакций
- •Определение требований поддержки целостности данных
- •Обсуждение разработанных локальных логических моделей данных с конечными пользователями
- •Создание и проверка глобальной логической модели данных
- •Слияние локальных логических моделей данных в единую глобальную модель данных
- •1. Анализ имен и содержимого сущностей/отношений и их потенциальных ключей
- •2. Анализ имен и содержимого связей/внешних ключей
- •3. Слияние сущностей/отношений, соответствующих локальным моделям данных
- •Разработка способов получения производных данных
- •Реализация ограничений предметной области
- •Проектирование физического представления базы данных
- •Анализ транзакций
- •Выбор файловой структуры
- •Определение индексов
Анализ транзакций
Для успешного планирования каждой транзакции необходимо знать следующее:
транзакции, выполняемые наиболее часто и оказывающие существенное влияние на производительность;
транзакции, наиболее важные для работы организации;
периоды времени на протяжении суток/недель, в которые нагрузка базы данных возрастает до максимума (называемые периодами пиковой нагрузки).
Эта информация используется для определения компонентов базы данных, которые могут вызвать проблемы производительности. Кроме того, необходимо определить такие характеристики транзакций высокого уровня, как атрибуты, модифицируемые в транзакциях обновления, или критерии, которые служат для ограничения количества строк, возвращаемых по запросу. Эта информация используется для определения наиболее подходящей файловой организации и создания индексов.
Во многих случаях проанализировать все ожидаемые транзакции просто невозможно, поэтому необходимо тем или иным образом выбрать наиболее "важные" из них. Существует эмпирическое правило, согласно которому выполнение около 20% наиболее активных запросов пользователей создает примерно 80% общей нагрузки на базу данных. Это правило "80/20" может использоваться как рекомендация по проведению анализа. Для определения того, какие из транзакций подлежат детальному анализу, воспользуемся таблицей соответствия транзакций и отношений, в которой показаны отношения, доступ к которым происходит при выполнении каждой транзакции, а также диаграммой частоты выполнения транзакций, которая схематически показывает отношения, вероятность использования которых в транзакциях наиболее высока. Для выделения областей, которые с наибольшей вероятностью могут явиться источником проблем, необходимо выполнить перечисленные ниже действия.
Подготовка схемы соответствия путей выполнения транзакций и отношений
Этапы 1.8, 2.4 и 3.2 методологии концептуального/логического проектирования базы данных предусматривают оценку моделей данных для определения того, поддерживают ли они все транзакции, необходимые для работы пользователей; для этого устанавливается соответствие между путями выполнения транзакций и сущностями/отношениями. Если при такой проверке используется схема путей выполнения транзакций, то в дальнейшем эта схема позволяет определить, доступ к каким отношениям происходит наиболее часто.
Анализ использования данных
После определения наиболее важных транзакций подробно анализируется каждая из них. Для каждой транзакции необходимое выяснить следующее.
Отношения и атрибуты, к которым осуществляется доступ в процессе выполнения транзакции, а также тип доступа; это означает определение того, выполняется ли в этой транзакции вставка, обновление, удаление или выборка данных.
При изучении транзакции обновления необходимо определить, какие атрибуты обновляются в данной транзакции, поскольку эти атрибуты могут потребовать применения вспомогательных структур доступа.
Атрибуты, которые используются в любых предикатах (в языке SQL предикатами являются условия, указанные в конструкции WHERE). Проверка того, предусматривают ли эти предикаты следующее:
сопоставление с шаблоном, например name LIKE ' %Smith% ';
поиск в диапазоне, например salary BETWEEN 10000 AND 20000;
выборка по точному значению ключа, например salary = 30000.
Следует учитывать, что такие атрибуты могут потребовать создания вспомогательных структур доступа.
Запросы, в которых используются атрибуты, участвующие в соединении двух или нескольких отношений.
Ожидаемая частота выполнения транзакции; например, может быть установлено, что транзакция выполняется примерно 50 раз в сутки.
Установленные показатели производительности для транзакции; например, требование, чтобы транзакция выполнялась в течение 1 секунды.
Наибольший приоритет при определении вспомогательных структур доступа должны иметь атрибуты, применяемые во всех предикатах наиболее часто, или наиболее важные транзакции.
На данной стадии может оказаться излишним изучение всего оператора SQL, но в указанной форме необходимо привести примерно такие данные об этом операторе:
все применяемые предикаты;
все атрибуты, которые могут потребоваться для соединения отношений;
атрибуты, применяемые для упорядочения результатов;
атрибуты, применяемые для группирования данных;
все встроенные функции, применяемые в транзакции;
все атрибуты, которые могут быть обновлены в транзакции.
Эта информация может применяться для определения используемых индексов, как показано ниже.