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

Схема данных

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

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

  • Тема документа – строка, длина не ограничена.

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

  • Тип документа – значение из перечисления:

    • Incoming (входящий)

    • Outgoing (исходящий)

    • Internal (внутренний)

  • Контрагент – ссылка на стандартный справочник контрагентов.

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

Important

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

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

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

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

Первым делом создадим новую библиотеку, в которую будем добавлять новые таблицы. На узле Библиотеки с помощью контекстного меню добавим новую библиотеку.

Добавится новая библиотека со стандартным именем Partition, выберем её и укажем новое имя - Ab Partition:

Новая библиотека создана, в нее мы будем добавлять все новые объекты схемы данных.

Создадим справочник типов документов со значениями Incoming, Outgoing и Internal. Справочники можно создавать двумя способами:

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

  2. Как множество карточек, в данном случае карточек Тип документа, с дополнительным полем Название типа (уникальный идентификатор есть у любой карточки).

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

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

Создание таблицы

Добавим таблицу типа Перечисление со значениями справочника типов документов. Для этого в контекстном меню узла Таблицы выберем пункт Добавить таблицу. Таблица будет создана под узлом (без группы), который потребуется развернуть и выделить узел с таблицей. Укажем для таблицы Название, Группу, а также Библиотеку, как показано на изображении ниже.

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

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

Example

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

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

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

Добавление колонок

  1. Добавим в таблицу AbDocumentTypes колонку ID. Она будет содержать числовой идентификатор для этого типа. Для этого раскроем узел AbDocumentTypes, выделим узел Колонки и в контекстном меню выберем пункт Добавить физическую колонку. Разворачиваем узел с колонками и выбираем созданную колонку. Обратите внимание, что колонка автоматически создалась в нашей библиотеке - Ab Partition. Для созданной колонки нужно указать Название и Тип. Для колонки ID в качестве типа подойдёт Int16 Not Null, т.е. 16-битное целое число, которое не должно быть равно Null.

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

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

Для упрощения работы со ссылками на эту таблицу, а также для гарантирования уникальности значений в колонке с идентификатором, создадим первичный ключ, выбрав узел Ограничения и в контекстном меню нажав Добавить первичный ключ. Новый ключ будет добавлен и для него автоматически будет указана библиотека - Ab Partition. Отметим для созданного ключа флажок Кластерный, чтобы созданный индекс был кластерным. В секции “Индексируемые колонки” из выпадающего списка выберем колонку ID и далее нажмем на кнопку “+” для добавления колонки:

В узле Индексы был автоматически создан кластерный уникальный индекс. Сохраним схему в базу данных, нажав кнопку Сохранить всё в верхней панели (над деревом) или нажав сочетание клавиш <Ctrl+S>. При этом будет показан диалог сохранения, в котором надо нажать Сохранить ещё раз, дождаться, пока таблица будет добавлена, при этом цвет строки станет зелёным.

Back to top