Создание логической модели данных
Основные компоненты диаграммы ERWin - это сущности, атрибуты и связи. Каждая сущность является множеством подобных индивидуальных объектов, называемых экземплярами. Атрибут выражает определенное свойство объекта. С точки зрения БД (физической модели) сущности соответствует таблица, экземпляру сущности - строка в таблице, а атрибуту -колонка таблицы.
Сущности должны иметь наименование с четким смысловым значением, именоваться существительным в единственном числе. В рассматриваемом примере такими сущностями будут Поставщик и Книга поставок.
В качестве атрибутов сущности Поставщик используем все свойства объекта Поставщик (рис.1). Один из атрибутов должен быть выбран в качестве первичного ключа (Primary Key). Первичный ключ – это уникальное неповторяющееся значение для однозначного указания на конкретного поставщика. Атрибутами с неповторяющимися значениями являются: Код поставщика и Наименование поставщика. Но следуя требованиям к первичному ключу (простой по составу и желательно числового типа), в качестве атрибута первичного ключа выберем атрибут Код поставщика.
В сущности Книга поставок также будем использовать свойства соответствующего объекта (рис.1). Но для этой сущности есть две проблемы. Первая проблема связана со свойством Поставщик. Указывать в поставке все атрибуты сущности Поставщик нецелесообразно. Более правильно использовать один из атрибутов поставщика как указатель на экземпляр сущности Поставщик, который выполнил поставку сырья. Так как данный атрибут должен однозначно указывать на одного поставщика, то в качестве атрибута-указателя целесообразно выбрать атрибут Код поставщика, являющийся первичным ключом в сущности Поставщик. Это гарантирует, что значение атрибута будет ссылаться ровно на одну запись (одного поставщика) в сущности Поставщик. Такой атрибут-указатель называют ссылкой или внешним ключом (Foreign Key), так как он содержит значение первичного ключа другой (внешней) сущности. Вторая проблема связана с выбором атрибута первичного ключа. В качестве первичного ключа нельзя выбрать атрибут Номер документа (номера могут повторяться из года в год) или атрибут Дата поставки (в один день может быть несколько поставок). Можно выбрать оба эти атрибута в качестве первичного ключа, но при этом нарушается требование «простого» ключа (не составного). Поэтому целесообразно добавить новый атрибут, которого не было в содержательном описании предметной области. Назначение такого атрибута – идентифицировать запись сущности. Поэтому его называют идентификатором или суррогатным ключом. Идентификатор получает свои значения по правилу автоинкрементного увеличения. В качестве имени выбирают словосочетание «Идентификатор НазваниеСущности ». В нашем примере это будет атрибут Идентификатор книги поставок.
|
Логическая модель данных приведена на рис.2. Две сущность связаны обязательной неидентифицирующей связью один-ко-многим, и в этой связи главной сущностью является Поставщик. Следует отметить, что атрибут внешнего ключа не следует непосредственно добавлять в состав атрибутов подчиненной сущности Книга поставок. При установке связи между сущностями атрибут первичного ключа главной сущности мигрирует (скопируется) в подчиненную сущность связаны.
|
Рис.2 Логическая модель данных
Создание физической модели данных
Для перехода к разработке физической модели данных выберем в списке-переключателе вида модели значение Phуsical.
Физическая модель содержит всю информацию, необходимую для реализации конкретной БД. Трансформационная модель содержит информацию для реализации. Физический уровень представления модели зависит от выбранного сервера. Для выбора СУБД служит окно-диалог Target Server (меню Database - Choose Database). В качестве целевого сервера выберем Sybase SQL Anywhere.
Физическая модель данных приведена на рис.2. Описание атрибутов сущностей логической модели и полей сущностей физической модели приведено в таблице 1.
Рис.2 Физическая модель данных
Таблица 1. Описание сущностей и таблиц модели данных
Имя атрибута логической модели данных | Тип атрибута | Имя колонки физической модели данных | Тип колонки |
Сущность Поставщик (таблица Spost) | |||
Код поставщика (PK) | Number | PostKod | Integer |
Наименование поставщика | String | PostName | Varchar(50) |
Адрес поставщика | String | Adres | Varchar(70) |
Тип поставщика | String | Tip | Varchar(20) |
Сущность Книга поставок (таблица Book) | |||
Идентификатор поставки (PK) | Number | BookID | Integer |
Дата поставки | DateTime | Dat | Date |
Номер документа | Number | NDoc | Integer |
Наименование сырья | String | Syrie | Varchar(50) |
Код поставщика (FK) | Number | PostKod | Integer |
Количество сырья | Number | Kol | Integer |
Цена за 1 ед | Number | Cena | Numeric (12,2) |
Для некоторых полей заданы значения по умолчанию и правила валидации (таблица 2).
Таблица 2 – Значения по умолчанию и правила валидации
|
Сущность | Имя поля | Значение по умолчанию | Правило валидации |
Книга поставки (Book) | BookID | AUTOINCREMENT | PK |
NDoc | - | Положительные значения | |
Kol | Неотрицательные значения | ||
Cena | Неотрицательные значения | ||
PostKod | - | FK | |
Поставщик | PostKod | - | PK |
Для перехода к созданию базы данных необходимо предварительно сгенерировать файл сценария создания каталога БД (скрипт-файл с расширением sql), выполнив команду меню
Tools - Forward Engineering
Текст скрипт-файла с командами создания таблиц БД для рассматриваемой модели приведен ниже.
CREATE TABLE Spost (
PostKod INTEGER NOT NULL,
PostName VARCHAR(50) NOT NULL,
Adres VARCHAR(70),
Tip VARCHAR(20),
PRIMARY KEY (PostKod)
);
CREATE TABLE Book (
BookId INTEGER NOT NULL DEFAULT AUTOINCREMENT,
Dat DATE NOT NULL,
NDoc INTEGER NOT NULL
CHECK (NDoc>0),
Syrie VARCHAR(50) NOT NULL,
Kol INTEGER DEFAULT 0
CHECK (Kol>=0),
Cena NUMERIC(12,2) DEFAULT 0
CHECK (Cena>=0),
PostKod INTEGER NOT NULL,
PRIMARY KEY (BookId),
FOREIGN KEY (PostKod)
REFERENCES Spost (PostKod)
ON DELETE RESTRICT
ON UPDATE RESTRICT
);
Текст скрипта сохраним в файле created.sql
Создание базы данных
Создание БД выполняется в СУБД с использованием административной утилиты Sybase Central
Вначале необходимо создать контейнер базы данных. Для этого необходимо выполнить пункт меню
Tools – SQL Anywhere 11 – Create Database
В процессе создания базы данных необходимо:
- выбрать каталог расположения БД и задать имя БД;
- отключить поддержку журнала транзакций (Transaction log file);
- включить режим игнорирования учета хвостовых пробелов в операциях сравнения строк (ignore trailing blanks in string compsrisons);
- отключить (игнорировать) чувствительность к регистру символьных значений (Case sensitivity for all names and values).
Остальные параметры создания БД оставить со значениями по умолчанию.
На последнем шаге необходимо подсоединится к созданной БД (включить флаг Connect to the new database)
После создания БД необходимо:
- создать пользователей (администратора и обычного);
- подсоединится к БД под учетной записью администратора;
- открыть утилиту интерактивного SQL (в контекстном меню на иконке БД выбрать команду Open Interactive SQL);
- загрузить скрипт-файл (File-Open);
- выполнить команды, нажав F9.
Если все сделано правильно, то в панели Result программы Interactive SQL, появится строка об успешном выполнении команд и времени их выполнения (рис.3).
Структуру БД можно увидеть в окне Sybase Central, выделив имя БД и перейдя на вкладку ER-Diagram (рис. 4).
Список литературы
1. Маклаков С. В. BPwin и ERwin: CASE-средства для разработки информационных систем,
2. Вендров А.М. CASE-технологии. Современные методы и средства проектирования информационных систем