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

Раздел “Схема”

Раздел предназначен для просмотра и редактирования схемы данных.

Warning

Перед внесением каких-либо изменений в схему рекомендуется сделать резервную копию базы данных и убедиться, что пользователи в данный момент не работают с системой.

Раздел разделён на две части. В левой части расположено дерево схемы данных, в правой - область работы с объектами схемы.

В отдельных ветвях дерева содержатся Таблицы, Процедуры, Функции, Миграции и Библиотеки. Каждая из этих ветвей содержит объекты соответствующего типа, разделенные на группы.

Изначально объект не входит ни в одну группу и располагается в узле (без группы). После заполнения поля Группа он будет перемещён в узел с названием, указанным в поле.

Действия, доступные через контекстное меню (вызывается щелчком правой кнопкой мыши по элементу дерева):

Действие Команда в контекстном меню Узел
Добавить колонку в выделенную таблицу Добавить физическую колонку Колонки
Добавить ссылочную колонку Добавить комплексную колонку Колонки
Добавить первичный ключ Добавить первичный ключ Ограничения
Добавить уникальный ключ Добавить уникальный ключ Ограничения
Добавить индекс Добавить индекс Индексы
Добавить таблицу Добавить таблицу Таблицы
Добавить библиотеку Добавить библиотеку Библиотеки
Добавить миграцию Добавить миграцию Миграции
Добавить хранимую процедуру Добавить процедуру Процедуры
Добавить функцию Добавить функцию Функции
Удалить выделенный объект Удалить Созданный объект

Note

При выборе пункта Добавить в контекстном меню нужной группы, объект будет создан с уже заполненным свойством Группа.

Над деревом схемы находится окно быстрого поиска, при помощи которого можно найти объект по его названию.

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

Импорт схемы данных/библиотеки из файла

Чтобы импортировать схему данных из файлов, необходимо выбрать Импорт -> Файл схемы… на тулбаре раздела.

Появится диалог выбора основного файла структуры БД формата tsd. После выбора файла откроется окно с информацией по связанным со схемой библиотекам.

Нажав на x слева от названия библиотеки, её можно исключить из импортируемой схемы. Для подключения дополнительных библиотек нужно нажать на соответствующую кнопку и в файловой системе выбрать папки с файлами библиотек формата tsp.

После нажатия на кнопку ОК система определит, изменяет ли импортируемая схема БД текущую, и при наличии изменений отобразит их список в соответствующем диалоге.

При нажатии Сохранить система начнёт применять изменения одно за другим. Применяемое изменение подсвечивается жёлтым цветом, успешно применённое изменение - зелёным.

Note

Если при обновлении произошла ошибка, то применение изменений останавливается, и ошибочный шаг подсвечивается красным. Двойной клик по этому шагу покажет диалог с детальным описанием ошибки.

Если к текущей схеме данных требуется импортировать библиотеки, следует воспользоваться кнопкой Импорт -> Файлы библиотек…. Появится диалог выбора папок. Необходимо выбрать папку, в которой есть файлы библиотек формата tsp. После выбора нужных файлов система отобразит список изменений, которые будут внесены в схему данных. Чтобы подтвердить изменения, нужно нажать Сохранить.

Сохранение схемы данных

После внесения каких-либо изменений для сохранения схемы непосредственно в базу данных необходимо нажать на кнопку тулбара Сохранить всё.

В появившемся диалоговом окне будет отображен список изменений. Чтобы подтвердить изменения, нужно нажать Сохранить.

В случае, если изменений в схеме данных не будет найдено, в диалоговом окне будет выведено соответствующее сообщение.

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

Для создания таблицы необходимо нажать правой кнопкой мыши по узлу Таблицы и выбрать в контекстном меню пункт Добавить таблицу.

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

