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

Структура таблицы

Редактирование структуры таблицы доступно через её контекстное меню в режимах отображения «Таблица» или «Двойной вид».

После нажатия на кнопку открывается окно «Редактирование структуры», в котором отображается совокупность параметров слоя в списковом или табличном представлениях.

При нажатии на значок параметры будут представлены в списковом виде с отображением наименования колонок (в случае его отсутствия указывается код колонки) и их типа данных.

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

Примечание: Колонке слоя соответствует столбец таблицы в базе данных (СУБД PostgreSQL).

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

При нажатии на кнопку в окне «Редактирование структуры» открывается окно «Создание колонки», в котором отображаются параметры, указываемые при добавлении новой колонки.

Примечание: При отсутствии параметра «Название» колонка будет отображаться с параметром «Код».

Изменение колонки

При нажатии на кнопку в контекстном меню колонки в окне «Редактирование структуры» или двойным нажатием по названию колонки открывается окно «Редактирование колонки».

Содержание окна «Редактирование колонки» для изменения свойств аналогично окну «Создание колонки».

Примечание: При изменении типа колонки возможна потеря данных, если типы являются неприводимыми (например, дата и файл).

В случае редактирования типа данных колонки становится доступным чекбокс «Очистить значения колонки», отметка которого удалит старые данные, хранящиеся в столбце.


Типы колонок

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

  • Текст – текст заданной длины;
  • Целое число – целочисленное значение (integer);
  • Дробное число – дробное значение (double_precision);
  • Геометрия – геометрия объекта;
  • Логический – логическое значение true/false (да/нет);
  • Дата/время – дата и время (без часового пояса);
  • JSON – хранение данных типа JSON (jsonb);
  • UUID – универсальный уникальный идентификатор;
  • Заголовок – специальный тип колонки, позволяющий вкладывать в неё другие колонки и таким образом создавать древовидную структуру;
  • Файл – один или несколько файлов;
  • Любой тип PostgreSQL – любой тип PostgreSQL, обязательно требует указания типа (db_type).

Геометрия

Тип данных «Геометрия» используется для указания пространственных данных. В поле «Тип геометрии» предлагается выбор из основных типов:

  • Point - точка;
  • LineString - линия, связывающая 2 и более точки;
  • Polygon - полигон (многоугольник);
  • MultiPoint - набор точек;
  • MultiLineString - набор линий;
  • MultiPolygon - набор полигонов.

В поле «Идентификатор SRS» указывается тип проекции, в которой представлены пространственные данные. При вводе значения появляется список подходящих проекций.

Параметр «Индекс» задается для колонок, которые должны определять геометрию объекта для отображения на карте.

Если для нескольких геометрических колонок одновременно включен чекбокс «Индекс», то в качестве колонки для отображения геометрии на карте будет использована колонка типа «Геометрия» с кодом geom, даже если она не является индексируемой. Если такое поле отсутствует в структуре таблицы, в таком случае колонка, ответственная за отображение объектов на карте, назначена не будет.

Параметр «Возможность значения NULL» описан ниже.

UUID

UUID записывается в виде последовательности шестнадцатеричных цифр в нижнем регистре, разделённых знаками минуса на несколько групп, в таком порядке: группа из 8 цифр, затем три группы из 4 цифр, и в конце группа из 12 цифр. Итоговый идентификатор содержит 32 цифры и занимает 128 бит. Пример UUID в этом стандартном виде:

UUID: a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11
Примечание: Также принимаются альтернативные варианты: цифры в верхнем регистре, стандартная запись, заключённая в фигурные скобки, запись без минусов или с минусами, разделяющими любые группы из четырёх цифр. Отображается всегда в стандартном виде с минусами.

Любой тип PostgreSQL

Любой тип PostgreSQL, обязательно требует указания типа (db_type) в поле «Физический тип». Типы данных в PostgreSQL описаны в официальной документации к СУБД.

Примечание: При отсутствии значения в поле «Физический тип» колонке присваивается тип данных «Текст».

Примечание: Ниже описываются основные поля, заполняемые при создании (изменении) колонки.

Формат значений

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

Примечание: Форматирование данных меняет только их отображение, при этом оставляя сами хранимые в БД значения неизменными.

Установить и изменить форматирование данных можно для уже существующих и только создаваемых колонок таблиц. Для этого следует в поле «Формат» указать SQL-выражение, параметры которого настроят необходимое отображение объектов.

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

