Схема данных¶
Платформа Tessa разделяет описание схемы данных и типов карточек, т.е. физической структуры таблиц и их логической взаимосвязи. Тип карточки объединяет несколько указанных полей из различных таблиц, а также определяет пользовательский интерфейс карточки, т.е. то, какие поля и каким образом редактируются, и где они визуально расположены.
Ниже приведено руководство по созданию простого типа карточки Документ с указанием следующих полей:
-
Тема документа
– строка, длина не ограничена. -
Номер
– число, в которое записывается порядковый номер документа. -
Тип документа
– значение из перечисления:-
Incoming (входящий)
-
Outgoing (исходящий)
-
Internal (внутренний)
-
-
Контрагент
– ссылка на стандартный справочник контрагентов.
В типовом решении уже существуют карточки для работы с различными видами документов, но в рамках руководства мы создадим простую карточку со своей структурой, которую можно будет модифицировать любым образом (например, добавлять в неё произвольные поля и писать расширения, реализующие любую бизнес-логику).
Important
Для упрощения процесса обновления на новые версии платформы крайне желательно все объекты схемы данных (такие как таблицы, колонки и т.п.), добавляемые и изменяемые в рамках проектного решения, сохранять в отдельной библиотеке.
Редактор схемы данных¶
Схема данных настраивается на вкладке Схема
на панели навигации в левой части окна TessaAdmin
. В дереве под узлом Таблицы
расположены группы таблиц, а внутри – собственно таблицы с их колонками.
Для каждого проекта, разрабатываемого на платформе Tessa, рекомендуется придумать простой префикс, которым снабжать все объекты системы для удобства их поиска, а также для отличия от объектов, которые могут появиться в новых версиях платформы или типового решения. Для типового решения это префиксы Kr
и Wf
. Для объектов, созданных в рамках этого руководства, будем использовать префикс Ab
.
Первым делом создадим новую библиотеку, в которую будем добавлять новые таблицы. На узле Библиотеки
с помощью контекстного меню добавим новую библиотеку.
Добавится новая библиотека со стандартным именем Partition
, выберем её и укажем новое имя - Ab Partition
:
Новая библиотека создана, в нее мы будем добавлять все новые объекты схемы данных.
Создадим справочник типов документов со значениями Incoming, Outgoing и Internal. Справочники можно создавать двумя способами:
-
Как обычную таблицу, содержащую значения, которые явно заданы в схеме данных (т.н.
Enumeration
). Потребуются две колонки: идентификатор и отображаемое в UI название. -
Как множество карточек, в данном случае карточек
Тип документа
, с дополнительным полемНазвание типа
(уникальный идентификатор есть у любой карточки).
Для такого простого справочника, как Тип документа
, больше подойдёт вариант с Enumeration
. Если же каждое значение справочника определяется множеством полей и должно иметь пользовательский интерфейс для редактирования, то для его описания следует использовать карточки. Примером такого справочника является справочник контрагентов Partners
.
Таблица с типом Перечисление¶
Создание таблицы
Добавим таблицу типа Перечисление
со значениями справочника типов документов. Для этого в контекстном меню узла Таблицы
выберем пункт Добавить таблицу
. Таблица будет создана под узлом (без группы)
, который потребуется развернуть и выделить узел с таблицей. Укажем для таблицы Название, Группу, а также Библиотеку, как показано на изображении ниже.
Обратите внимание, что в свойстве Используется для типа указано Не указан
, т.е. эта таблица не используется в типах карточек. Свойство Тип секции равно Перечисление
, т.е. это таблица-перечисление (и это единственный корректный тип таблицы, которая не используется в типах карточек).
Флажок Виртуальная определяет, что эта таблица должна физически отсутствовать в базе данных, но присутствовать в схеме. Виртуальные таблицы не нужны для Перечисление
, но могут быть полезны для таблиц, включённых в типы карточек, чтобы связывать контролы со схемой данных, причём данные могут устанавливаться расширениями произвольным образом.
Example
Например, это позволяет вывести в карточке сотрудника список департаментов, в которые входит сотрудник, хотя физически в БД отсутствует таблица Департаменты, в которые входит сотрудник
, но присутствует таблица Сотрудники, которые включены в департамент
.
Т.е. таблица Департаменты, в которые входит сотрудник
присутствует в схеме данных и поэтому может быть связана с соответствующим контролом, но она отмечена как виртуальная, т.к. она должна не располагаться в БД, а заполняться расширениями при загрузке карточки сотрудника (расширение выполняет SQL-запрос, и заполняет строки виртуальной секции по данным из таблиц).
Поле Описание может содержать произвольное многострочное описание таблицы. Аналогичное поле есть и у других элементов схемы данных, т.е. описание можно добавить также для колонок, ограничений, хранимых процедур, функций и миграций.
Добавление колонок
-
Добавим в таблицу
AbDocumentTypes
колонкуID
. Она будет содержать числовой идентификатор для этого типа. Для этого раскроем узелAbDocumentTypes
, выделим узелКолонки
и в контекстном меню выберем пунктДобавить физическую колонку
. Разворачиваем узел с колонками и выбираем созданную колонку. Обратите внимание, что колонка автоматически создалась в нашей библиотеке -Ab Partition
. Для созданной колонки нужно указать Название и Тип. Для колонкиID
в качестве типа подойдётInt16 Not Null
, т.е. 16-битное целое число, которое не должно быть равноNull
. -
Аналогично добавим строковую колонку
Name
с типомString(64) Not Null
, т.е. в колонке может храниться Unicode-строка максимальной длиной в 64 символа.
Первичный ключ¶
Для упрощения работы со ссылками на эту таблицу, а также для гарантирования уникальности значений в колонке с идентификатором, создадим первичный ключ, выбрав узел Ограничения
и в контекстном меню нажав Добавить первичный ключ
. Новый ключ будет добавлен и для него автоматически будет указана библиотека - Ab Partition
. Отметим для созданного ключа флажок Кластерный
, чтобы созданный индекс был кластерным. В секции “Индексируемые колонки” из выпадающего списка выберем колонку ID
и далее нажмем на кнопку “+” для добавления колонки:
В узле Индексы
был автоматически создан кластерный уникальный индекс. Сохраним схему в базу данных, нажав кнопку Сохранить всё
в верхней панели (над деревом) или нажав сочетание клавиш <Ctrl+S>
. При этом будет показан диалог сохранения, в котором надо нажать Сохранить
ещё раз, дождаться, пока таблица будет добавлена, при этом цвет строки станет зелёным.