Также для таблицы можно указать следующие свойства:

  • Название – используется при создании карточек и представлений, поэтому его изменение нежелательно.
  • Группа – для удобства работы со схемой данных.
  • Описание – описание предназначения таблицы.
  • Библиотека - библиотека, в которой будет храниться данная таблица, по умолчанию - Default.

    Important

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

  • Используется для типа - тип объекта, с которым ассоциированы данные в создаваемой таблице. Указывается в зависимости от типа объектов системы, для которых предназначена таблица:

    • Не указан – тип не определён
    • Карточки
    • Задания
    • Файлы
  • Тип секции – тип данных, хранимых в таблице:

    • Перечисление - используется для указания значений вручную в узле Записи. Подробнее о создании данных таблиц можно узнать в Руководстве начинающего разработчика.
    • Строковая – одиночные записи. На один объект (карточка, задание и т.п.) одна запись в таблице.
    • Коллекционная – коллекционные записи. На один объект может приходиться несколько записей в таблице.
    • Иерархическая – иерархические записи. Тоже самое, что и коллекционные, но с поддержкой иерархии записей.
  • Виртуальная – таблица описана в схеме данных, но физически отсутствует в базе данных.

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

После того, как настройка таблицы будет завершена, необходимо её сохранить. Для вызова диалога сохранения схемы можно нажать Ctrl+S.

Создание колонок

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

  • Физическая колонка хранит значения, такие как номера или строки.
  • Комплексная колонка ссылается на значения и колонки других таблиц, т.е. логически объединяет набор физических колонок. Использование комплексных колонок необходимо для поддержания ссылочной целостности базы данных.

Редактор физической колонки имеет следующие настройки:

  • Название - название колонки в БД.
  • Описание - произвольное описание колонки.
  • Библиотека - библиотека, в которой будет храниться данная колонка, по умолчанию совпадает с библиотекой таблицы.
  • Тип – тип данных, хранящихся в колонке, см. таблицу с доступными типами.
  • Значение по умолчанию – значение, записываемое в колонку по умолчанию.

    • Для невиртуальных колонок соответствует ограничению DEFAULT CONSTRAINT в SQL.
    • Для всех колонок в таблице с типом секции “Перечисление” также определяет значение, указываемое при добавлении строк в таблицу “Записи”.
    • Для иных типов секций определяет значения для созданных, но ещё не сохранённых объектов карточек, файлов и заданий.

  • Виртуальная - признак того, что колонка является виртуальной, т.е. отсутствует в БД, даже если таблица не является виртуальной (если таблица виртуальная, то этот флаг игнорируется).

    • Для таблиц с типом секции “Перечисление” позволяет указывать значение в строках таблицы “Записи”, чтобы оно было доступно в редакторе и в метаинформации (через API), но отсутствовало в строках в БД.
    • Для иных типов секций указывает, что колонка присутствует в секции объекта (карточка, файла или задания), но ведёт себя так, если бы она была частью виртуальной таблицы: при создании до первого сохранения имеет значение из настройки Значение по умолчанию; при загрузке существующего объекта заполняется как null; при сохранении и удалении игнорируется.
    • Виртуальные колонки возможно использовать не только в строковых, но также и в невиртуальных коллекционных/иерархических секциях в типах карточек, файлов и заданий, и в дочерних секциях, связанных через поле Ссылка на родителя в комплексной колонке, чего нельзя добиться использованием отдельных виртуальных секций.
  • Автоинкрементная колонка - признак того, что целочисленная колонка является автоинкрементной, т.е. автоматически увеличивает своё значение для каждой добавляемой строки средствами SQL. Флаг недоступен для колонок, в типе которых не задан целочисленный тип.
  • Начальное значение - начальное значение для автоинкрементных колонок при добавлении первой строки. Например, укажите 0, чтобы значение автоинкрементной колонки отсчитывалось от нуля. Поле недоступно, если не установлен флаг Автоинкрементная колонка.
  • Шаг - число, на которое увеличивается значение для автоинкрементных колонок при добавлении следующих строк. Например, укажите 1, чтобы значение автоинкрементной колонки увеличивалось на единицу для каждой следующей строки. Поле недоступно, если не установлен флаг Автоинкрементная колонка.
  • Правила сравнения строк (MS SQL Server) - указывает для СУБД MS SQL Server правило сравнения и сортировки строк, в т.ч. учитывать ли регистр символов, для колонки строкового типа - см. описание COLLATION для СУБД. Например, укажите Cyrillic_General_CS_AS, чтобы строка в этой колонке подчинялась правилам русского языка с учётом регистра независимо от того, какой COLLATION указан для базы данных.
  • Правила сравнения строк (PostgreSQL) - указывает для СУБД PostgreSQL правило сравнения и сортировки строк для колонки строкового типа - см. описание COLLATION для СУБД. Например, укажите ru, чтобы строка в этой колонке подчинялась правилам русского языка независимо от того, какой COLLATION указан для базы данных.