В таблице ниже представлены примеры возможных настроек формата выводимых значений различных типов.

Тип данных Выражение Описание
Число trunc($col) Отбрасывает дробную часть без округления
round($col) Отбрасывает дробную часть с округлением
round($col::numeric, N) Округляет дробную часть до N знаков после запятой
to_char($col, '999 999 999 999') Добавляет пробелы триадам целых чисел
to_char($col, '999 999 999D999') Добавляет пробелы триадам чисел с явным указанием дробной части
Примечание: Если при задании формата числа указать меньше цифр, чем значащих цифр в самом числе, то в результате будет выводиться строка из # согласно указанному формату.
concat($col, ' ₽') Добавляет к числу указание на единицу измерения (валюта / единица площади / и т.д.)
concat(round(($col *100)::numeric, 2), '%') Выводит дробное число как процент
Текст lower($col) Выводит весь текст строчными буквами
upper($col) Выводит весь текст заглавными буквами
initcap($col) Выводит каждое слово с заглавной буквы
upper(substring($col from 1 for 1)) || lower(substring($col from 2)) Выводит только первое слово с заглавной буквы
concat('Город: ', $col) Добавляет указание на населённый пункт (город)
Дата to_char($col AT TIME ZONE 'UTC+3', 'DD/MM/YYYY') Выводит дату в формате ДД/ММ/ГГГГ с учетом указанного часового пояса
Логический cast($col as int) Выводит значение цифрой (0 — Нет, 1 — Да)
cast($col as bool)::text Выводит значение как true / false
Примечание: Запись вида $col указывает на использование текущей колонки таблицы, допустима также запись самого кода колонки. При обращении к другим колонкам следует указывать их код.

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

CASE WHEN <условие> THEN <результат> [WHEN ...] [ELSE <результат>] END

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

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

Пример выражения форматирования для отображения текстовых значений согласно указанному коду:

(SELECT <column_value> FROM <map>.<table> WHERE <table>.<code> = $col LIMIT 1)
В данном случае шаблонные коды имеют следущие обозначения:

  • <column_value> — код колонки-справочника, хранящей значения для отображения;
  • <map> — код карты, в которой расположена таблица с колонкой-справочником;
  • <table> — код таблицы, содержащей колонку-справочник;
  • <code> — код колонки из таблицы со справочником, со значениями которой будет определяться соответствие указанных в форматируемой колонке данных;
  • $col — значение текущей колонки, для которой выполняется форматирование, допустимо прямое указание ее кода;
  • LIMIT 1 — служебное выражение, обеспечивающее единственное совпадение значений.

При отсутствии найденного совпадения в таблице объектов будет отображаться заданное в колонке значение.

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

Значение по умолчанию

Позволяет указать значение по умолчанию для колонки. Для ввода доступны значения, которые соответствуют выбранному типу данных, или SQL-выражение, результат которого сформирует соответствующее значение. Также это поле обязательно к заполнению при отсутствии «галочки» в параметре «Возможность значения NULL», если в таблице уже существуют некоторые записи.

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

Справочники

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

Настройка справочников допустима для всех колонок, кроме типов «Геометрия», «JSON», «Заголовок» и «Файл».

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

  • Карта, в которой располагается таблица, содержащая колонку-справочник. В списке представлены только карты текущего проекта;
  • Таблица с колонкой-справочником;
  • Ключ – колонка, которая будет использована в качестве справочника;
  • Значение – опциональная колонка, значения которой будут отображаться при сопоставлении с колонкой-ключом;
  • Ограничение внешнего ключа – чекбокс, гарантирующий соблюдение ограничений внешнего ключа.

Отметка в чек-боксе Ограничение внешнего ключа накладывает следующие ограничения:

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

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

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

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

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

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

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

При задании выражения форматирования для колонки со справочником разрашается использование следующих специальных значений:

  • $col — используется для обозначения непосредственно значения, хранящегося в текущей колонке;
  • <код_колонки> — определяет значение колонки с указанным кодом в этой же таблице;
  • $ref — используется для обращения к значению справочника, полученного по ключу, либо к самому ключу при отсутствии указания на значение.

Также допустимо использование справочников с несколькими вариантами значений. Для этого необходимо после настройки справочника активировать для колонки параметр «Массив значений».

