Лабораторная работа №3 / БД_лаб3.doc
Лабораторная работа № 3
Создание физической модели данных для Oracle
в среде ERwin.
Цель работы: изучить основы преобразования логической модели данных, построенной в среде ERwin, в физическую модель для Oracle.
Теоретические сведения.
Выбор сервера.
Физическая модель содержит всю информацию, необходимую для реализации конкретной базы данных. Физический уровень представления модели зависит от выбранного сервера и является точным отображением системного каталога СУБД. ERwin поддерживает эту модель путем генерации ситемного каталога. Для выбора СУБД служит редактор Target Server (меню Server/Target Server…доступен только на физическом уровне).
Диалог Target Server позволяет задать тип данных и опцию NULL для новых колонок. Тип данных можно выбрать в списке Default Datatype, который автоматически заполняется типами данных, поддерживаемых выбранным сервером. Группа кнопок Default Non-Key Null Option позволяет разрешить или запретить значения NULL для неключевых колонок.
По умолчанию ERwin генерирует имена таблиц и колонок на основе имен соответствующих сущностей и атрибутов логической модели, с учетом ограничений, налагаемых выбранной СУБД. Значения по умолчанию можно при желании изменить путем изменения шаблона (Target Server — Table Name Macro) или вручную.
Прямое и обратное проектирование.
Процесс генерации физической схемы БД из логической модели данных называется прямым проектированием (Forward Engineering). При генерации физической схемы Erwin включает триггеры ссылочной целостности, хранимые процедуры, индексы, ограничения и другие возможности, доступные при определении таблиц в выбранной СУБД.
Процесс генерации логической модели из физической БД называется обратным проектированием (Reverse Engineering). Erwin позволяет создать модель данных путем обратного проектирования имеющейся БД. После того, как модель создана, можно переключиться на другой сервер (модель будет конвертирована) и произвести прямое проектирование структуры БД для другой СУБД.
Кроме режима прямого и обратного проектирования Erwin поддерживает синхронизацию между логической моделью и системным каталогом СУБД на протяжении всего жизненного цикла создания БД.
Для генерации системного каталога БД следует выбрать пункт меню Tasks / Forward Engineering / Schema Generation. В окне Schema Generation в закладке Options можно задать опции генерации объектов БД — триггеров, таблиц, представлений, колонок, индексов и т.д.
Кнопка Preview позволяет отобразить SQL—скрипт, создаваемый Erwin для генерации системного каталога СУБД.
Нажатие кнопки Generate приведет к запуску процесса генерации схемы. Возникает диалог связи с БД, устанавливается сеанс связи с сервером и начинает выполняться SQL-скрипт.
Кнопка Report сохраняет тот же скрипт в SQL текстовом файле. Эти команды можно в дальнейшем редактировать любым текстовым редактором и выполнять при помощи соответствующей утилиты сервера.
Правила именования объектов в Oracle:
Идентификатор:
1. может содержать до 30 символов (латинские буквы, цифры, символ подчеркивания, $, #);
2. начинается с буквы;
3. не чувствителен к регистру (eMp = EMP);
4. уникален в схеме пользователя;
5. отличен от зарезервированных слов.
Кроме того, название должно отражать смысл именуемого объекта (например, таблица STUD или STD). Имена атрибутов (колонок) должны содержать имя таблицы (STUD_ID или STD_NAME).
Таблицы, колонки и представления при создании физической модели.
Внесение новых таблиц и связей между ними на физическом уровне производятся также как на логическом уровне. Вызвать редакторы Table Editor или Column Editor для задания свойств таблиц и колонок можно через контекстно-зависимое меню для этих таблиц. Все изменения, сделанные в Table Editor или Column Editor, не отражаются на именах сущностей и атрибутов, поскольку информация на логическом и физическом уровнях в Erwin хранится отдельно.
Редактор Table Editor позволяет задать свойства любой таблицы модели, отличные от значения по умолчанию, в том числе имя таблицы, синонимы, правила валидации (утверждения), процедуры и т.д.
Для задания свойств колонок, отличных от значения по умолчанию, служит редактор Column Editor. Он позволяет задать тип данных, опцию NULL, правила валидации и значение по умолчанию для каждой колонки. Правила валидации и значение по умолчанию должны быть описаны и именованы предварительно в Validation Rule Editor и Default / Initial Editor. Для вызова этих диалогов служат кнопки справа от соответствующих раскрывающихся списков.
Представления (view) или иными словами временные или производные таблицы, представляют собой объекты БД, данные в которых не хранятся постоянно, как в таблице, а формируются динамически при обращении к представлению. Представление не может существовать само по себе, а определяется только в терминах одной или нескольких таблиц. Применение представлений позволяет разработчику БД обеспечить каждому пользователю или группе пользователей свой взгляд на данные, что решает проблемы простоты использования и безопасности данных. ERwin имеет специальные инструменты для создания и редактирования представлений. Палитра инструментов на физическом уровне содержит кнопки внесения представлений и установления связей между таблицами и представлениями. По умолчанию представление получает номер V_n, где n — уникальный порядковый номер представления.
Для редактирования представления необходимо выбрать в контекстно-зависимом меню для представления пункт View Editor. Каждой таблице можно задать необходимую информацию, которая будет использоваться в SQL-команде для создания представления.
Правила валидации и значения по умолчанию.
Правило валидации задает список допустимых значений для конкретной колонки и/или правила проверки допустимых значений. Значение по умолчанию — значение, которое нужно ввести в колонку, если никакое другое значение не задано явным образом во время ввода данных. С каждой колонкой или доменом можно связать значение по умолчанию (если выбранная СУБД поддерживает домены).
В окне Validation Rule Editor можно задать максимальное и минимальное значение и тип валидации (где проверять — на сервере или в клиентском приложении). Например, значение, вводимое в колонку Age, должно быть больше 18, но меньше 180. Для описания этого правила можно создать правило валидации с именем «Проверка возраста», которое содержит выражение: Age BETWEEN 18 AND 180. СУБД выдаст сообщение об ошибке, если вводимый возраст находится вне границ диапазона. Редактор Valid Value позволяет создавать список всех допустимых значений, которые можно хранить в колонке, и связать его с правилом валидации.
Редактор Default/Initial Editor позволяет создать значение, которое автоматически, по умолчанию, присваивается колонке. Например, дате приема сотрудника может быть присвоено значение по умолчанию «сегодняшнее число»,т.е. автоматически задается, что все новые сотрудники зачисляются в день ввода информации о них в БД.
Индексы.
В таблице БД данные обычно хранятся в том же порядке, в котором их ввели в таблицу. Многие реляционные СУБД имеют страничную организацию, при которой физически таблица может храниться фрагментарно в разных областях диска, причем строки таблицы располагаются на страницах неупорядоченно. Это позволяет быстро вводить данные, но осуществлять операцию поиска в системах, содержащих миллионы строк, приводит к катастрофическому падению производительности БД. Чтобы решить эту проблему СУБД использует особый объект, называемый индексом. Он подобен содержанию книги, которое указывает на все номера страниц, посвященных конкретной теме. Индекс содержит отсортированную по колонке или нескольким колонкам информацию и указывает на строки, в которых хранится конкретное значение колонки. При выполнении запроса СУБД просматривает индекс, вместо того, чтобы просматривать по порядку все строки таблицы. Поскольку значения в индексе хранятся в определенном порядке, просматривать нужно гораздо меньший объем данных, что значительно уменьшает время выполнения запроса. Индекс можно создать для всех колонок таблицы, по которым часто производится поиск.
При генерации схемы физической БД Erwin автоматически создает отдельный индекс на основе первичного ключа каждой таблицы, а также на основе всех альтернативных ключей, внешних ключей, поскольку эти колонки наиболее часто используются для поиска данных. Для повышения производительности можно отказаться от генерации индексов по умолчанию и создать собственные индексы.
Erwin автоматически генерирует имя индекса по принципу «Х» + имя ключа + имя таблицы (физическое!), где имя ключа «PK» для первичного ключа, «IFn» - для внешнего, «AKn» - для альтернативного.
В редакторе Index Editor можно изменить имя индекса изменить его определение так, чтобы он принимал уникальные или дублирующие значения, или изменить порядок сортировки данных.
Триггеры и хранимые процедуры.
Триггеры и хранимые процедуры — это именованные блоки кода SQL, которые заранее откомпилированы и хранятся на сервере для того, чтобы быстро призводить выполнение запросов, валидацию данных и выполнять другие часто вызываемые функции.
Триггер — это процедура, которая выполняется автоматически как реакция на событие. Таким событием может быть вставка, изменение или удаление строки в существующей таблице.
Триггер ссылочной целостности — это особый вид триггера, используемый для поддержания целостности между двумя таблицами, которые связаны между собой. Если строка в одной таблице вставляется, изменяется или удаляется, то триггер ссылочной целостности (RI-триггер) сообщает СУБД, что нужно делать с теми строками в других таблицах, у которых значение внешнего ключа совпадает со значением первичного ключа вставленной (измененной, удаленной) строки. По умолчанию Erwin генерирует триггеры, дублирующие декларативную ссылочную целостность. Для генерации триггеров Erwin использует механизм шаблонов — специальных скриптов, использующих макрокоманды. Шаблоны триггеров ссылочной целостности связываются с сущностями в зависимости от типа связи и роли сущности в этой связи. Они определяют, какое правило ссылочной целостности будет по умолчанию дополнено шаблоном триггера.
Erwin имеет специальные редакторы, облегчающие создание и редактирование триггеров и процедур. Эти операции можно осуществить в окне Table Trigger Viewer пункта Trigger контекстно-зависимого меню для таблицы.
Генерация скрипта.
Для создания текста скрипта служат редакторы Table Template Editor и Schema Template Editor. Опция Generation Option позволяет задать тип скрипта — будет ли он выполнен до или после генерации таблицы или схемы. При создании текста скрипта так же, как и при создании текста хранимых процедур, может быть использован Erwin Template Toolbox.
Контрольные вопросы.
1. Какие объекты БД генерируются при проектировании физической схемы?
2. Отличия в идентификации объектов на логическом и физическом уровне.
3. Как можно осуществить конвертирование БД из одной СУБД в другую?
4. Что такое триггер? Какие элементы логической модели являются основополагающими для создания триггеров при прямом проектировании?
Лабораторное задание
Преобразовать созданную на предыдущем лабораторном занятии логическую модель данных в физическую модель для Oracle-8x. Сохранить полученный SQL-скрипт в текстовом файле.