В группе MS SQL Server указаны дополнительные настройки, специфичные для этой СУБД:

  • Идентификатор строки - для колонки с типом Guid определяет признак ROWGUIDCOL (актуально для реплицируемых таблиц).
  • Разреженная - для колонок, тип которых допускает указание NULL, определяет признак SPARSE (оптимизирует хранение таблицы, где известно, что в большинстве строк для этой колонки указано значение NULL).

Редактор комплексной колонки имеет следующие настройки:

  • Название - префикс для названия физических колонок в БД, которые включены в эту комплексную колонку.
    • Например, если комплексная колонка называется Author, и она содержит физическую колонку Name, то эта физическая колонка в БД будет иметь название AuthorName.
  • Описание - произвольное описание колонки.
  • Библиотека - библиотека, в которой будет храниться данная колонка, по умолчанию совпадает с библиотекой таблицы.
  • Тип – определяет, могут ли все колонки, включённые в эту комплексную колонку, иметь значения NULL. Также тип Reference(Abstract) обозначает, что колонка всегда ссылается на таблицу Instances (т.е. это ссылка на карточку произвольного типа), тогда как тип Reference(Typified) позволяет указать любую таблицу в поле Ссылка на таблицу.
  • Ссылка на таблицу - таблица, на которую ссылается колонка. Обратитесь к разделу Пример создания поля со ссылкой на поле другой таблицы.
  • Справочник нормализации - указывает, что первая строковая колонка внутри комплексной является виртуальной и автоматически заполняется из справочника нормализации для таблицы, которая включена как секция в тип карточки, файла или задания.
    • Пример использования доступен в разделе Ссылка на справочник в типе карточки.
    • Если колонка расположена в таблице с типом секции “Перечисление”, то это указывает, что строковая физическая колонка внутри комплексной будет виртуальной, и записывает информацию по выбранному справочнику в метаинформацию схемы. Но это не определяет поведение по автоматическому заполнению из справочника, если для конкретной колонки не написан специализированный код, который использует метаинформацию и заполняет значение через API.
  • С внешний ключом - признак того, что в таблицу в БД добавляется внешний ключ (FOREIGN KEY в SQL), который содержит ключевые колонки, включённые в комплексную колонку (в списке Ссылочные колонки они отмечены как флаги, доступные только для чтения).
    • Этот признак влияет только на наличие внешнего ключа в БД, его наличие или отсутствие не влияет на поведение связанных контролов, и не изменяет иным образом поведение системы при работе с колонкой.
    • Если комплексная колонка отмечена как Виртуальная, то флаг С внешний ключом автоматически снимается без возможности его установить.
    • Если комплексная колонка включена в виртуальную таблицу, то наличие этого флага не влияет на поведение системы.
  • Ссылка на родителя - указывает, что в комплексной колонке определяется ссылка на идентификатор родительской коллекционной/иерархической секции в типе карточки, файла или задания.
    • Не влияет на создание колонки в БД, но влияет на её использование для порядка добавления/удаления строк в связанных секциях.
    • Признак обычно используется совместно с контролами “Таблица”, “Представление”, “Список”.
    • Признак игнорируется, если комплексная колонка включена в таблицу с типом секции “Перечисление”.
  • Виртуальная - признак того, что все физические колонки, включённые в эту комплексную колонку, являются виртуальными (без возможности снять с них флаг Виртуальная).
    • Виртуальные колонки, как описано выше, отсутствуют в БД, даже если таблица не является виртуальной.
  • Ссылочные колонки - список колонок таблицы, на которую комплексная колонка ссылается в поле Ссылка на таблицу.
    • Такие колонки дублируются в таблице, содержащей комплексную колонку, причём имена колонок начинаются с префикса, указанного в поле Название комплексной колонки.
    • При наличии связи комплексной колонки с контролом “Ссылка” или “Список” (в типах карточек, файлов, заданий), значения ссылочных колонок будут заполнены при выборе ссылочного значения, как и значения других физических колонок, добавленных в комплексную колонку через контекстное меню на колонке.
    • Или если значение очищается в контроле, то значения всех колонок внутри комплексной колонки указываются как NULL.

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


