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

Проверка физической модели реляционной базы данных


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

Полнота в данном случае означает, что следует убедиться в том, что:

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

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

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

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

После разработки или генерирования скрипта создания физической базы данных, загрузки в нее реальных или тестовых данных, проектировщик базы данных обязан с помощью средств СУБД получить информацию о параметрах объектов базы данных, чтобы сопоставить ее с предполагаемыми параметрами, и при необходимости выполнить их корректировку (не забывая отразить эти действия в отчете). Основные параметры объектов, которые следовало бы проконтролировать после создания физической базы данных, приведены в таблицах 13.9.- 13.14. Это касается основных объектов - таблиц, индексов, представлений, синонимов, ролей и пользователей.

Таблица 13.9. Параметр реляционной таблицыПараметрОписаниеЗначение по умолчанию
ТаблицаИмя таблицы
СтолбецИмя столбца
DefaultУстанавливает для столбца значение по умолчанию, которое будет использоваться при отсутствии значения в операторе insert
Ограничение_столбца_refСодержит ссылку на ограничение другого столбца, которое должно применяться к данному столбцу
Ограничение_столбцаУстанавливает ограничения целостности как часть определения столбца
Тип_данныхЗадает тип данных - числовой, символьный, большой объем и т.д.
Ограничение_таблицыУстанавливает ограничения целостности для все таблицы
Ограничение_таблицы_refСодержит ссылку на ограничение другой таблицы, которое должно применяться к данной таблице
TablespaceТабличное пространство, в которое должна быть помещена таблицаТабличное пространство по умолчанию, назначенное владельцу таблицы
Logging/NoLoggingУказывает, должна ли информация об объекте отслеживаться в файле журнала повтораLogging
PetfreeУказывает, сколько процентов свободного пространства должно сохраняться в каждом блоке данных для будущих обновлений строк таблицыДиапазон 1-99, по умолчанию 10 %
PetusedЗадает минимальный объем использованного пространства, поддерживаемый в каждом блоке данных таблицыДиапазон 1-100, по умолчанию 40 %
InitransЗадает начальное количество транзакционных записей, выделяемых в каждом блоке данных таблицыДиапазон 1-255, по умолчанию 1 (2 для кластера или индекса)
MaxtransЗадает максимальное количество параллельных транзакций, которые могут обновлять блок данных таблицы (не применяется к запросам)Диапазон 1-255, значение по умолчанию зависит от размера блока данных
Конструкция_храненияТе же параметры, что и для табличного пространства
Таблица 13.10. Параметры создания индексаПараметрОписаниеЗначение по умолчанию
UnigueУказывает, что значения столбца (столбцов) индекса должны быть уникальныNonunigue
BitmapУказывает, что будет битовым, а не индексом В-дерева (используется для столбцов с низкой кардинальностью)В-дерево
СхемаУказывает имя владельца таблицыСхема создателя индекса
Имя_индексаЗадает имя индекса
Конструкция кластерного индексаУказывает, что индекс должен быть построен для кластера, и содержит список кластерных атрибутов
Конструкция индекса таблицыУказывает таблицу, для которой строится индекс, в том числе любые псевдонимы таблицы, список индексных выражений, а также является ли индекс локальным или глобальным (для разделенных индексов)По умолчанию используется схема создателя индекса, индекс создается как глобальный
Список индексных выраженийОпределяет либо столбцы, по которым выполняется индексирование, либо список выражений для создания функционального индексаДля регулярного индекса не более 32 столбцов; для битового индекса не более 30
ASC/DESCУказывает, в каком порядке будет создаваться индекс - возрастающем или убывающемПо возрастанию
Список физических атрибутовТе же атрибуты, что и для таблицы: pctfree, pctused, initrans, maxtrans, конструкция_хранения
Logging/NologgingУказывает, будет ли информация об объекте отслеживаться в файле журнала повтораLogging
OnlineУказывает, должен ли индекс быть доступен сразу после созданияOnline
Compute statisticsУказывает, должна ли генерироваться статистика по индексу
TablespaceУказывает табличное пространство, в котором будет храниться индексТабличное пространство по умолчанию, назначенное создателю индекса
Compress/NocompressПозволяет исключить повторяющиеся ключевые словаNocompress
NosortУказывает, что значения должны вставляться в порядке возрастания, - Oracle не будет сортировать строки при вставке
ReverceСохраняет байты индекса в обратном порядке, за исключением идентификатора строки (row ID) - не может использоваться совместно с nosort
<


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

