Перейти к содержанию

Схема данных

Платформа TESSA разделяет описание схемы данных и типов карточек, т.е. физической структуры таблиц и их логической взаимосвязи. Тип карточки объединяет несколько указанных полей из различных таблиц, а также определяет пользовательский интерфейс карточки, т.е. то, какие поля и каким образом редактируются, и где они визуально расположены.

Ниже приведено руководство по созданию простого типа карточки “Документ” с указанием следующих полей:

  • Тема документа – строка, длина не ограничена;
  • Номер – число, в которое записывается порядковый номер документа;
  • Тип документа – значение из перечисления:

    • Incoming (входящий);
    • Outgoing (исходящий);
    • Internal (внутренний);
  • Контрагент – ссылка на стандартный справочник контрагентов.

В типовом решении уже существуют карточки для работы с различными видами документов, но в рамках данного руководства создается простая карточка со своей структурой, которую можно будет модифицировать любым образом (например, добавлять в неё произвольные поля и писать расширения, реализующие любую бизнес-логику).

Important

Для упрощения процесса обновления на новые версии платформы крайне желательно все объекты схемы данных (такие как таблицы, колонки и т.п.), добавляемые и изменяемые в рамках проектного решения, сохранять в отдельной библиотеке.

Редактор схемы данных

Схема данных настраивается на вкладке “Схема” на панели навигации в левой части окна TessaAdmin. В дереве под узлом Таблицы расположены группы таблиц, а внутри – собственно таблицы с их колонками.

Для каждого проекта, разрабатываемого на платформе TESSA, рекомендуется придумать простой префикс, которым снабжать все объекты системы для удобства их поиска, а также для отличия от объектов, которые могут появиться в новых версиях платформы или типового решения. Для типового решения это префиксы Kr и Wf. Для объектов, созданных в рамках этого руководства, будет использоваться префикс Ab.

Первым делом необходимо создать новую библиотеку, в которую будут добавляться новые таблицы. Для этого необходимо на узле “Библиотеки” с помощью контекстного меню добавить новую библиотеку и указать новое имя, например, Ab Partition, в нее будут добавляться все новые объекты схемы данных.

Справочники можно создавать двумя способами:

  1. Как обычную таблицу, содержащую значения, которые явно заданы в схеме данных (т.е. Enumeration). Потребуются две колонки: идентификатор и отображаемое в UI название.
  2. Как множество карточек, в данном случае карточек Тип документа, с дополнительным полем Название типа (уникальный идентификатор есть у любой карточки).

Tip

Для такого простого справочника, как Тип документа, больше подойдёт вариант с Enumeration. Если же каждое значение справочника определяется множеством полей и должно иметь пользовательский интерфейс для редактирования, то для его описания следует использовать карточки. Примером такого справочника является справочник контрагентов Partners.

Таблица с типом Перечисление

Для создания таблицы с типом “Перечисление” со значениями справочника типов документов необходимо выполнить следующие действия:

  1. В контекстном меню узла Таблицы нужно выбрать пункт Добавить таблицу. Таблица будет создана под узлом (без группы).
  2. Данный узел потребуется развернуть и выделить узел с таблицей.
  3. Заполнить для таблицы поле Название значением AbDocument, Группа = Ab, Библиотека = Ab Partition, Используется для типа = Не указан, Тип секции = Перечисление, а также не выбирать флаг Виртуальная.

Important

В свойстве Используется для типа указано Не указан, т.е. эта таблица не используется в типах карточек.

Свойство Тип секции равно Перечисление, т.е. это таблица-перечисление (и это единственный корректный тип таблицы, которая не используется в типах карточек).

Флаг Виртуальная определяет, что эта таблица должна физически отсутствовать в базе данных, но присутствовать в схеме. Виртуальные таблицы не нужны для Перечисление, но могут быть полезны для таблиц, включённых в типы карточек, чтобы связывать контролы со схемой данных, причём данные могут устанавливаться расширениями произвольным образом.

Example

Например, это позволяет вывести в карточке сотрудника список департаментов, в которые входит сотрудник, хотя физически в БД отсутствует таблица Департаменты, в которые входит сотрудник, но присутствует таблица Сотрудники, которые включены в департамент.

Т.е. таблица Департаменты, в которые входит сотрудник присутствует в схеме данных и поэтому может быть связана с соответствующим контролом, но она отмечена как виртуальная, т.к. она должна не располагаться в БД, а заполняться расширениями при загрузке карточки сотрудника (расширение выполняет SQL-запрос, и заполняет строки виртуальной секции по данным из таблиц).

Поле Описание может содержать произвольное многострочное описание таблицы. Аналогичное поле есть и у других элементов схемы данных, т.е. описание можно добавить также для колонок, ограничений, хранимых процедур, функций и миграций.

Для добавления колонок необходимо:

  1. Развернуть узел с созданной таблицей.
  2. Вызвать контекстное меню на узле “Колонки”, затем нажать Добавить физическую колонку или Добавить комплексную колонку.
  3. Развернуть узел с колонками и выбрать созданную колонку.
  4. Проверить, что колонка создалась в необходимой библиотеке.
  5. Для созданной колонки указать Название, Описание, Тип, Правила сравнения строк (MS SQL Server), Правила сравнения строк (PostgreSQL), Значение по умолчанию, флаг Автонкрементная колонка, Начальное значение и Шаг.
  6. Нажать кнопку Сохранить все.

Example

В рамках данного руководства необходимо:

  1. Развернуть узел с созданной таблицей.
  2. Вызвать контекстное меню на узле “Колонки”, затем нажать Добавить физическую колонку.
  3. Развернуть узел с колонками и выбрать созданную колонку.
  4. Проверить, что колонка создалась в библиотеке = Ab Partition.
  5. Для созданной колонки указать Название = ID, Тип = Int16 Not Null (т.е. 16-битное целое число, которое не должно быть равно Null),
  6. Поля Описание, Правила сравнения строк (MS SQL Server), Правила сравнения строк (PostgreSQL), Значение по умолчанию, флаг Автонкрементная колонка, Начальное значение и Шаг не заполнять.
  7. Нажать кнопку Сохранить все.

Аналогично добавляются остальные колонки, например, строковая колонка Name с типом String(64) Not Null, т.е. в колонке может храниться Unicode-строка максимальной длиной в 64 символа.

Первичный ключ

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

  1. Выбрать узел “Ограничения” и в контекстном меню нажать Добавить первичный ключ.
  2. Проверить, что новый ключ добавлен и для него указана библиотека - Ab Partition.
  3. Отметить для созданного ключа флаг Кластерный, чтобы созданный индекс был кластерным.
  4. В секции Индексируемые колонки из выпадающего списка выбрать колонку ID и нажать кнопку + для добавления колонки.
  5. Проверить, что в узле “Индексы” был автоматически создан кластерный уникальный индекс.
  6. Сохранить схему в базу данных, нажав кнопку Сохранить всё в панели инструментов или сочетанием клавиш Ctrl+S. При этом будет показан диалог сохранения, в котором надо нажать Сохранить ещё раз, дождаться, пока таблица будет добавлена, при этом цвет строки станет зелёным.
Back to top