Дипломный проект Полтарацкий А.В.
Глава 3.
Технический проект.
В данном разделе рассматривается структура базы данных и процесс ее проектирования, а также механизмы, с помощью которых происходит обращение к данным и поддержка их целостности.
Конфигурация технических средств.
Требования к составу и параметрам технических средств соответствуют требованиям к программному продукту - системе моделирования макроэкономики.
Минимально необходимое оборудование:
PC Pentium 120;
RAM 16 MB;
HDD 50 MB свободных;
Monitor color SVGA.
Рекомендуемое оборудование:
PC Pentium 133 МГц;
RAM 32 MB;
HDD 30 MB свободных;
Monitor Color SVGA;
Необходимое программное обеспечение:
ОС Windows’95;
Машина баз данных Borland DataBase Engine 4.0;
Приложение Система моделирования макроэкономики.
Даталогическая модель базы данных.
Под даталогической моделью (ДЛМ) подразумевается отображение конечных связей между реальными объектами предметной области к их смысловому содержанию в среде хранения. ДЛМ строится в терминах информационных единиц, предусмотренных в конкретной системе управления базами данных.
Все объекты и связи между объектами в нашем случае можно выразить следующими соотношениями:
экономическая модель(обозначение модели, описание модели, путь к базе данных модели, название файла ограничений) - таблица Model;
экономический параметр(обозначение параметра в модели, описание параметра);
индекс(обозначение индекса, минимальное значение индекса, максимальное значение, шаг изменения);
версия расчета модели(номер версии, обозначение модели, комментарий по версии);
зависимость экономического параметра от индексов(обозначение параметра, обозначение индекса);
зависимость значения переменной от версии расчета (обозначение параметра, обозначение индекса, значение индекса, номер версии, значение переменной). Данную связь можно представить двумя таблицами, которые описываются следующими отношениями:
Различные сочетания индексов в переменной(обозначение параметра, обозначение индекса, значение индекса, номер сочетания индексов).
Значение параметра(обозначение экономической переменной, значение переменной, порядковый номер в переменной, номер версии расчета).
В приведенных отношениях номер сочетания индексов и порядковый номер в переменной - это одно и то же. Данное разбиение позволяет избежать избыточности - таблица, построенная на первом отношении будет содержать не изменяющиеся данные и, если в модель не добавлять новых переменных, будет служить неким неизменяемым справочником.
На основе описаний сущностей и их связей построим модель базы данных по методу IDEF1 (рис.3.1):
рис. 3.1.
Данная модель полностью удовлетворяет требованиям разрабатываемой системы. Ниже приведен SQL-скрипт для создания структуры базы данных данной модели:
drop domain T_DOMAIN_CHR;
create domain T_DOMAIN_CHR as CHAR(10) ;
drop domain T_DOMAIN_INT;
create domain T_DOMAIN_INT as NUMERIC ;
drop domain T_DOMAIN_CHR_SHORT;
create domain T_DOMAIN_CHR_SHORT as CHAR(1) ;
drop domain T_DOMAIN_CHR_LONG;
create domain T_DOMAIN_CHR_LONG as CHAR(50) ;
/* =================================================== */
/* Table: MODEL */
/*=================================================== */
create table MODEL
(
ID CHAR(10),
REMARK CHAR(10),
PATH CHAR(10),
MFILE CHAR(10)
);
/* ================================================== */
/* Table: INDEXES */
/*================================================== */
create table INDEXES
(
IID CHAR(10) not null,
MN T_DOMAIN_INT,
MX T_DOMAIN_INT,
STEP T_DOMAIN_INT,
constraint PK_INDEXES primary key (IID)
);
/* ================================================== */
/* Table: VERSION */
/* ================================================== */
create table VERSION
(
NUM T_DOMAIN_INT not null,
REMARK T_DOMAIN_CHR_LONG,
constraint PK_VERSION primary key (NUM)
);
/* ================================================= */
/* Table: PARAMS */
/* ================================================= */
create table PARAMS
(
ID T_DOMAIN_CHR not null,
REMARK T_DOMAIN_CHR_LONG,
constraint PK_PARAMS primary key (ID)
);
/* ================================================= */
/* Table: PARAM */
/* ================================================= */
create table PARAM
(
ID CHAR(10),
IID CHAR(10),
IID_VALUE T_DOMAIN_INT,
NUM T_DOMAIN_INT not null,
constraint PK_PARAM primary key (NUM)
);
/* ================================================= */
/* Index: IDX6 */
/* ================================================= */
create ASC index IDX6 on PARAM (ID, NUM, IID);
/* ================================================= */
/* Table: INTER */
/* ================================================== */
create table INTER
(
ID T_DOMAIN_CHR not null,
IID T_DOMAIN_CHR,
INFORM T_DOMAIN_INT,
KIND T_DOMAIN_CHR_SHORT
);
/* ================================================ */
/* Table: VAR_VALUE */
/* ================================================ */
create table VAR_VALUE
(
ID CHAR(10),
NUM T_DOMAIN_INT,
ID_VALUE T_DOMAIN_CHR_LONG,
VER T_DOMAIN_INT
);
alter table PARAM
add constraint FK_REF_3 foreign key (ID)
references PARAMS;
alter table PARAM
add constraint FK_REF_5 foreign key (IID)
references INDEXES;
alter table INTER
add constraint FK_REF_6 foreign key (ID)
references PARAMS;
alter table INTER
add constraint FK_REF_7 foreign key (IID)
references INDEXES;
alter table VAR_VALUE
add constraint FK_REF_2 foreign key (ID)
references PARAMS;
alter table VAR_VALUE
add constraint FK_REF_4 foreign key (VER)
references VERSION;
alter table VAR_VALUE
add constraint FK_REF_1 foreign key (NUM)
references PARAM;
На уровне таблиц это выглядит следующим образом:
Список таблиц
Имя |
Кодовое название |
Экономическая модель |
MODEL |
Версии расчета модели |
VERSION |
Взаимосвязи индексов и параметров |
INTER |
Значения переменных |
VAR_VALUE |
Индексы модели |
INDEXES |
Связи параметров со значениями |
PARAM |
Экономические параметры |
PARAMS |
Таблица Экономическая модель
Список полей
Имя |
Кодовое название |
Тип |
Первичный ключ |
Название файла ограничений |
MFILE |
CHAR(10) |
Нет |
Обозначение модели |
ID |
CHAR(10) |
Нет |
Описание модели |
REMARK |
CHAR(10) |
Нет |
Путь к БД модели |
PATH |
CHAR(10) |
Нет |
Таблица Версии расчета модели
Список полей
Имя |
Кодовое название |
Тип |
Первичный ключ |
Комментарии к версии |
REMARK |
CHAR(50) |
Да |
Номер версии |
NUM |
NUMERIC |
Нет |
Список индексов
Кодовое название |
Поле |
Сортировка |
IDX3 |
NUM |
По возрастанию |
Таблица Взаимосвязи индексов и параметров
Список полей
Имя |
Кодовое название |
Тип |
Первичный ключ |
Вид |
KIND |
CHAR(1) |
Нет |
Индекс |
IID |
CHAR(10) |
Нет |
Параметр |
ID |
CHAR(10) |
Нет |
Порядок следования |
INFORM |
NUMERIC |
Нет |
Список индексов
Кодовое название |
Поля |
Сортировка |
IDX4 |
ID IID |
По возрастанию По возрастанию |
Таблица Значения переменных
Список полей
Имя |
Кодовое название |
Тип |
Первичный ключ |
Значение параметра |
ID_VALUE |
CHAR(50) |
Нет |
Комбинация индексов |
NUM |
NUMERIC |
Нет |
Параметр |
ID |
CHAR(10) |
Нет |
Номер версии |
VER |
NUMERIC |
Нет |
Список индексов
Кодовое название |
Поля |
Сортировка |
IDX2 |
VER ID NUM |
По возрастанию По возрастанию По возрастанию |
Таблица Индексы модели
Список полей
Имя |
Кодовое название |
Тип |
Первичный ключ |
Шаг |
STEP |
NUMERIC |
Нет |
Индекс |
IID |
CHAR(10) |
Да |
Макс |
MX |
NUMERIC |
Нет |
Мин |
MN |
NUMERIC |
Нет |
Список индексов
Кодовое название |
Поля |
Сортировка |
IDX5 |
IID |
По возрастанию |
Таблица Связи параметров со значениями
Список полей
Имя |
Кодовое название |
Тип |
Первичный ключ |
Значение индекса |
IID_VALUE |
NUMERIC |
Нет |
Индекс |
IID |
CHAR(10) |
Нет |
Комбинация индексов |
NUM |
NUMERIC |
Да |
Параметр |
ID |
CHAR(10) |
Нет |
Список индексов
Кодовое название |
Поля |
Сортировка |
IDX6 |
ID NUM IID |
По возрастанию По возрастанию По возрастанию |
Таблица Экономические параметры
Список полей
Имя |
Кодовое название |
Тип |
Первичный ключ |
Комментарий |
REMARK |
CHAR(50) |
Нет |
Параметр |
ID |
CHAR(10) |
Да |
Список индексов
Кодовое название |
Поля |
Сортировка |
IDX1 |
ID |
По возрастанию |
Ниже приведен текст трех основных триггеров:
Список триггеров
Таблица |
Триггер |
INTER |
ti_inter |
PARAM |
ti_param |
VAR_VALUE |
ti_var_value |
триггер ti_inter
Имя таблицы: Взаимосвязи индексов и параметров Код: INTER триггер: ti_inter тип: InsertTrigger , Default Trigger