После разработки или генерирования скрипта создания физической базы данных, загрузки в нее реальных или тестовых данных, проектировщик базы данных обязан с помощью средств СУБД получить информацию о параметрах объектов базы данных, чтобы сопоставить ее с предполагаемыми параметрами, и при необходимости выполнить их корректировку (не забывая отразить эти действия в отчете). Основные параметры объектов, которые следовало бы проконтролировать после создания физической базы данных, приведены в таблицах 13.9.- 13.14. Это касается основных объектов - таблиц, индексов, представлений, синонимов, ролей и пользователей.

Таблица 13.9. Параметр реляционной таблицыПараметрОписаниеЗначение по умолчанию
ТаблицаИмя таблицы
СтолбецИмя столбца
DefaultУстанавливает для столбца значение по умолчанию, которое будет использоваться при отсутствии значения в операторе insert
Ограничение_столбца_refСодержит ссылку на ограничение другого столбца, которое должно применяться к данному столбцу
Ограничение_столбцаУстанавливает ограничения целостности как часть определения столбца
Тип_данныхЗадает тип данных - числовой, символьный, большой объем и т.д.
Ограничение_таблицыУстанавливает ограничения целостности для все таблицы
Ограничение_таблицы_refСодержит ссылку на ограничение другой таблицы, которое должно применяться к данной таблице
TablespaceТабличное пространство, в которое должна быть помещена таблицаТабличное пространство по умолчанию, назначенное владельцу таблицы
Logging/NoLoggingУказывает, должна ли информация об объекте отслеживаться в файле журнала повтораLogging
PetfreeУказывает, сколько процентов свободного пространства должно сохраняться в каждом блоке данных для будущих обновлений строк таблицыДиапазон 1-99, по умолчанию 10 %
PetusedЗадает минимальный объем использованного пространства, поддерживаемый в каждом блоке данных таблицыДиапазон 1-100, по умолчанию 40 %
InitransЗадает начальное количество транзакционных записей, выделяемых в каждом блоке данных таблицыДиапазон 1-255, по умолчанию 1 (2 для кластера или индекса)
MaxtransЗадает максимальное количество параллельных транзакций, которые могут обновлять блок данных таблицы (не применяется к запросам)Диапазон 1-255, значение по умолчанию зависит от размера блока данных
Конструкция_храненияТе же параметры, что и для табличного пространства
Таблица 13.10. Параметры создания индексаПараметрОписаниеЗначение по умолчанию
UnigueУказывает, что значения столбца (столбцов) индекса должны быть уникальныNonunigue
BitmapУказывает, что будет битовым, а не индексом В-дерева (используется для столбцов с низкой кардинальностью)В-дерево
СхемаУказывает имя владельца таблицыСхема создателя индекса
Имя_индексаЗадает имя индекса
Конструкция кластерного индексаУказывает, что индекс должен быть построен для кластера, и содержит список кластерных атрибутов
Конструкция индекса таблицыУказывает таблицу, для которой строится индекс, в том числе любые псевдонимы таблицы, список индексных выражений, а также является ли индекс локальным или глобальным (для разделенных индексов)По умолчанию используется схема создателя индекса, индекс создается как глобальный
Список индексных выраженийОпределяет либо столбцы, по которым выполняется индексирование, либо список выражений для создания функционального индексаДля регулярного индекса не более 32 столбцов; для битового индекса не более 30
ASC/DESCУказывает, в каком порядке будет создаваться индекс - возрастающем или убывающемПо возрастанию
Список физических атрибутовТе же атрибуты, что и для таблицы: pctfree, pctused, initrans, maxtrans, конструкция_хранения
Logging/NologgingУказывает, будет ли информация об объекте отслеживаться в файле журнала повтораLogging
OnlineУказывает, должен ли индекс быть доступен сразу после созданияOnline
Compute statisticsУказывает, должна ли генерироваться статистика по индексу
TablespaceУказывает табличное пространство, в котором будет храниться индексТабличное пространство по умолчанию, назначенное создателю индекса
Compress/NocompressПозволяет исключить повторяющиеся ключевые словаNocompress
NosortУказывает, что значения должны вставляться в порядке возрастания, - Oracle не будет сортировать строки при вставке
ReverceСохраняет байты индекса в обратном порядке, за исключением идентификатора строки (row ID) - не может использоваться совместно с nosort
<

Содержание раздела