Проверка физической модели реляционной базы данных
Перед созданием физической базы данных проектировщик базы данных должен проверить созданную им модель физической структуры базы данных на полноту и корректность.
Полнота в данном случае означает, что следует убедиться в том, что:
- все сущности логической модели базы данных нашли свое отражение в объектах физической модели;
- в соответствии анализом транзакций системы и требованиями производительности приняты соответствующие проектные решения, которые получили свое отражение в объектах физической структуры;
- определен круг пользователей системы, их роли, и созданы соответствующие объекты базы данных для поддержки;
- оценен потенциальный размер базы данных и ее возможный рост, а полученные оценки нашли свое отражение в объектах базы данных, связанных с управлением файловым пространством базы данных.
Корректность означает, что в процессе денормализации логической модели базы данных при ее преобразовании в физическую с учетом требований по производительности не была потеряна реляционность отношений базы данных на физическом уровне модели.
Заметим, что наших лекциях не нашли своего отражения ряд вопросов проектирования базы данных, а именно - связанных с выбором программно-аппаратной архитектуры (например, трехзвенная архитектура "клиент-сервер"), настройкой производительности, работой с физическим пространством базы данных и т.д. Как правило, эти вопросы, по большей части связанные с конкретной реализацией базы данных, решаются непосредственно администраторами баз данных, а проектировщики редко привлекаются к решению, в том числе и этих задач, на стадии управления изменениями в процессе начального, тестового, опытного этапов эксплуатации базы данных. В наших лекциях мы акцентировали внимание на тех задачах проектировщика базы данных, которые в основном не зависят от учета конкретной программно-аппаратной среды функционирования базы данных.
На этом этапе проектирования базы данных важно завершить документирование модели. Все объекты и их элементы физической модели должны быть описаны и прокомментированы. В результате должен быть создан подробный отчет по физической модели. В этом случае неоценимую поддержку в работе проектировщика оказывают 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 |