При создании физических и комплексных колонок следует внимательно следить за типом значений, которые будут храниться в них. Так, тип целочисленных значений Int16, в отличие от Int32, требует меньше памяти для хранения, однако в нем нельзя хранить слишком большие числа (выходящие за диапазон [-32768..32767]).

Добавление колонки осуществляется при помощи контекстного меню:

Таблица с доступными типами данных для колонок схемы

Название Описание и параметр (в скобках) Типы в SQL и .NET Тип в карточках Контролы в карточках
AnsiString Строка, закодированная в текущей кодовой странице для базы данных MSSQL, для PostgreSQL используется кодировка UTF-8 аналогично типу String. (Max) - строка неограниченной длины (до 2 Гб текста)

MSSQL: varchar

PostgreSQL: text

.NET: string

String

Нумератор

Строка

Текст

Текст с форматированием

AnsiStringFixedLength Строка фиксированной длины, закодированная в текущей кодовой странице для базы данных MSSQL, для PostgreSQL используется кодировка UTF-8 аналогично типу StringFixedLength. Используйте AnsiString, если строки могут иметь меньшую или большую длину, чем указано в типе. Значение (Max) недопустимо

MSSQL: char

PostgreSQL: character

.NET: string

String

Нумератор

Строка

Текст

Текст с форматированием

String Строка, закодированная в UTF-8. В контролах можно использовать символы Unicode: иероглифы, иностранные буквы, финансовые и математические обозначения и т.д. (Max) - строка неограниченной длины (до 2 Гб текста)

MSSQL: nvarchar

PostgreSQL: text

.NET: string

String

Нумератор

Строка

Текст

Текст с форматированием

StringFixedLength Строка, закодированная в UTF-8. В контролах можно использовать символы Unicode: иероглифы, иностранные буквы, финансовые и математические обозначения и т.д. Используйте String, если строки могут иметь меньшую или большую длину, чем указано в типе. Значение (Max) недопустимо

MSSQL: nchar

PostgreSQL: character

.NET: string

String

Нумератор

Строка

Текст

Текст с форматированием

Int16 Целочисленный тип данных. Размер - 16 бит. Этого достаточно для хранения значений не больше 32 767

MSSQL: smallint

PostgreSQL: smallint

.NET: short

Int32

Выбор цвета

Строка

Целое число

Int32 Целочисленный тип данных. Размер - 32 бита. Этого достаточно для хранения значений не больше 2 147 483 647

MSSQL: int

PostgreSQL: integer

.NET: int

Int32

Выбор цвета

Нумератор

Строка

Целое число

Int64 Целочисленный тип данных. Размер - 64 бита. Подходит для хранения значений, которые выходят за диапазоны типов Int16 и Int32

MSSQL: bigint

PostgreSQL: bigint

.NET: long

Int64

Нумератор

Строка

Целое число

Double Вещественный тип данных, число с плавающей запятой размером 8 байт

MSSQL: real

PostgreSQL: double precision

.NET: double

Double

Вещественное число

Строка

Currency 64-битные целые числа, масштабированные в 10 000 раз для представления числа с фиксированным десятичным разделителем (15 цифр слева от него и 4 цифры справа)

MSSQL: money

PostgreSQL: money

.NET: decimal

Decimal

Десятичное число

Строка

Decimal Содержит 128-разрядные (16-байтные) значения со знаком, представляющие 12-байтные целые числа с переменной степенью, кратной 10. Коэффициент масштабирования определяет количество цифр справа от десятичной запятой. Он находится в диапазоне от 0 до 28. (0..29, 0..28) - первое число означает число знаков до запятой, второе - после. Сумма значений в скобках не должна превышать 29

MSSQL: decimal

PostgreSQL: decimal

.NET: decimal

Decimal

Десятичное число

Строка

Time Формат времени без даты, занимает от 3 до 5 байт памяти, точность определяется пользователем

MSSQL: time

PostgreSQL: time without timezone

.NET: TimeSpan

DateTime

Дата и время

Строка

Date Формат даты без времени, занимает 3 байта и предназначен для хранения даты диапазоном от 01.01.0001 до 31.12.9999

MSSQL: date