Примечание: При настройке множественного справочника разрешается только нестрогое указание справочника, без ограничений для внешнего ключа, поскольку в данном случае не гарантируется полное соблюдение типов ключа справочника и самой колонки с учетом параметра «Массив значений».

Если при настройке множественного справочника указывается колонка со значениями для отображения, полученными по ключу, дополнительно в свойствах настраиваемой колонки требуется указать следующее выражение в поле «Формат»:

(SELECT table.column_value FROM map.table WHERE table.column_key = $col LIMIT 1)
Используемые в примере коды имеют следущие обозначения:

  • <table> — код таблицы-справочника;
  • <column_value> — код колонки со значением для отображения;
  • <map> — код карты, в которой расположена таблица-справочник;
  • <column_key> — код колонки из таблицы-справочника, определяемой как ключ;
  • $col — значение текущей колонки, для которой выполняется указание множественного справочника, допустимо прямое указание ее кода;
  • LIMIT 1 — служебное выражение, обеспечивающее корректную работу справочника.

Возможность значения NULL

Отсутствие отметки в чекбоксе этого параметра означает, что колонка должна всегда иметь некоторое значение.

В этом случае в окнах «Редактирование структуры», «Изменить объект» данная колонка будет отмечена звездочкой (*), что означает обязательность ее заполнения.

Примечание: Пустым значением считаются null и пустая строка. Колонки типов «Геометрия», «Заголовок» не могут быть обязательными к заполнению.
Примечание: Если в таблице уже имеются некоторые объекты, то при создании новой обязательной к заполнению колонки необходимо указать «Значение по умолчанию».

Колонки с уникальными значениями

При установлении отметки в соответствующем чекбоксе в создаваемой колонке будут содержаться только уникальные значения. При попытке ввода ранее использованного значения в колонку с параметром «Уникальные значения», будет отображено сообщение об ошибке.

Примечание: Параметр недоступен для колонок типа «Заголовок», «Геометрия» и «Файл».

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

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

Примечание: Первичный ключ уникально идентифицирует строку в режиме отображения «Таблица». Для этого требуется, чтобы значения были одновременно уникальными и отличными от null.

При отсутствии в таблице первичного ключа допустимо создание новых объектов, но запрещено изменение и удаление элементов.

Примечание: В случае, если в выбранном слое отсутствует идентифицирующая колонка, то в режиме отображения «Таблица» в правом нижнем углу появится соответствующая заметка.
Примечание: Параметр недоступен для колонок типа «Заголовок», «Геометрия» и «Файл».

Массив значений

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

Чтобы внести элемент массива в соответствующую колонку необходимо в окне создания или редактирования объекта нажать на иконку и далее нажать на кнопку . Каждый элемент указывается в своем отдельном поле, для добавления следующего значения требуется снова нажать на соответствующую кнопку. Для удаления ненужного элемента следует нажать на значок . По завершении ввода значений необходимо либо применить текущие действия, либо отменить, нажав на соответствующие кнопки или .

После внесения нескольких элементов в режимах отображения данных «Таблица» и «Двойной вид» значения колонки-массива будут отображаться через специальный разделитель |.

Примечание: Параметр массива значений недоступен для колонок типа «Геометрия» и «Заголовок».

Генерируемая колонка

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


Автоинкремент

Установление данного параметра создает числовую последовательность, которая будет автоматически и последовательно увеличиваться при создании нового объекта.

Примечание: Автоинкремент доступен только для типа данных «Целое число».

Метаданные

Метаданные — дополнительные необязательные параметры колонки в формате JSON. Задаются для разработчиков.

Примечание: Работа с данным параметром осуществляется опытным пользователем или программистом.

Изменение порядка и вложенности

Для изменения порядка колонок в окне «Редактирование структуры», необходимо нажать по названию колонки и перетащить элемент на нужное место в структуре.

Для изменения вложенности колонок и создания древовидной структуры с колонкой типа «Заголовок» также необходимо нажать левой кнопкой мыши по названию нужного элемента и перетащить его под колонку-заголовок.

Примечание: Изменение вложенности доступно только при работе с колонками типа «Заголовок».

Удаление колонки

Для удаления колонки требуется навести указатель мыши на название колонки в окне «Редактирование структуры» и при нажатии правой кнопкой мыши выбрать пункт .