Отношения многие-ко-многим
Надстройка SaveToDB реализует специальный режим для редактирования отношений многие-ко-многим.
Предположим, в базе данных есть три таблицы: employees
, territories
и employee_territories
.
Таблица employee_territories
содержит две колонки внешних ключей: employee_id
и territory_id
.
Если загрузить данные из таблицы employee_territories
без фильтрации, отобразятся только актуальные записи, например:
employee_id | territory_id | _State_ |
---|---|---|
Employee 1 | Territory 1 | ✓ |
Employee 1 | Territory 2 | ✓ |
Employee 2 | Territory 3 | ✓ |
Надстройка добавляет колонку _State_ типа чек-бокс, чтобы удобно добавлять или удалять отношения по двойному клику.
Вы можете создать сводную таблицу, используя таблицу данных Excel в качестве источника. Разместите поля внешних ключей по осям, а сумму колонки _State_ в ячейках.
Таблица будет выглядеть примерно так:
Territory 1 | Territory 2 | Territory 3 | |
---|---|---|---|
Employee 1 | ✓ | ✓ | |
Employee 2 | ✓ | ||
Employee 3 |
Надстройка добавляет списки значений колонок внешнего ключа в качестве элементов сводной таблицы. Более того, вы можете кликать по значениям в сводной таблице, чтобы изменять данные в исходной таблице и сохранять изменения.
Возвращаясь к таблице, вы можете выбрать значение на ленте. Например, если выбрать Territory 1
, таблица будет выглядеть так:
employee_id | territory_id | _State_ |
---|---|---|
Employee 1 | Territory 1 | ✓ |
Employee 2 | Territory 1 | x |
Employee 3 | Territory 1 | x |
В колонке _State_ можно кликать, чтобы добавлять или удалять отношения.
Если выбрать Employee 1
, таблица будет выглядеть примерно так:
employee_id | territory_id | _State_ |
---|---|---|
Employee 1 | Territory 1 | ✓ |
Employee 1 | Territory 2 | ✓ |
Employee 1 | Territory 3 | x |
Для реализации этих возможностей надстройка автоматически создает следующую конфигурацию, читая метаданные базы данных:
ID | TABLE_SCHEMA | TABLE_NAME | COLUMN_NAME | EVENT_NAME | HANDLER_SCHEMA | HANDLER_NAME | HANDLER_TYPE | HANDLER_CODE |
---|---|---|---|---|---|---|---|---|
s07 | employee_territories | employee_id | ValidationList | s07 | employees | TABLE | [employee_id],[last_name] | |
s07 | employee_territories | territory_id | ValidationList | s07 | territories | TABLE | [territory_id],[territory_description] | |
s07 | employee_territories | employee_id | ManyToMany | ATTRIBUTE | ||||
s07 | employee_territories | territory_id | ManyToMany | ATTRIBUTE | ||||
s07 | employee_territories | AddStateColumn | ATTRIBUTE |
В таблице используется тип ManyToMany для колонок внешнего ключа. Также применяется тип AddStateColumn для добавления колонки _State_. Списки значений создаются из таблиц первичных ключей.
Вы можете создавать такие настройки для любых других объектов, например, для представлений и хранимых процедур. Если нужно отключить автоматическое создание конфигураций, используйте тип DoNotAddManyToMany в таблице xls.handlers.