PostgreSQL: date

.NET: short

DateTime

Дата и время

Строка

DateTime Стандартный тип данных для хранения даты и времени. Занимает в памяти 8 бит в MSSQL: 4 для хранения даты и 4 - для хранения времени

MSSQL: datetime

PostgreSQL: timestamp without timezone

.NET: DateTime

DateTime

Дата и время

Строка

DateTime2 Формат времени-даты, представленный MS SQL Server 2008. Для MSSQL предоставляет большую точность, чем тип DateTime; для PostgreSQL отличий нет

MSSQL: datetime2

PostgreSQL: timestamp without timezone

.NET: DateTime

DateTime

Дата и время

Строка

DateTimeOffset Тип данных, который, помимо даты и времени, хранит также информацию о смещении временной зоны, по которому было установлено текущее время

MSSQL: datetimeoffset

PostgreSQL: timestamp with timezone

.NET: DateTimeOffset

DateTimeOffset

Дата и время

Строка

Boolean Логический тип данных

MSSQL: bit

PostgreSQL: boolean

.NET: bool

Boolean

Флажок

Строка

Binary Бинарные данные. (Max) - данные неограниченной длины. Вместо (Max) можно указать максимальную длину строки от 1 до 8000

MSSQL: varbinary

PostgreSQL: bytea

.NET: byte[]

Binary

Строка

Guid Тип, предназначенный для хранения уникальных идентификаторов UUID/Guid

MSSQL: uniqueidentifier

PostgreSQL: uuid

.NET: Guid

Guid

Строка

Xml Содержит код в xml-разметке

MSSQL: xml

PostgreSQL: xml

.NET: sqlxml

String

Нумератор

Строка

Текст

Текст с форматированием

Json Содержит точную копию введённых JSON-данных с сохранением форматирования

MSSQL: nvarchar(max)

PostgreSQL: json

.NET: string

String

Нумератор

Строка

Текст

Текст с форматированием

BinaryJson Содержит JSON-данные, хранящиеся в бинарном виде, без сохранения форматирования для PostgreSQL (для MSSQL не отличается от Json). Поддерживает индексацию в PostgreSQL и в MS SQL Server 2016+

MSSQL: nvarchar(max)

PostgreSQL: jsonb

.NET: string

String

Нумератор

Строка

Текст

Текст с форматированием

Reference Тип, доcтупный только комплексным колонкам. ReferenceTypified определяет ссылку на любую указанную таблицу, а ReferenceAbstract - только на таблицу Instances Сохраняются типы колонок таблицы, на которую ссылается Object

Ссылка

Note

Значение в столбце Тип в карточках определяет, какой тип колонка будет иметь в метаинформации карточек, а именно в перечислении CardMetadataRuntimeType. По нему можно определить, что в структуре карточек некоторые поля секций, связанные с колонками, будут иметь одинаковые типы и поведение, несмотря на физическое различие в способе хранения в БД.

Important

При использовании типов данных следует учесть следующие моменты:

  • Типы Byte и SByte не должны использоваться, потому что в PostgreSQL есть двухбайтовый аналог int2, и их использование в рамках одного пула данных приведёт к разному поведению при загрузке типов из базы в серверном коде (тип данных short или byte в зависимости от СУБД).
  • Беззнаковые типы UInt16, UInt32 и UInt64 не должны использоваться, поскольку в PostgreSQL вместо них имеются только знаковые.
  • Тип Single не должен использоваться, поскольку это число с плавающей запятой и низкой точностью, что приводит к потерям точности при операциях со значением, при этом размер поля в байтах незначительно ниже, чем Double.
  • Для хранения денежных сумм вместо Double должен использоваться тип Decimal, поскольку эти типы не имеют потерь точности при операциях. Например, тип Decimal(18,2) является достаточным для надёжного хранения любых сумм в большинстве случаев (18 знаков до запятой и 2 знака после запятой).
  • Тип данных Currency соответствует типу money в MSSQL и в PostgreSQL, причём для каждой СУБД максимальные значения и точность отличаются. Чтобы однозначно указать эти параметры, следует использовать тип Decimal.

Пример создания таблицы для хранения значений перечисления

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

Шаг 1: Создание таблицы со свойствами Используется для типа - Не указан и Тип секции - Перечисление.

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

