/*
Staff (с) 1995, АО "Новый Атлант", НТО "Top Soft"
Назначение:
База данных "Проекты организации".
Назначение : Демонстрации основных возможностей
СУБД Атлантис.
БД включает все поддерживаемые типы данных:
char, string, word, integer, longint, single,
double, date, time, lvar.
Иллюстрируется возможность применения различных
атрибутов ключей: Unique, AutoInc, Upcase, Seg, Null,
Surragate, Journal
*/
$G+ // Осуществлять генерацию словарей БД
create dictionary StafBase "Проекты_организации" using "DICT";
directory for pascal "pas"; // Куда будут складываться
// сгенерированные Паскаль-заготовки
set type
(
tNREC = comp // Тип описания номера записи таблицы
);
create table ExClass "Классификация затрат"
using "%DATA%DATA\ExClass" with replace
(
NREC : tNREC "Номер записи", // Одна запись - один класси-
// фикатор
classCode : string[20] "Классификационный код",
className : string[40] "Наименование классификатора"
)
with index
(
ExClass0 = NREC (Unique, Surrogate, Journal),
ExClass1 = ClassCode
);
create table Postes "Должности" using "%DATA%DATA\Postes" with replace
(
NREC : tNREC "Номер записи",// Одна запись - одна должность
name : string[40] "Должность",
minSalary : double "Минимальный оклад",
maxSalary : double "Максимальный оклад"
)
with index
(
Postes0 = NREC (unique, surrogate, journal),
Postes1 = name (upcase,length = 10),
Postes2 = minSalary (Desc) + maxSalary
);
create table Departments "Отделы" using
"%DATA%DATA\departs" with replace
(
NREC : tNREC "Номер записи", // Одна запись - один отдел
num : string[16] "Номер отдела",
name : string[70] "Название отдела",
chief : tNREC "Руководитель" // = Employee.NREC
)
with index
(
Departments0 = NREC (unique, surrogate, journal),
Departments1 = name (upcase,length = 10)
);
create table Employee "Сотрудники" using "%DATA%DATA\employee" with replace
(
NREC : tNREC "Номер записи", // Одна запись - один сотрудник
name : string[50] "Фамилия И.О.",
postesNREC : tNREC "Должность",
departmentNREC : tNREC "Отдел",
formulaNREC : tNREC "Формула вычисления премии",
status : string[1] "Признак совместителя",
// П-постоянный, С-совместитель
acceptDate : date "Дата приема на работу",
// Только для постоянных сотрудников.
salary : double "Зарплата",
premium : double "Премия"
)
with index
(
Employee0 = NREC (unique, surrogate, journal),
Employee1 = name (upcase),
Employee2 = postesNREC + departmentNREC,
Employee3 = formulaNREC
);
create table Projects "Проекты" using "%DATA%DATA\projects" with replace
(
NREC : tNREC "Номер записи", // Одна запись - один проект
name : string[50] "Название",
status : string[1] "Статус" null= "З",
// Т - текущий З - завершенный
comment : lvar "Описание проекта"
)
with index
(
Projects0 = NREC (unique, surrogate, journal),
Projects1 = name (upcase, length = 10 ),
Projects3 = status
);
create table Stages "Этапы" using "%DATA%DATA\stages" with replace
(
NREC : tNREC "Номер записи", // Одна запись - один этап
projectsNREC : tNREC "Проект", // одного проекта
num : word "Номер этапа",
name : string[50] "Наименование",
begDate : date "Дата начала",
endDate : date "Дата окончания",
comment : lvar "Описание этапа"
)
with index
(
Stages0 = NREC (unique, surrogate, journal),
Stages1 = num + name (upcase),
Stages2 = begDate,
Stages3 = endDate,
Stages4 = projectsNREC
);
create table Expens "Расходы" using "%DATA%DATA\expens" with replace
(
NREC : tNREC "Номер записи", // Одна запись - расходы по
projectsNREC : tNREC "Проект", // по одному проекту
stagesNREC : tNREC "Этап", // за один этап.
exClassNREC : tNREC "Классификатор затрат",
exDate : date "Дата",
summ : double "Сумма"
)
with index
(
Expens0 = exDate,
Expens1 = projectsNREC + stagesNREC,
Expens2 = exClassNREC
);
create table EmpProj "Сотрудники-Проекты" using "%DATA%DATA\empproj"
with replace
(
employeeNREC : tNREC "Сотрудник",
projectsNREC : tNREC "Проект"
)
with index
(
EmpProj0 = employeeNREC + projectsNREC,
EmpProj1 = projectsNREC + employeeNREC
);
create table Formulae "Формулы" using "%DATA%DATA\formulae"
with replace
(
NREC : tNREC "Номер записи",
name : string[40] "Имя формулы",
formula : string[255] "Формула"
)
with index
(
Formulae0 = NREC (unique, surrogate, journal),
Formulae1 = name (upcase)
);
create pascal; // Генерировать Паскаль-заготовки