Отношения многие-ко-многим
Надстройка 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.