Организовать связь таблицы на саму себя в рамках Creatio

Добрый день!

 

Есть необходимость в создании объекта в системе, который исходя из структурных особенностей, должен ссылаться сам на себя

Условно таблица TempTable
Имеет два поля

Id и ParentId

Необходимо, что Id был PK, а ParentId таблицы TempTable являлся FK на поле Id таблицы TempTable

Возможно ли такое организовать в рамках системы Creatio?

Нравится

5 комментариев
Лучший ответ

Ирина Кузина пишет:
Мне необходимо создать объект в Creatio - адресообразующую таблицу ФИАС, которая не имеет нормализованной структуры. В данной таблице хранятся регионы/районы/города/населённые пункты/улицы - очевидно, что данная таблица должна ссылаться на саму себя.

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

 

Ирина Кузина пишет:
При создании объекта в Creatio 7.18 на уровне БД в таблице все поля имеют constraint NOT NULL - как создавать поля, которые могут быть NULL? Поскольку при создании объекта в Creatio на поле есть Основной параметр - Обязательное (Нет или На уровне приложения). При выборе обязательности на уровне приложения - внутри самой платформы производится валидация поля, но если указать обязательность Нет, то всё равно на уровне БД NOT NULL. Зависит ли это как-то от типов полей, которые выбираются?

Да, зависит от типа данных. Например, для поля справочного типа (с типом уникальный идентификатор), возможно хранение значения NULL. Для строковых будет пустая строка (даже пустых), для целочисленных и дробных 0. А обязательность для строковых и цифровых значений означает, что пользователь должен ввести значение отличное от пустой строки или 0.

 

Ирина Кузина пишет:
тут подскажите, пожалуйста, стоит ли новый пост завести (или может багу/доработку) или в рамках данного вопроса сойдёт?

Это скорее особенность этой срм, а не ошибка. Вы можете написать в службу поддержки (support@terrasoft.ru), они зафиксируют Ваше пожелание. 

Добрый день.

 

Да, такое можно реализовать в Creatio.

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

Алла Савельева,

Алла, огромное спасибо за ответ!
Но возник новый вопрос, при создании такой связи поле по дефолту ссылается на PK таблицы, но если нужное родительское поле НЕ является PK, то как можно организовать такую связь?

Ирина Кузина пишет:
Но возник новый вопрос, при создании такой связи поле по дефолту ссылается на PK таблицы, но если нужное родительское поле НЕ является PK, то как можно организовать такую связь?

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

Мне необходимо создать объект в Creatio - адресообразующую таблицу ФИАС, которая не имеет нормализованной структуры. В данной таблице хранятся регионы/районы/города/населённые пункты/улицы - очевидно, что данная таблица должна ссылаться на саму себя.

В данной таблице есть поле AOID - является первичным ключом и содержит всегда уникальное значение. Также есть поля AOGUID и ParentGUID
AOGUID - может иметь повторяющиеся значения. ParentGUID на записи должен ссылаться именно на AOGUID, поскольку AOID является идентификатор именно записи в таблице, а AOGUID - глобальный уникальный идентификатор адресного объекта (хоть здесь и указано, что уникальный, но в ФИАС есть повторяющиеся записи адресного объекта, но с разным статусом актуальности). 

И доп. вопрос - тут подскажите, пожалуйста, стоит ли новый пост завести (или может багу/доработку) или в рамках данного вопроса сойдёт?
При создании объекта в Creatio 7.18 на уровне БД в таблице все поля имеют constraint NOT NULL - как создавать поля, которые могут быть NULL? Поскольку при создании объекта в Creatio на поле есть Основной параметр - Обязательное (Нет или На уровне приложения). При выборе обязательности на уровне приложения - внутри самой платформы производится валидация поля, но если указать обязательность Нет, то всё равно на уровне БД NOT NULL.
Зависит ли это как-то от типов полей, которые выбираются?

 

Ирина Кузина пишет:
Мне необходимо создать объект в Creatio - адресообразующую таблицу ФИАС, которая не имеет нормализованной структуры. В данной таблице хранятся регионы/районы/города/населённые пункты/улицы - очевидно, что данная таблица должна ссылаться на саму себя.

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

 

Ирина Кузина пишет:
При создании объекта в Creatio 7.18 на уровне БД в таблице все поля имеют constraint NOT NULL - как создавать поля, которые могут быть NULL? Поскольку при создании объекта в Creatio на поле есть Основной параметр - Обязательное (Нет или На уровне приложения). При выборе обязательности на уровне приложения - внутри самой платформы производится валидация поля, но если указать обязательность Нет, то всё равно на уровне БД NOT NULL. Зависит ли это как-то от типов полей, которые выбираются?

Да, зависит от типа данных. Например, для поля справочного типа (с типом уникальный идентификатор), возможно хранение значения NULL. Для строковых будет пустая строка (даже пустых), для целочисленных и дробных 0. А обязательность для строковых и цифровых значений означает, что пользователь должен ввести значение отличное от пустой строки или 0.

 

Ирина Кузина пишет:
тут подскажите, пожалуйста, стоит ли новый пост завести (или может багу/доработку) или в рамках данного вопроса сойдёт?

Это скорее особенность этой срм, а не ошибка. Вы можете написать в службу поддержки (support@terrasoft.ru), они зафиксируют Ваше пожелание. 

Показать все комментарии