Содержание

Этап создания структуры базы данных LSS проекта

lss

Введение

На этом этапе мы создадим необходимые таблицы в базе данных SQL сервера, опишем эти таблицы в LSS проекте и сформируем по описателям контроллеры источников данных DataSource.

Развертывание этапа на площадке

Описание

Создание структуры таблиц в базе SQL сервера

Структура базы данных LSS проекта лежит в файле sql/tables.sql в виде SQL скрипта:

-- роль доступа
create table "role" (
	"id" serial primary key,
	"code" varchar(64) not null default '',
	"name" varchar(255) not null default ''
);
alter table "role" add unique("code") deferrable initially deferred;
alter table "role" add unique("name") deferrable initially deferred;

-- пользователь системы
create table "user" (
	"id" serial primary key,
	"login" varchar(64) not null default '',
	"password" varchar(255) not null default '',
	"fio" varchar(255) not null default '',
	"roleid" integer references "role" deferrable initially deferred
);
alter table "user" add unique("login") deferrable initially deferred;

-- цех
create table "department" (
	"id" serial primary key,
	"name" varchar(255) not null default ''
);
alter table "department" add unique("name") deferrable initially deferred;

-- участок
create table "sector" (
	"id" serial primary key,
	"departmentid" integer references "department" on delete cascade deferrable initially deferred,
	"name" varchar(255) not null default ''
);
create index "idx_sector_departmentid" on "sector" ("departmentid");
alter table "sector" add unique("departmentid", "name") deferrable initially deferred;


-- тип оборудования
create table "machinetype" (
	"id" serial primary key,
	"name" varchar(255) not null default ''
);
alter table "machinetype" add unique("name") deferrable initially deferred;

-- состояние оборудования
create table "machinestatus" (
	"id" serial primary key,
	"name" varchar(255) not null default ''
);
alter table "machinestatus" add unique("name") deferrable initially deferred;

-- вид ремонта
create table "repair" (
	"id" serial primary key,
	"name" varchar(255) not null default '',
	"npp" int not null default 0
);
alter table "repair" add unique("name") deferrable initially deferred;

-- паспорт оборудования
create table "machine" (
	"id" serial primary key,
	"dfrom" date,
	"invnum" varchar(64) not null default '',
	"machinetypeid" integer references "machinetype" deferrable initially deferred,
	"model" varchar(64) not null default '',
	"departmentid" integer references "department" deferrable initially deferred,
	"sectorid" integer references "sector" deferrable initially deferred,
	"dstatus" date,
	"machinestatusid" integer references "machinestatus" deferrable initially deferred
);
create index "idx_machine_machinetypeid" on "machine" ("machinetypeid");
create index "idx_machine_departmentid" on "machine" ("departmentid");
create index "idx_machine_sectorid" on "machine" ("sectorid");
create index "idx_machine_machinestatusid" on "machine" ("machinestatusid");
alter table "machine" add unique("invnum") deferrable initially deferred;

-- ремонт оборудования
create table "machinerepair" (
	"id" serial primary key,
	"machineid" integer references "repair" on delete cascade deferrable initially deferred,
	"repairid" integer references "repair" deferrable initially deferred,
	"dplan" date,
	"dfact" date
);
create index "idx_machinerepair_machineid" on "machinerepair" ("machineid");
create index "idx_machinerepair_repairid" on "machinerepair" ("repairid");

-- нормы ремонтов
create table "repairnorm" (
	"id" serial primary key,
	"repairid" integer references "repair" on delete cascade deferrable initially deferred,
	"machinetypeid" integer references "machinetype" on delete cascade deferrable initially deferred,
	"period" integer not null default 0
);
alter table "repairnorm" add unique("machinetypeid","repairid") deferrable initially deferred;
create index "idx_repairnorm_repairid" on "repairnorm" ("repairid");
create index "idx_repairnorm_machinetypeid" on "repairnorm" ("machinetypeid");

Этот скрипт написан вручную, содержит описание таблиц, полей, ссылочных целостностей, индексов. Его необходимо выполнить при развертывании этапа проекта на площадке.

Описание структуры базы данных LSS проекта

Поля и таблицы базы данных LSS проекта должны быть описаны. Для описания используется системная экранная форма Описание структуры базы данных, доступная из главного меню системы как Разработка/Структура базы.

Описатели хранятся в системных таблицах: systablecategory, systable, sysfield, sysfieldparams.

Эти описатели содержат информацию, необходимую для нормальной работы источников данных и экранных форм, например:

Описатели были заполнены посредством этой экранной формы, а затем выгружены в виде исполняемого SQL скрипта, посредством вызова пункта меню экранной формы: Экспорт/Экспорт системных справочников в виде SQL скрипта.

Таблицы в описателях делятся на 3 группы:

Экранная форма Описание структуры базы данных содержит механизмы экспорта и импорта содержимого таблиц базы данных, раздельно по этим 3 группам. Для экспорта/импорта используется папка export-import/backup. Экспорт возможен в формате XML или в виде исполняемого SQL скрипта.

Пункт меню Пересчет/Генератор классов DataSource автоматически формирует по описателям контроллеры источников данных DataSource. Размещаются они в папке php/datasources/autogen.

Демонстрационные примеры и ссылки

Демонстрационные примеры доступны в режиме «только чтение». Для входа используйте логин root, пароль 1.