Проверка физической модели реляционной базы данных
Перед созданием физической базы данных проектировщик базы данных должен проверить созданную им модель физической структуры базы данных на полноту и корректность.
Полнота в данном случае означает, что следует убедиться в том, что:
- все сущности логической модели базы данных нашли свое отражение в объектах физической модели;
- в соответствии анализом транзакций системы и требованиями производительности приняты соответствующие проектные решения, которые получили свое отражение в объектах физической структуры;
- определен круг пользователей системы, их роли, и созданы соответствующие объекты базы данных для поддержки;
- оценен потенциальный размер базы данных и ее возможный рост, а полученные оценки нашли свое отражение в объектах базы данных, связанных с управлением файловым пространством базы данных.
Корректность означает, что в процессе денормализации логической модели базы данных при ее преобразовании в физическую с учетом требований по производительности не была потеряна реляционность отношений базы данных на физическом уровне модели.
Заметим, что наших лекциях не нашли своего отражения ряд вопросов проектирования базы данных, а именно - связанных с выбором программно-аппаратной архитектуры (например, трехзвенная архитектура "клиент-сервер"), настройкой производительности, работой с физическим пространством базы данных и т.д. Как правило, эти вопросы, по большей части связанные с конкретной реализацией базы данных, решаются непосредственно администраторами баз данных, а проектировщики редко привлекаются к решению, в том числе и этих задач, на стадии управления изменениями в процессе начального, тестового, опытного этапов эксплуатации базы данных. В наших лекциях мы акцентировали внимание на тех задачах проектировщика базы данных, которые в основном не зависят от учета конкретной программно-аппаратной среды функционирования базы данных.
На этом этапе проектирования базы данных важно завершить документирование модели. Все объекты и их элементы физической модели должны быть описаны и прокомментированы. В результате должен быть создан подробный отчет по физической модели. В этом случае неоценимую поддержку в работе проектировщика оказывают 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
|
|
Таблица
13.11.
Параметры создания представления
Параметр |
Описание |
Значение по умолчанию |
create or replace |
Указывает, будет ли создаваемое представление новым или модификацией уже существующего |
create |
Force/Noforce |
Указывает, нужно ли создавать представление даже при возникновении ошибок (например, если в данный момент отсутствует основной столбец) |
Noforce |
Схема |
Имя схемы, которой будет принадлежать представление |
Схема создателя представления |
Имя_представления |
Задает имя представления |
|
Alias |
Определяет псевдонимы для выражений, используемых в представлении (количество псевдонимов должно совпадать с количеством выражений) |
По умолчанию Oracle создает псевдоним на основе имени выражения |
As |
Указывает столбцы и строки, на которых основано представление |
|
Конструкция_with |
Задает одно или несколько ограничений: with read only, with check option (название для контрольного ограничения) |
|
Таблица
13.12.
Параметры создания синонима
Параметр |
Описание |
Значение по умолчанию |
Public |
Указывает, что синоним будет виден всем пользователям |
Private |
Имя_синонима |
Задает имя синонима |
|
For |
Указывает объект, для которого создается синоним |
|
Dblink |
Указывает полную или частичную связь баз данных для создания синонима объекта, расположенного в удаленной базе данных |
|
Таблица
13.13.
Параметры создания роли
Параметр |
Описание |
Значение по умолчанию |
Имя_роли |
Задает имя роли
|
|
Not identified |
Указывает, что для роли не требуется пароль |
|
Identified |
Указывает, что для разрешения доступа к роли должна использоваться команда set role
|
|
Identified by <пароль> |
Задает пароль, используемый для разрешения доступа к роли |
|
identified externally |
Указывает, что для разрешения доступа к роли должна использоваться аутентификация на уровне операционной системы |
|
Таблица
13.14.
Параметры создания пользователя
Параметр |
Описание |
Значение по умолчанию |
Имя_пользователя |
Задает имя пользователя |
|
By <пароль> |
Создает пароль учетной записи |
|
Externally |
Указывает, что должна использоваться аутентификация операционной системы |
|
Globally as |
Указывает, что пользователь должен быть "глобальным", и задает имя, идентифицирующее этого пользователя |
|
Default tablespace |
Указывает, где должны храниться объекты, созданные пользователем, если для них не было указано табличное пространство
|
SYSTEM |
Temporary Tablespace |
Указывает временное табличное пространство для пользовательских операций сортировки |
SYSTEM |
Quota <размер> on <табличное_пространство> |
Определяет квоту, которую будет иметь пользователь (целое число с буквой К для Кбайт и М для Мбайт), табличное пространство, к которому отнгосится эта квота
|
Квота отсутствует |
Profile |
Указывает имя профиля для пользователя |
Профиль по умолчанию |
Default Role - all, except, none |
Указывает роль по умолчанию для пользователя: "все роли", "все, кроме указанных" или вообще отсутствие роли по умолчанию |
None |
Password expire |
Устанавливает срок, по истечении которого пароль станет недействительным |
Not expired |
Account Lock/Unlock |
Указывает, должна ли учетная запись быть первоначально заблокирована и недоступна или разблокирована |
Unlocked |