Проверка физической модели реляционной базы данных
Перед созданием физической базы данных проектировщик базы данных должен проверить созданную им модель физической структуры базы данных на полноту и корректность.
Полнота в данном случае означает, что следует убедиться в том, что:
- все сущности логической модели базы данных нашли свое отражение в объектах физической модели;
- в соответствии анализом транзакций системы и требованиями производительности приняты соответствующие проектные решения, которые получили свое отражение в объектах физической структуры;
- определен круг пользователей системы, их роли, и созданы соответствующие объекты базы данных для поддержки;
- оценен потенциальный размер базы данных и ее возможный рост, а полученные оценки нашли свое отражение в объектах базы данных, связанных с управлением файловым пространством базы данных.
Корректность означает, что в процессе денормализации логической модели базы данных при ее преобразовании в физическую с учетом требований по производительности не была потеряна реляционность отношений базы данных на физическом уровне модели.
Заметим, что наших лекциях не нашли своего отражения ряд вопросов проектирования базы данных, а именно - связанных с выбором программно-аппаратной архитектуры (например, трехзвенная архитектура "клиент-сервер"), настройкой производительности, работой с физическим пространством базы данных и т.д. Как правило, эти вопросы, по большей части связанные с конкретной реализацией базы данных, решаются непосредственно администраторами баз данных, а проектировщики редко привлекаются к решению, в том числе и этих задач, на стадии управления изменениями в процессе начального, тестового, опытного этапов эксплуатации базы данных. В наших лекциях мы акцентировали внимание на тех задачах проектировщика базы данных, которые в основном не зависят от учета конкретной программно-аппаратной среды функционирования базы данных.
На этом этапе проектирования базы данных важно завершить документирование модели. Все объекты и их элементы физической модели должны быть описаны и прокомментированы.
В результате должен быть создан подробный отчет по физической модели. В этом случае неоценимую поддержку в работе проектировщика оказывают CASE-средства поддержки процесса проектирования, например, хорошо известный Erwin или PowerDesigner, которые позволяют в автоматическом режиме создавать такие отчеты.
После разработки или генерирования скрипта создания физической базы данных, загрузки в нее реальных или тестовых данных, проектировщик базы данных обязан с помощью средств СУБД получить информацию о параметрах объектов базы данных, чтобы сопоставить ее с предполагаемыми параметрами, и при необходимости выполнить их корректировку (не забывая отразить эти действия в отчете). Основные параметры объектов, которые следовало бы проконтролировать после создания физической базы данных, приведены в таблицах 13.9.- 13.14. Это касается основных объектов - таблиц, индексов, представлений, синонимов, ролей и пользователей.
Таблица | Имя таблицы | |
Столбец | Имя столбца | |
Default | Устанавливает для столбца значение по умолчанию, которое будет использоваться при отсутствии значения в операторе insert | |
Ограничение_столбца_ref | Содержит ссылку на ограничение другого столбца, которое должно применяться к данному столбцу | |
Ограничение_столбца | Устанавливает ограничения целостности как часть определения столбца | |
Тип_данных | Задает тип данных - числовой, символьный, большой объем и т.д. | |
Ограничение_таблицы | Устанавливает ограничения целостности для все таблицы | |
Ограничение_таблицы_ref | Содержит ссылку на ограничение другой таблицы, которое должно применяться к данной таблице | |
Tablespace | Табличное пространство, в которое должна быть помещена таблица | Табличное пространство по умолчанию, назначенное владельцу таблицы |
Logging/NoLogging | Указывает, должна ли информация об объекте отслеживаться в файле журнала повтора | Logging |
Petfree | Указывает, сколько процентов свободного пространства должно сохраняться в каждом блоке данных для будущих обновлений строк таблицы | Диапазон 1-99, по умолчанию 10 % |
Petused | Задает минимальный объем использованного пространства, поддерживаемый в каждом блоке данных таблицы | Диапазон 1-100, по умолчанию 40 % |
Initrans | Задает начальное количество транзакционных записей, выделяемых в каждом блоке данных таблицы | Диапазон 1-255, по умолчанию 1 (2 для кластера или индекса) |
Maxtrans | Задает максимальное количество параллельных транзакций, которые могут обновлять блок данных таблицы (не применяется к запросам) | Диапазон 1-255, значение по умолчанию зависит от размера блока данных |
Конструкция_хранения | Те же параметры, что и для табличного пространства |
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. Это касается основных объектов - таблиц, индексов, представлений, синонимов, ролей и пользователей.
Таблица | Имя таблицы | |
Столбец | Имя столбца | |
Default | Устанавливает для столбца значение по умолчанию, которое будет использоваться при отсутствии значения в операторе insert | |
Ограничение_столбца_ref | Содержит ссылку на ограничение другого столбца, которое должно применяться к данному столбцу | |
Ограничение_столбца | Устанавливает ограничения целостности как часть определения столбца | |
Тип_данных | Задает тип данных - числовой, символьный, большой объем и т.д. | |
Ограничение_таблицы | Устанавливает ограничения целостности для все таблицы | |
Ограничение_таблицы_ref | Содержит ссылку на ограничение другой таблицы, которое должно применяться к данной таблице | |
Tablespace | Табличное пространство, в которое должна быть помещена таблица | Табличное пространство по умолчанию, назначенное владельцу таблицы |
Logging/NoLogging | Указывает, должна ли информация об объекте отслеживаться в файле журнала повтора | Logging |
Petfree | Указывает, сколько процентов свободного пространства должно сохраняться в каждом блоке данных для будущих обновлений строк таблицы | Диапазон 1-99, по умолчанию 10 % |
Petused | Задает минимальный объем использованного пространства, поддерживаемый в каждом блоке данных таблицы | Диапазон 1-100, по умолчанию 40 % |
Initrans | Задает начальное количество транзакционных записей, выделяемых в каждом блоке данных таблицы | Диапазон 1-255, по умолчанию 1 (2 для кластера или индекса) |
Maxtrans | Задает максимальное количество параллельных транзакций, которые могут обновлять блок данных таблицы (не применяется к запросам) | Диапазон 1-255, значение по умолчанию зависит от размера блока данных |
Конструкция_хранения | Те же параметры, что и для табличного пространства |
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 |