Шаг 3: Добавление в таблицу первичного ключа (в данном примере ключевое поле – JustID).

Чтобы задать ключевое поле, в разделе Индексируемые колонки из выпадающего списка нужно выбрать требуемое поле и далее нажать на кнопку +.

Шаг 4: Сохранение созданной таблицы с помощью сочетания клавиш Ctrl+S.

Шаг 5: Заполнение значений перечисления в разделе Записи.

Чтобы добавить запись, нужно нажать на кнопку Добавить строку, заполнить пустое поле (необходимо выделить поле левой кнопкой мыши и ввести значение) и нажать Enter.

Чтобы удалить запись, нужно выделить строку (щелчком левой кнопки мыши по полю записи) и нажать Delete.

Шаг 6: Сохранение добавленных записей с помощью сочетания клавиш Ctrl+S.

Пример создания поля со ссылкой на поле другой таблицы

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

Колонка таблицы для значений, которые будут хранить такие ссылки, должна быть комплексной. После добавления комплексной колонки нужно задать её Тип - Reference (Typified).

В выпадающем списке Ссылка на таблицу можно выбрать, куда будут ссылаться поля колонки.

После внесения изменений их необходимо сохранить с помощью сочетания клавиш Ctrl+S.

Пример создания автоинкрементной колонки

Данная настройка позволяет создавать автоинкрементные колонки, значения для которых определяются СУБД автоматически. Для этого в свойствах физической колонки нужно отметить флаг Автоинкрементная колонка, задать целочисленный Not Null Тип и выбрать Начальное значение и Шаг, с которым выделяются следующие значения. Если в настройках колонки эти значения не заданы, то используются значения по умолчанию (1 для начального значения и 1 для шага). Отрицательные значения шага позволяют сделать убывающий список.

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

  • У колонки не должно быть задано значение по умолчанию.
  • Таблица не должна иметь записей в схеме данных.

Important

Для СУБД MSSQL для одной таблицы может быть создана только одна автоинкрементная колонка.

При указании настройки Автоинкрементная колонка или изменении ее настроек для созданной колонки с таблицей, в которой есть данные, следует учитывать, что поведение будет различно для разных СУБД:

  • MSSQL: все данные колонки затрутся и заполнятся новыми, в соответствии с настройками автоинкремента.
  • PostgreSQL: данные колонки сохранятся, однако взятие следующего значения будет производиться с начала (начальное значение).

Important

В случае, если данная колонка использовалась как первичный ключ или по ней настроен уникальный индекс, изменение/установка автоинкремента для колонки может привести к ошибкам при добавлении значений в данную строку.

Процедуры

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

Редактор функции

Редактор хранимых процедур имеет следующие настройки:

  • Название - название процедуры. Должно быть уникальным и совпадать с названием, указанным в запросе. При изменении названия в запросе, значение этого поля автоматически изменится.
  • Группа – нужна для удобства работы со схемой данных (процедура будет отображаться в другой группе сразу после изменения поля).
  • Описание – описание предназначения процедуры.
  • Библиотека - библиотека, в которой будет храниться данная процедура, по умолчанию - Default.
  • Выполнять до модификации таблиц - по умолчанию запросы на создание процедур выполняются после импорта таблиц, если нужно выполнить запрос для конкретной процедуры до импорта таблиц, необходимо установить данный флаг.
  • Порядок выполнения - число, которое является сквозным для процедур, функций и миграций. Если для прочих объектов установлен порядок 0, то создание процедуры с порядком -1 будет выполняться перед ними, но после импорта таблиц (если не установлен соответствующий флаг). Если порядок равен 1, создание процедуры произойдёт гарантированно после объектов с более низким порядком. Создание процедур с одинаковым порядком выполняется в неопределённом порядке.
  • СУБД - селектор, который определяет редактор запроса для какой СУБД отображается в данный момент.
  • Редактор запроса - позволяет описать запрос для создания процедуры на MSSQL или PostgreSQL, в зависимости от того, какая СУБД выбрана в селекторе СУБД в данный момент.

Функции

SQL-функции, которые могут быть заданы в схеме для последующего использования в решении.

Редактор функции

