Технология выполнения работы. 1. Заменить на панели инструментов Logical → Physical.
1. Заменить на панели инструментов Logical → Physical.
2. Установить типы данных с помощью контекстного меню каждой таблицы командой Columns (рис. 42).
Рисунок 42 - Установка типов данных
3. Назначить в каждой таблице первичный ключ: Команда к.м. Columns.
4. При необходимости произвести валидацию (рис. 43).
Рисунок 43 - Правила валидации
5. Разрешить отношение Многие-ко-многим командой к.м. связи: Команда Create Association Table. Проверить вид связи (идентифицирующая или неиндефицирующая).
6. Добавить при необходимости дополнительные атрибуты.
7. Подготовка к построению запроса (рис. 44Ошибка! Источник ссылки не найден.).
Рисунок 44 - Нормализованная физическая модель
7.1. Создать представление с помощью кнопки View table.
7.2. Установить связи с помощью копки View relationship.
8. Сгенерировать текст программы на SQL, вызывается командой Tools/Forward Engineering и просматривается в окне (рис. 45).
Рисунок 45 - Установка параметров для генерации кода
8.1. Установить параметр для Table - Create table, для Index - оставить по умолчанию (рис. 46), для Referential Integrity установить параметры как показано на рис. 47, для всех остальных объектов убрать флажки.
Рисунок 46 - Установка параметров для генерации кода для Index
Рисунок 47 - Установка параметров для генерации кода для Referential Integrity
8.2. После установления параметров нажать Prewiew, затем пиктограмму - Сохранить.
8.3. Далее необходимо сгенерировать схему кнопкой Generate. В процессе генерации ERwin связывается с БД, выполняя SQL-скрипт. Если в процессе генерации возникают какие-либо ошибки, то она прекращается, открывается окно с сообщениями об ошибках.
9. Записать результат в файл, выбрать тип файла SQL DDL (*.ers, *.sql, *.ddl), задать имя файла с расширением .sql. Затем нажать пиктограмму на панели инструментов - Сохранить.
10. Перенести результат в СУБД Access или SQL-Server.
Сгенерированный код для физической модели (рис. 44)
CREATE TABLE Таблица_1 (
Атрибут_2 varchar(158) NULL,
код_1 int IDENTITY(1,1),
Атрибут_1 money NULL
)
go
ALTER TABLE Таблица_1
ADD PRIMARY KEY NONCLUSTERED (код_1)
go
CREATE TABLE Таблица_1_2 (
Код_2 int NOT NULL,
Атрибут_5 varchar(20) NULL,
код_1 int NOT NULL
)
go
ALTER TABLE Таблица_1_2
ADD PRIMARY KEY NONCLUSTERED (Код_2, код_1)
go
CREATE TABLE Таблица_2 (
Атрибут_4 varchar(180) NULL,
Код_2 int IDENTITY(1,1),
Атрибут_3 datetime NULL
)
go
ALTER TABLE Таблица_2
ADD PRIMARY KEY NONCLUSTERED (Код_2)
go
CREATE VIEW Представление AS
SELECT Таблица_2.Атрибут_4, Таблица_1_2.код_1, Таблица_2.Код_2, Таблица_1_2.Код_2, Таблица_1.Атрибут_2, Таблица_1.код_1, Таблица_1_2.Атрибут_5, Таблица_2.Атрибут_3, Таблица_1.Атрибут_1
FROM Таблица_1_2, Таблица_2, Таблица_1
go
ALTER TABLE Таблица_1_2
ADD FOREIGN KEY (Код_2)
REFERENCES Таблица_2
go
ALTER TABLE Таблица_1_2
ADD FOREIGN KEY (код_1)
REFERENCES Таблица_1
go
Перенос результата в СУБД Access:
1. Открыть созданную базу данных, открыть создание запроса с помощью конструктора (рис. 48).
Рисунок 48 - Создание запроса с помощью конструктора
1.1. Выбрать вкладку SQL.
1.2. В открывшемся окне удалить команду SELECT; (рис. 49).
1.3. Открыть блокнот и выбрать Создание таблицы:
CREATE TABLE Таблица_1 (
Атрибут_2 varchar(158) NULL,
код_1 int IDENTITY(1,1),
Атрибут_1 money NULL
)
Рисунок 49 - Оформление запроса на создание таблицы
a) Скопировать запись на создание таблицы во вкладку Запрос1 в MS Access и в конце записи поставить «точку с запятой».
b) Нажать на пиктограмму только один раз. В этот момент создается таблица.
c) Перед выполнением запроса на создание каждой последующей таблицы необходимо каждый раз удалять во вкладке Запрос1 предыдущую запись и повторять действия п.п. 1.3,a-1.3,b.
1.4. После создания таблиц в блокноте выбрать Создание ключа:
ALTER TABLE Таблица_1
ADD PRIMARY KEY NONCLUSTERED (Код_1)
a) Перед выполнением нового запроса на создание ключа каждой таблицы необходимо удалить во вкладке Запрос1 предыдущую запись и повторить действия п.п. 1.4,b-1.4,e.
b) Скопировать запись на создание ключа во вкладку Запрос1 в MS Access.
c) В данном запросе удалить NONCLUSTERED.
d) В конце запроса поставить «точку с запятой».
e) Только один раз нажать пиктограмму .
1.5. После создания ключей выбираем Создание связи:
ALTER TABLE Таблица_1_2
ADD FOREIGN KEY (Код_2)
REFERENCES Таблица_2
a) Перед выполнением нового запроса на создание связи необходимо удалить во вкладке Запрос1 предыдущую запись и повторить действия п.п. 1.5,b-1.5,d.
b) Скопировать запись на создание связи во вкладку Запрос1 в MS Access.
c) В конце запроса поставить «точку с запятой».
d) Только один раз нажать пиктограмму , чтобы создать только одну неповторяющуюся связь.
2. Включить в базе данных Схему данных и проверить правильность связей.
Пример «Учет продаж товаров»
Определяемтипы данных для атрибутов БД «Учет продаж товаров», а также их размер и устанавливаем правила валидации (табл. 5)
Таблица 5 - Свойства колонок таблиц физической модели БД «Учет продаж товаров»
Колонка | Тип | Размер | Правило валидации |
Артикул | int, IDENTITY 1,1 | ||
Наименование | char (18) | 18 символов | |
Цена | money | > 100 и <10 000 | |
Номер | int, IDENTITY 1,1 | ||
Фамилия | char (18) | 18 символов | > 0 |
Имя | char (18) | 18 символов | > 0 |
Отчество | char (18) | 18 символов | |
Адрес | char (18) | 18 символов | |
Код | int, IDENTITY 1,1 | ||
Дата | datatime | ||
Количество | int |
Назначаем в каждой таблице первичный ключ: Команда к.м. Columns (рис. 50).
При необходимости производим валидацию (рис. 51). Производим подготовку к построению запроса (рис. 52, рис. 53).
Рисунок 50 - Установка типов данных для атрибутов БД «Учет продаж товаров»
Рисунок 51- Правила валидации
Рисунок 52 - ERD-диаграмма физичекой модели БД «Учет продаж товаров» в третьей нормальной форме БД, 2-ой уровень
Рисунок 53 - Физическая модель БД «Учет продаж товаров», 1-ый уровень
Далее генерируем код на SQL (рис. 54), а затем переносим его в СУБД.
Рисунок 54 - Установка для генерации кода БД «Учет продаж товаров»
Сгенерированный код на SQL:
CREATE TABLE Клиенты (
Адрес char(18) NULL,
Номер int IDENTITY,
Отчество char(18) NULL,
Имя char(18) NULL,
Фамилия char(18) NULL
)
go
ALTER TABLE Клиенты
ADD PRIMARY KEY NONCLUSTERED (Номер)
go
CREATE TABLE Сделки (
Код int NULL,
Количество int NULL,
Артикул int NULL,
Дата datetime NULL,
Номер int NULL
)
go
ALTER TABLE Сделки
ADD PRIMARY KEY NONCLUSTERED (Код)
go
CREATE TABLE Товары (
Цена money NOT NULL,
Артикул int IDENTITY,
Наименование char(18) NULL
)
go
ALTER TABLE Товары
ADD PRIMARY KEY NONCLUSTERED (Артикул)
go
ALTER TABLE Сделки
ADD FOREIGN KEY (Номер)
REFERENCES Клиенты
go
ALTER TABLE Сделки
ADD FOREIGN KEY (Артикул)
REFERENCES Товары
go
Контрольные вопросы
1. Что называется процессом нормализации?
2. Что называется функциональной зависимостью?
3. Что называется полной функциональной зависимостью?
4. Первая нормальная форма.
5. Вторая нормальная форма.
6. Третья нормальная форма.
7. Четвертая нормальная форма.
8. Что называется процессом денормализации?
9. В чем смысл денормализации?
10. Какова цель создания физической модели?
11. Назовите функции ERwin по поддержке денормализации.
12. Как осуществляется разрешение связей «многие-ко-многим»?
13. Как установить типы даных?
14. Как назначить валидацию?
15. Как сгенерировать код на SQL?