- •В.И. Швецов, А.Н. Визгунов, И.Б. Мееров
- •БАЗЫ ДАННЫХ
- •ОГЛАВЛЕНИЕ
- •ПРЕДИСЛОВИЕ
- •1.1. Развитие основных понятий представления данных
- •1.2. Системы управления базами данных
- •3. Обеспечение логической и физической независимости данных.
- •4. Защита логической целостности базы данных.
- •5. Защита физической целостности.
- •7. Синхронизация работы нескольких пользователей.
- •8. Управление ресурсами среды хранения.
- •9. Поддержка деятельности системного персонала.
- •1.4. Краткий обзор литературы и других доступных источников
- •1.5. Различные представления о данных в базах данных
- •1.6.1. Модель с централизованной архитектурой
- •1.6.2. Модель с автономным персональными ЭВМ
- •1.7. Краткий обзор СУБД
- •1.7.1. Настольные СУБД
- •1.7.2. Серверные СУБД
- •1.8. Основные этапы проектирования базы данных
- •ГЛАВА 2. КОНЦЕПТУАЛЬНОЕ МОДЕЛИРОВАНИЕ БАЗЫ ДАННЫХ
- •2.1. Сложный пример предметной области
- •2.2. Способы описания предметной области
- •2.4. Описание информационных потребностей пользователя
- •2.5. Построение ER-диаграмм
- •2.7. Построение концептуальной модели
- •2.7.1. Моделирование локальных представлений
- •2.7.2. Объединение локальных моделей
- •Слияние идентичных элементов
- •Установление связей между наборами сущностей разных моделей
- •Введение агрегированных элементов
- •Обобщение подобных типов сущностей
- •2.9. Ограничения целостности
- •3.1. Общие представления о модели данных
- •3.2. Сетевая модель данных
- •3.3. Иерархическая модель данных
- •3.4. Реляционная модель данных
- •3.5. Многомерная модель данных
- •ГЛАВА 4. ФОРМАЛИЗАЦИЯ РЕЛЯЦИОННОЙ МОДЕЛИ
- •4.2. Манипулирование данными в реляционной модели
- •4.3. Операции реляционной алгебры
- •4.4.1. Проблема выбора рациональных схем отношений
- •Полное множество функциональных зависимостей
- •4.4.3. Декомпозиция схемы отношения
- •Вторая нормальная форма (2НФ)
- •Третья нормальная форма (3НФ)
- •Мотивировка третьей нормальной формы
- •Нормальная форма Бойса-Кодда (НФБК)
- •Мотивировка нормальной формы Бойса-Кодда
- •4.4.5. Пример нормализации до 3НФ
- •ГЛАВА 5. ФИЗИЧЕСКИЕ МОДЕЛИ ДАННЫХ (СТРУКТУРЫ ХРАНЕНИЯ)
- •5.1. Структура памяти ЭВМ
- •5.2. Представление экземпляра логической записи
- •5.4. Структуры хранения данных во внешней памяти ЭВМ
- •5.4.1. Последовательное размещение физических записей
- •Поиск записи с заданным значением ключа
- •Чтение записи с заданным значением ключа
- •Корректировка записи
- •Удаление записи
- •Добавление записи
- •Поиск записи с заданным значением ключа
- •Чтение записи
- •Корректировка и удаление записи
- •Добавление записи
- •Поиск записи с заданным значением ключа
- •Чтение записи
- •Корректировка записи
- •Удаление записи
- •Добавление записи
- •5.4.4. Использование индексов (индексирование)
- •Поиск записи с заданным значением ключа
- •Чтение записи
- •Корректировка записи
- •Удаление записи
- •Добавление записи
- •5.4.5. Бинарное дерево (В-дерево)
- •Поиск и чтение записи с заданным значением ключа
- •Модификация (корректировка) записи
- •Удаление записи
- •Добавление записи
- •5.4.6. Размещение записей с использованием хэширования
- •Поиск записи с заданным значением ключа и чтение
- •Модификации записи
- •Удаление записи
- •Добавление записи
- •5.4.7. Комбинированные структуры хранения
- •6.1.1. Архитектура базы данных
- •Логический уровень
- •Физический уровень
- •Файлы и группы файлов
- •Страницы и группы страниц
- •6.2.1. Проблемы доступа и обработки данных
- •6.2.2. Навигационный подход
- •6.3. Понятие языка SQL и его основные части
- •6.3.1. История возникновения и стандарты языка SQL
- •6.3.2. Достоинства языка SQL
- •6.3.3. Разновидности SQL
- •6.4.1. Использование SQL для выбора информации из таблицы
- •Простейший запрос
- •Использование агрегатных функций. Простые запросы
- •Форматирование вывода. Выражения в запросе. Упорядочение
- •6.4.4. Язык SQL и операции реляционной алгебры
- •6.5. Программный (встроенный) SQL
- •6.5.1. Статический SQL
- •6.6.1. Библиотека DB-Library
- •6.6.2. Протокол ODBC
- •6.6.3. Протокол OCI
- •6.6.4. Протокол JDBC
- •ГЛАВА 7. ТЕНДЕНЦИИ РАЗВИТИЯ БАЗ ДАННЫХ
- •Объектно-ориентированное программирование
- •Объектно-ориентированные базы данных
- •Объектно-реляционные базы данных
- •7.2. Распределенные базы данных
- •СПИСОК ЛИТЕРАТУРЫ
- •УЧЕБНАЯ ПРОГРАММА КУРСА
- •Цели и задачи курса
- •Дисциплины, изучение которых необходимо для данного курса
- •Программа курса (36 ч. лекций, 18 ч. лабораторных работ)
- •2. Концептуальное моделирование базы данных (6 часов)
- •4. Формализация реляционной модели (6 часов)
- •5. Физические модели данных (структуры хранения) (4 часа)
- •7. Тенденции развития баз данных
- •Список литературы
- •УЧЕБНЫЕ ПОСОБИЯ
- •ОСНОВНЫЕ РЕКОМЕНДУЕМЫЕ МОНОГРАФИИ
- •ЛИТЕРАТУРА ПО ПРОГРАММНЫМ СРЕДСТВАМ
- •ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА
- •ЛАБОРАТОРНЫЙ ПРАКТИКУМ
- •ОПИСАНИЕ ЛАБОРАТОРНЫХ РАБОТ
- •Лабораторная работа №1
- •Лабораторная работа №2
- •Лабораторная работа №3
- •Лабораторная работа №4
- •Лабораторная работа №5
- •Лабораторная работа №6
- •ВИДЫ ПРЕДМЕТНЫХ ОБЛАСТЕЙ
- •1. Страховая компания
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •2. Гостиница
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •3. Ломбард
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи.
- •4. Реализация готовой продукции
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •5. Ведение заказов
- •Описание предметной области
- •Таблицы
- •6. Бюро по трудоустройству
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи.
- •7. Нотариальная контора
- •Описание предметной области
- •Таблицы
- •8. Фирма по продаже запчастей
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •9. Курсы по повышению квалификации
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •10. Определение факультативов для студентов
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •11. Распределение учебной нагрузки
- •Описание предметной области
- •Таблицы
- •12. Распределение дополнительных обязанностей
- •Описание предметной области
- •Таблицы
- •13. Техническое обслуживание станков
- •Описание предметной области
- •Таблицы
- •14. Туристическая фирма
- •Описание предметной области
- •Таблицы
- •15. Грузовые перевозки
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •16. Учет телефонных переговоров
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •17. Учет внутриофисных расходов
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •18. Библиотека
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •19. Прокат автомобилей
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •20. Выдача банком кредитов
- •Описание предметной области
- •Таблицы
- •21. Инвестирование свободных средств
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •22. Занятость актеров театра
- •Описание предметной области
- •Таблицы
- •23. Платная поликлиника
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •25. Учет телекомпанией стоимости прошедшей в эфире рекламы
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •26. Интернет-магазин
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •27. Ювелирная мастерская
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •28. Парикмахерская
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •29. Химчистка
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •30. Сдача в аренду торговых площадей
- •Описание предметной области
- •Таблицы
- •Развитие постановки задачи
- •ПРИМЕР ВЫПОЛНЕНИЯ ЛАБОРАТОРНЫХ РАБОТ
- •Лабораторная работа №1
- •Краткое задание
- •Пример выполнения
- •Вариант 2.
- •Вариант 3.
- •Сетевая модель
- •Иерархическая модель
- •Реляционная модель
- •Лабораторная работа №2
- •Краткое задание
- •Пример выполнения
- •Таблица Абитуриенты
- •Таблица Экзамены
- •Таблица Оценки
- •Схема данных
- •Абитуриенты-Оценки
- •Экзамены-Оценки
- •Импорт данных
- •Таблица «Абитуриенты»
- •Таблица «Экзамены»
- •Таблица «Оценки»
- •Лабораторная работа №3
- •Краткое задание
- •Пример выполнения
- •Лабораторная работа №4
- •Краткое задание
- •Пример выполнения
- •Лабораторная работа №5
- •Краткое задание
- •Пример выполнения
- •Описание расширенной предметной области
- •Состав хранимой информации
- •Диаграммы «Сущность-Связь»
- •Таблицы в 3НФ
- •Скрипты для создания объектов базы данных в СУБД Oracle
- •Лабораторная работа №6
- •Краткое задание
- •Пример выполнения
entrant
PK id
name second_name surname birth_date birth_place
FK2 distinction_id FK1 citizen_id
FK3 education_id sex
rem original mod_date mod_user
|
|
|
|
|
|
|
|
|
|
|
|
shapki |
|
|
|
|
|
|
|
||
PK |
id |
|
|
|
|
|
|
|
||
|
name |
|
|
|
|
|
|
|
||
|
shapki_order |
|
|
|
|
|
|
|
||
|
brief |
|
|
|
|
pre_command |
||||
|
|
|
|
|
|
|
|
PK,FK1 |
entrant_id |
|
|
|
|
|
|
|
|
|
PK,FK2 |
prog_id |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ball |
|
|
|
|
|
|
|
|
|
|
mod_date |
|
|
|
command |
|
|
|
mod_user |
|||
|
|
|
|
|
|
|
|
|
|
saved |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
id |
|
|
|
|
||
|
|
FK1 |
entrant_id |
|
|
|
|
|||
|
|
FK2 |
prog_id |
|
|
|
|
|||
|
|
FK3 |
shapki_id |
|
|
|
|
|||
|
|
|
|
ball |
|
|
|
|
||
|
|
|
|
saved |
|
|
|
|
||
|
|
|
|
mod_date |
|
|
|
|
||
|
|
|
|
mod_user |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
priority
PK,FK1 entrant_id
PK,FK2 prog_id
priority mod_date mod_user
exam
PK id
FK3 subj_id exam_date
FK1 exam_forma_id FK2 faculty_id
mark
FK1 entrant_id FK2 exam_id mark
mod_date mod_user
Рис. 27. Ообщий вид ER-диаграммы
plan
FK1 program_id quantity
|
program |
PK |
id |
|
brief |
FK2 |
faculty_id |
FK3 |
spec_id |
FK1 |
branch_id |
|
full |
2.9. Ограничения целостности
Под целостностью базы данных понимается то, что в ней содержится полная, непротиворечивая и адекватно отражающая предметную область (правильная) информация.
Огромный объем вводимых данных в базу данных, причем разные данные могут вводиться разными пользователями, обуславливает большое число ошибок ввода (занесения).
Заметим, что при традиционной «бумажной» обработке информации также достаточно часто встречаются данные, записанные неверно. Но, человек, работая с определенными данными, неявно использует
82
для контроля имеющиеся у него представления об этих данных. Например, сотрудник отдела кадров, увидев в карточке работника год рождения 1693, сразу заметит эту ошибку и, предположит, что просто переставлены 2 цифры и реальный год рождения 1963. То есть, в представлениях сотрудника заключены некоторые логические ограничения на данные. Очевидно, что для контроля правильности вводимых данных при работе с базой данных целесообразно сформировать и использовать ограничения.
Соответствующие ограничения можно разделить на две группы.
1.Внешние ограничения.
Эти ограничения связаны с адекватностью отражения предметной областью. Например, сотрудник организации не может быть моложе 17 и старше 90 лет. Соответствующее ограничение на год рождения (GR) можно записать следующим образом.
ТЕКУЩИЙ ГОД – 17 > GR > ТЕКУЩИЙ ГОД – 90.
Одним из способов задания таких ограничений является перечисление конечного множества допустимых значений какого-либо атрибута (так называемый «перечислимый» тип данных).
Например, должность преподавателя в вузе может принимать одно из следующих значений: ПРОФЕССОР, ДОЦЕНТ, СТАРШИЙ ПРЕПОДАВАТЕЛЬ, ПРЕПОДАВАТЕЛЬ, АССИСТЕНТ. Вводимое значение должности для конкретного экземпляра, не совпадающее с одним из перечисленных значений, является ошибкой.
2. Ограничения, описанные с помощью специальных конструкций. Например, база демографических показателей содержит, в ча-
стности, атрибуты ЧИСЛО МУЖЧИН, ЧИСЛО ЖЕНЩИН, ЧИСЛО ЛИЦ ОБЕИХ ПОЛОВ (по разным возрастным группам, по разным регионам и т.п.) Для контроля достоверности вводимых данных можно использовать следующую формулу.
ЧИСЛО ЛИЦ ОБЕИХ ПОЛОВ = ЧИСЛО МУЖЧИН + ЧИСЛО ЖЕНЩИН
Если равенство не достигается, какое-то из введенных чисел недостоверно.
Такие конструкции строятся, исходя из специфики данных рассматриваемой предметной области. Можно построить много конструкций следующего вида: сумма значений по заданному ат-
83
рибуту по всем экземплярам сущностей должна совпадать со значением определенного атрибута в экземпляре другой сущности.
Таким образом, на стадии ER-моделирования для повышения достоверности данных необходимо сформулировать соответствующие ограничения на данные. В идеальном случае, каждое значение атрибута должно каким-то образом контролироваться. Использование этих ограничений позволяет существенно повысить достоверность данных в базе данных.
2.10. Средства автоматизированного проектирования концептуальной модели
Средства автоматизированного проектирования концептуальной модели привлекают к себе в настоящее время большой интерес и используются в процессе создания структуры базы данных и интерфейса пользователя для доступа к данным.
Причина применения этих средств состоит в использовании в подавляющем большинстве реальных разработок баз данных спиральной модели жизненного цикла программного обеспечения. Использование спиральной модели предусматривает последовательное создание нескольких версий программного обеспечения. Каждая следующая версия включает в себя предыдущую (возможно не полностью) и является ответом на замечания пользователя, полученные в результате тестирования предыдущей версии.
Напомним, что альтернативным способом является каскадная схема разработки программного обеспечения. Каскадный подход хорошо подходит для тех задач, для которых в самом начале разработки можно достаточно полно и точно сформулировать все требования заказчика. В случае построения баз данных каскадный подход является неприемлемым.
При создании баз данных первая модель программного обеспечения, к сожалению, очень редко является удачной. Чаще всего, заказчик отвергает первую версию, так как она недостаточно полно отвечает его требованиям. Причина такой ситуации заключается в том, что заказчик не может сразу, до создания начальной версии программы, четко и полно сформулировать свои требования. Обычно после получения первого варианта программного обеспечения, заказчик выдвигает дополнительные требования, которые нельзя реализовать в рамках созданной базы данных.
84
Это вынуждает разработчиков вносить изменения в структуру базы данных, а также, соответственно, в интерфейс пользователя для доступа к базе данных. Таких итераций может быть несколько до момента получения решения, адекватного запросам заказчика.
Но даже после получения удовлетворительного решения, процесс разработки базы данных не завершается. Жизнь не стоит на месте, и запросы заказчика меняются с течением времени. Часть этих изменений можно реализовать без изменения структуры базы данных, изменяя только интерфейс пользователя, другие же требуют изменения и интерфейса и структуры базы данных. Надо заметить, что подобные изменения являются очень болезненными – работа по внесению изменений может оказаться трудоемкой и, что самое неприятное, может потребовать замены большого количества отлаженного программного кода. Иными словами, замененный код был написан впустую, на самом деле его не нужно было писать.
Таким образом, создание работоспособной базы данных можно условно разделить на три этапа – проектирование базы данных, в процессе которого создаются рабочие прототипы, кодирование – создание структур баз данных и законченного интерфейса пользователя и сопровождение готовой базы данных.
Основная идея применения средств автоматизированного проектирования баз данных заключается в том, что процесс ручного кодирования начинается только после окончания процесса проектирования. На стадии проектирования схема базы данных и интерфейс пользователя для доступа к базе данных создается автоматически, исходя из описания концептуальной модели, с помощью так называемых CASE
средств (Computer Aided Software/System Engineering). Конечно, соз-
данный таким образом интерфейс не является законченным программным продуктом, однако он позволяет заказчику оценить возможности, которые будут в конечном продукте и внести свои коррективы. Только после одобрения заказчиком рабочего прототипа, разработчики приступают к ручному кодированию – созданию законченного приложения.
При сопровождении все повторяется, за тем исключением, что генерируется не все приложение целиком, а только часть, которую надо изменять.
На практике, чаще всего, CASE-средства используются для создания схемы базы данных в виде диаграмм «Сущность-Связь» и генерации структур баз данных для конкретной СУБД. После получения от
85
заказчика изменений, разработчики вносят соответствующие исправления в диаграмму «Сущность-Связь» и заново генерируют структуры баз данных. Средства автоматической генерации интерфейсов используются реже.
В настоящее время практически каждый производитель СУБД предлагает собственное программный продукт автоматизированного проектирования. Это Oracle Designer (Oracle), PowerDesinger (Sybase) и
другие. Демонстрационные версии данных программных продуктов можно загрузить с соответствующих сайтов (www.oracle.com, www.sybase.com).
Кроме того, на рынке представлены решения третьих фирм, не производящих СУБД. Одними из самых распространенных являются программные продукты фирмы AllFusion – AllFusion ERwin Data Modeler и AllFusion Process Modeler (ранее BPwin) и другие. На рос-
сийском рынке данные программы предлагает фирма Interface Ltd. (www.interface.ru). Программа AllFusion Process Modeler предназначе-
на для моделирования бизнес-процессов. Результатами ее работы могут быть не только диаграммы, но и сгенерированный для различных сред код для доступа к базам данных. Для этого, однако, необходимо еще создать диаграммы «сущность-связь» с помощью AllFusion ERwin Data Modeler.
Поскольку данный учебный курс не предполагает знакомство со средствами описания бизнес-процессов, мы рассмотрим только ERwin Data Modeler – программный продукт, непосредственно использующийся при создании баз данных.
По данным Interface Ltd. AllFusion ERwin Data Modeler (ранее: ERwin) позволяет проектировать, документировать и сопровождать базы данных, хранилища данных и витрины данных (data marts).
Создав наглядную модель базы данных, можно оптимизировать структуру БД и добиться её полного соответствия требованиям и задачам организации. Визуальное моделирование повышает качество создаваемой базы данных, продуктивность и скорость её разработки.
На сайте Interface Ltd. (www.interface.ru) доступна для загрузки демонстрационная версия AllFusion ERwin Data Modeler, которая представляет собой полнофункциональную версию, ограниченную по времени.
Основные характеристики AllFusion ERwin Data Modeler:
Поддержка различных способов записи диаграмм «СущностьСвязь» (нотаций).
86
Нотация диаграмм «Сущность-Связь» в AllFusion ERwin Data Modeler несколько отличается от нотации классических моделей «сущность-связь».
Эти отличия проявляются, прежде всего, в отсутствии атрибутов у связи. Наличие атрибутов у связи при классическом способе записи свидетельствует, что внутри связи скрыта некоторая сущность. В нотациях, используемых в AllFusion ERwin Data Modeler, связь не может иметь атрибутов, и изображается в виде линии, а ее название пишется выше и/или ниже линии.
Атрибуты внутри сущности в AllFusion ERwin Data Modeler разделяются на две группы линией. Ключевые атрибуты находятся сверху черты, остальные атрибуты снизу.
Сильная сущность обозначается прямоугольником с прямыми углами, слабая сущность – прямоугольником с закругленными углами. Идентифицирующая связь – сплошная линия, не идентифицирующая – прерывистая.
Поддержка проектирования информационных хранилищ. Поддержка совместного проектирования.
Поддержка триггеров, хранимых процедур и шаблонов. Развитые средства проверки корректности моделей данных Reverse Engineering (генерация модели данных на основе анализа существующей базы данных), включая восстановление связей по индексам.
Автоматическая генерация SQL DDL для создания баз данных. Полная совместимость и поддержка 20-ти типов СУБД.
Приведем в качестве примера использования данного CASEсредства диаграмму «Сущность-Связь» фрагмента базы данных абитуриентов. В сущности entrant сохраняются анкетные данные об абитуриентах (entrant). Помимо этой сущности на диаграмме приведены сущности-справочники: виды предшествующего образования (education), данные о гражданстве (citizenship), а также данные о наличии у абитуриента золотой или серебряной медали или диплома с отличием (distinction). Сущности связаны между собой связью «имеет». Абитуриент имеет предшествующее образование, гражданство и данные об отличии диплома или аттестата.
На рисунках 28 и 29 приведены диаграммы «Сущность-Связь» на логическом и физическом уровне. Разделение на уровни используется в ERwin для удобства – на самом деле диаграмма одна, однако в зави-
87
симости от потребностей разработчика, она может быть представлена в двух видах. Необходимо отметить, однако, что можно создавать элементы, которые присутствуют только на логическом или только на физическом уровне.
education
код |
entrant |
|
код |
|
|
название |
|
|
имя |
|
|
|
|
|
|
отчество |
|
|
фамилия |
|
|
дата рождения |
distinction |
|
место рождения |
|
|
код образования (FK) |
код |
|
код отличия (FK) |
название |
|
код гражданства (FK) |
|
|
|
|
|
пол |
|
citizenship |
примечание |
|
код |
оригинал документа |
|
дата модификации |
|
|
название |
|
|
пользователь |
|
Рис. 28. Логический уровень ER-диаграммы
education
id: NUMERIC(10,0)
name: VARCHAR(100)
citizenship
id: NUMERIC(10,0)
name: VARCHAR(50)
entrant
id: NUMERIC(10,0)
name: VARCHAR(15) second_name: VARCHAR(20) surname: VARCHAR(20) birth_date: DATE
birth_place: VARCHAR(20)
education_id: NUMERIC(10,0) distinction_id: NUMERIC(10,0)
citizen_id: NUMERIC(10,0) sex: VARCHAR(1)
rem: VARCHAR(200) original: VARCHAR(1) mod_date: DATE mod_user: VARCHAR(50)
distinction
id: NUMERIC(10,0)
name: VARCHAR(20)
Рис. 29. Физический уровень ER-диаграммы
88
Логический уровень позволяет сконцентрироваться на описании бизнес-правил, а физический уровень – на представлении модели в конкретной СУБД. В частности, названия полей могут отличаться на логическом и физическом уровне. В нашем примере в СУБД используются английские названия полей, а на логическом уровне мы определяем русские названия.
На физическом уровне диаграмма будет выглядеть по-разному в зависимости от того, для какого сервера баз данных будет использоваться данная модель, и, соответственно, какие типы данных есть в данной СУБД. Приведенная на рисунке 29 диаграмма построена для СУБД Oracle 8.0.
После создания модели мы можем сгенерировать с помощью CASE-средства соответствующую структуру баз данных. Генерация осуществляется с помощью выполнения автоматически создаваемого скрипта. Настройки, задаваемые при генерации, влияют на полученный скрипт.
Фрагмент скрипта для создания структур баз данных приведен ниже.
… |
|
CREATE TABLE education ( |
VARCHAR(100) NULL, |
name |
|
id |
NUMERIC(10,0) NOT NULL, |
PRIMARY KEY (id) |
|
); |
|
CREATE TABLE distinction ( |
VARCHAR(20) NOT NULL, |
name |
|
id |
NUMERIC(10,0) NOT NULL, |
PRIMARY KEY (id) |
|
); |
|
CREATE TABLE citizenship ( |
VARCHAR(50) NOT NULL, |
name |
|
id |
NUMERIC(10,0) NOT NULL, |
PRIMARY KEY (id) |
|
); |
|
CREATE TABLE entrant ( |
VARCHAR(15) NOT NULL, |
name |
|
id |
NUMERIC(10,0) NOT NULL, |
second_name |
VARCHAR(20) NULL, |
surname |
VARCHAR(20) NOT NULL, |
89
birth_date |
DATE NULL, |
birth_place |
VARCHAR(20) NULL, |
education_id |
NUMERIC(10,0) NOT NULL, |
distinction_id |
NUMERIC(10,0) NOT NULL, |
citizen_id |
NUMERIC(10,0) NOT NULL, |
sex |
VARCHAR(1) NOT NULL, |
rem |
VARCHAR(200) NULL, |
original |
VARCHAR(1) NOT NULL, |
mod_date |
DATE NULL, |
mod_user |
VARCHAR(50) NULL, |
PRIMARY KEY (id),
FOREIGN KEY (education_id)
REFERENCES education, FOREIGN KEY (distinction_id)
REFERENCES distinction, FOREIGN KEY (citizen_id)
REFERENCES citizenship
);
…
Окончание скрипта не приведено.
CASE средство ERwin Data Modeler в совокупности с AllFusion Process Modeler и другими продуктами фирмы AllFusion представляет стандартные возможности, характерные и для других CASE средств,
таких как Oracle Designer и PowerDesigner (Sybase).
90