Функции так же, как и хранимые процедуры, имеют абсолютно аналогичные настройки в схеме.

  • Название - название функции. Должно быть уникальным и совпадать с названием, указанным в запросе. При изменении названия в запросе, значение этого поля автоматически изменится.
  • Группа – нужна для удобства работы со схемой данных (функция будет отображаться в другой группе сразу после изменения поля).
  • Описание – описание предназначения функции.
  • Библиотека - библиотека, в которой будет храниться данная функция, по умолчанию - Default.
  • Выполнять до модификации таблиц - по умолчанию запросы на создание функций выполняются после импорта таблиц, если нужно выполнить запрос для конкретной функции до импорта таблиц, необходимо установить данный флаг.
  • Порядок выполнения - число, которое является сквозным для процедур, функций и миграций. Если для прочих объектов установлен порядок 0, то функция с порядком -1 будет выполняться перед ними, но после импорта таблиц (если не установлен соответствующий флаг). Если порядок равен 1, создание функции произойдёт гарантированно после объектов с более низким порядком. Создание функций с одинаковым порядком выполняется в неопределённом порядке.
  • СУБД - селектор, который определяет редактор запроса для какой СУБД отображается в данный момент.
  • Редактор запроса - позволяет описать запрос для создания функции на MSSQL или Postgres, в зависимости от того, какая СУБД выбрана в селекторе СУБД в данный момент.

Миграции

Миграции это SQL-скрипты, которые выполняются при импорте схемы один раз, а также повторно при каждом импорте, при котором SQL-текст миграции как-либо менялся.

Редактор миграции

Миграции имеют схожие настройки с процедурами, но с некоторыми отличиями:

  • Название – название миграции. Никак не фигурирует в теле запроса, в отличие от процедур и функций.
  • Группа – группа нужна для удобства работы со схемой данных (миграция будет отображаться в другой группе сразу после изменения поля).
  • Описание – описание предназначения миграции.
  • Библиотека – библиотека, в которой будет храниться данная миграция, по умолчанию - Default.
  • Выполнять без транзакции – по умолчанию выполнение SQL миграции происходит внутри транзакции. Для создания типов и прочих изменений, связанных с изменением структуры данных в БД, транзакцию необходимо выключить этим флагом.
  • Выполнять до модификации таблиц – по умолчанию миграции выполняются после импорта таблиц, если нужно выполнить миграцию до импорта таблиц, необходимо установить данный флаг.
  • Порядок выполнения – число, которое является сквозным для процедур, функций и миграций. Если для прочих объектов установлен порядок 0, то миграция с порядком -1 будет выполняться перед ними, но после импорта таблиц (если не установлен соответствующий флаг). Если установить порядок 1, то выполнение миграции произойдёт гарантированно после объектов с более низким порядком. Если оставить порядок 0, то миграция будет выполняться после импорта процедур и функций с порядком 0. Миграции с одинаковым порядком выполняются в неопределённом порядке.
  • СУБД – селектор, который определяет редактор запроса для какой СУБД отображается в данный момент.
  • Редактор запроса – позволяет описать запрос миграции на MSSQL или PostgreSQL, в зависимости от того, какая СУБД выбрана в селекторе СУБД в данный момент.

Создание библиотек

Библиотеки могут использоваться для разработки изолированных решений и далее подключаться к основной схеме данных.

Important

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

Библиотека хранится отдельно от основной схемы и описывает:

  • Новые таблицы (с колонками, ключами, индексами и записями)
  • Новые колонки в таблицах основной схемы
  • Новые индексы в таблицах основной схемы
  • Новые ограничения (constraints) в таблицах основной схемы
  • Новые предопределенные строки в таблицах-перечислениях основной схемы
  • Новые миграции
  • Новые функции
  • Новые процедуры

Создать новую библиотеку можно с помощью контекстного меню узла Библиотеки.

Для новой библиотеки указывается уникальное название и, при необходимости, описание.

После создания библиотеки объекты схемы можно перенести в неё: таблицы, колонки, записи, функции и т.д.:

После внесения изменений схему данных необходимо сохранить.

Tip

Все объекты, добавляемые и изменяемые в библиотеке, сохраняются в папку с именем, соответствующим имени библиотеки. Это позволяет изолированно обновлять или переносить библиотеку между разными версиями платформы и проектными решениями.

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

Back to top