13 | Документация

Хранение вложений в базе данных

Для хранения вложений в базе данных создаются отдельные таблицы для каждого класса объектов, к которым требуется прикреплять вложения.
Имя таблицы вложений по умолчанию: <mytable>__ATTACH.
Таблицу можно создать средствами QGIS (в Менеджере БД ).
Структура таблицы (имена и типы полей) следующая, см. Рисунок 216 .
Рисунок 216 - Структура таблицы для хранения вложений в базе данных
Скрипт создания таблицы в PostgreSQL:
CREATE TABLE <my_schema>."<my_table>__ATTACH"
(
"ATTACHMENTID" serial,
"REL_OBJECTID" integer NOT NULL,
"CONTENT_TYPE" character varying(255) NOT NULL,
"ATT_NAME" character varying(255) NOT NULL,
"DATA_SIZE" integer NOT NULL,
"DATA" bytea,
CONSTRAINT <my_schema>."<my_table>__ATTACH" PRIMARY KEY ("ATTACHMENTID")
)
TABLESPACE pg_default;
ALTER TABLE <my_schema>."<my_table>__ATTACH"
OWNER to postgres;
Обратите внимание, что поддерживаются также и таблицы вложений, связанные с родительской таблицей (классом объектов) по полю GlobalID. В таком случае в родительской таблице должно быть добавлено поле uuid или GlobalID (без учета регистра) типа GUID, а в таблице вложений вместо REL_OBJECTID должно быть создано поле REL_GLOBALID (важно: в имени поля все буквы должны быть заглавные).
В таком случае скрипт создания таблицы вложений в PostgreSQL будет таким:
CREATE TABLE <my_schema>."<my_table>__ATTACH"
(
"ATTACHMENTID" serial,
"REL_GLOBALID" guid NOT NULL,
"CONTENT_TYPE" character varying(255) NOT NULL,
"ATT_NAME" character varying(255) NOT NULL,
"DATA_SIZE" integer NOT NULL,
"DATA" bytea,
CONSTRAINT <my_schema>."<my_table>__ATTACH" PRIMARY KEY ("ATTACHMENTID")
)
TABLESPACE pg_default;
ALTER TABLE <my_schema>."<my_table>__ATTACH"
OWNER to postgres;
Если таблица вложений создана с именем, отличным от имени по умолчанию, добавьте в картографический проект и родительский слой, и такую таблицу вложений. Задайте слою на основе таблицы вложений алиас по шаблону: <алиас_родительского_слоя>__ATTACH . В таком случае при публикации картографического сервиса на ГИС‑сервере таблица вложений будет ассоциирована с родительским слоем, как таблица вложений по умолчанию. При этом неважно, как организовано хранение вложений: в базе данных или на диске.