Инструменты пользователя

Инструменты сайта


lssexampl-02-datastru

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

lss

Введение

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

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

  • Скачаем архив LSS проекта для текущего этапа.
  • Обновим проект из архива. Надо быть осторожным с конфигурационным файлом площадки php/config/config-place.php, он содержит текущие параметры соединения с базой данных, его обновлять не надо.
  • Выполним с помощью утилиты pgAdmin скрипт создания структуры таблиц базы данных проекта, файл sql/tables.sql.
  • Выполним с помощью утилиты pgAdmin скрипт заполнения содержимого системных таблиц, файл export-import/backup/backup.sql.
  • Сформируем источники данных DataSource по описателям
    • зайдем в задачу (логин: root, пароль: 1)
    • через главное меню системы откроем экранную форму - Разработка/Структура базы
    • вызовем пункт меню - Пересчет/Генератор классов DataSource
    • в результате в папке php/datasources/autogen должны сформироваться файлы контроллеров для источников данных DataSource. Если файлы не появились, убедитесь что на папку php/datasources/autogen есть права на запись

Описание

Создание структуры таблиц в базе 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.

lssexampl-02-datastru.txt · Последнее изменение: 2024/07/08 13:02 — 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki