Отношения между таблицами

Отношения таблиц определяют, как строки можно связывать друг с другом в базе данных. На самом простом уровне добавление столбца поиска в таблицу создает новое отношение 1:N (один ко многим) между двумя таблицами, а также позволяет поместить этот столбец поиска в форму. При наличии столбца поиска пользователи могут связать несколько дочерних строк данной таблицы с одной родительской строкой таблицы.

Отношения таблиц 1: N не только определяют, как стоки можно связывать с другими строками, но также предоставляет данные для решения следующих вопросов:

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

Таблицы также могут участвовать в отношении N:N (многие ко многим), в котором любое число строк для двух таблиц можно связать друг с другом.

Что использовать: отношения или соединения таблиц

Отношения таблиц — это метаданные, которые вносят изменения в базу данных. Эти отношения позволяют запросам эффективно извлекать связанные данные. С помощью отношений таблиц можно определить формальные отношения, определяющие таблицу или то, что может использовать большинство строк. Например, возможная сделка без потенциального клиента не будет полезна. Таблица "Возможная сделка" также имеет отношение N:N с таблицей "Конкурент". Это позволяет добавить несколько конкурентов в возможную сделку. Может потребоваться собрать эти данные и создать отчет по конкурентам.

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

Типы отношений таблиц

Если посмотреть на обозреватель решений, можно подумать, что существует три типа отношений таблиц. На самом деле существует только два типа, как показано в следующей таблице.

Тип отношений Описание:
1:N (один-ко-многим) Отношение между таблицами, в которой одна строка таблицы для Основной таблицы может быть связана со многими другими строками Связанной таблицы из-за столбца подстановки в связанной таблице.

При просмотре строки основной таблицы можно просмотреть список связанных с ней строк связанных таблиц.

В портале Power Apps, Текущая таблица представляет основную таблицу.
N:N (многие-ко-многим) Отношение таблиц, зависящее от специальной таблицы Таблица отношения, которая иногда называется пересекающейся таблицей, при котором множество строк одной таблицы может быть связано со множеством строк другой таблицы.

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

Тип отношения N:1 (многие-к-одному) существует в пользовательском интерфейсе, поскольку в конструкторе отображается представление, сгруппированное по таблицам. Отношения 1:N фактически существуют между таблицами, и каждая таблица в них называется либо Основная/текущая таблица, либо Связанная таблица. Связанная таблица, иногда называемая дочерней таблицей, имеет столбец подстановки, который позволяет хранить ссылку на строку из основной таблицы, иногда называемой родительской таблицей. Отношение N:1 — это просто отношение 1:N с точки зрения связанной таблицы.

Поведение отношений таблиц

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

Сохранение целостности данных

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

Для определения того, что произойдет со связанными строками, можно использовать поведение отношения согласно правилам вашего предприятия. Больше информации: Добавление расширенного поведения отношения

Автоматизация бизнес-процессов

Допустим, у вас новый продавец и требуется назначить ему несколько существующих организаций, в данное время назначенных другому продавцу. Каждая строка организации может иметь несколько действий задач, связанных с ней. Можно легко найти активные организации, которые требуется переназначить, и назначить их новому продавцу. Но что произойдет с действиями задач, связанными с организациями? Хотелось бы вам открывать каждую задачу и указывать, должна ли она также быть назначена новому продавцу? Скорее всего, нет. Вместо этого можно разрешить отношению применить некоторые стандартные правила автоматически. Эти правила применяются только к строкам задач, связанным с организациями, которые вы переназначаете. Можно выполнить следующие действия:

  • Переназначить все активные задачи.
  • Переназначить все задачи.
  • Не переназначать задачи.
  • Переназначить все задачи, которые в данный момент назначены бывшему владельцу организаций.

Отношение может управлять тем, как действия, выполняемые со строкой для строки основной таблицы, распространяются на все строки связанной таблицы.

Поведения

Существует несколько видов поведения, которые можно применить при возникновении определенных действий.

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

Действия

Ниже представлены действия, которые могут вызывать определенное поведение.

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

Примечание

Действия назначения, удаления, объединения и переподчинения не будут выполняться в следующих ситуациях:

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

Примечание

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

Родительские отношения таблиц

Каждая пара таблиц, которые могут иметь отношение 1:N, может иметь несколько отношений 1:N между ними. Однако обычно только одно из этих отношений можно рассматривать как родительское отношение таблиц.

Родительское отношение таблиц — это любое отношение таблиц 1:N, где один из каскадных параметров в столбце Родительское в следующей таблице имеет значение true.

Действие Родительское Не родительское
Назначение Каскадный для всех
Каскад для ответств.
Каскадный активный
Без каскада
Удаление Каскадный для всех Удалить ссылку
Ограничить
Переподчинение Каскадный для всех
Каскад для ответств.
Каскадный активный
Без каскада
Общий доступ Каскадный для всех
Каскад для ответств.
Каскадный активный
Без каскада
Отмена общего доступа Каскадный для всех
Каскад для ответств.
Каскадный активный
Без каскада

Например, если вы создаете новую настраиваемую таблицу и добавляете отношение таблиц 1:N с таблицей учетной записи, где настраиваемая таблица является связанной таблицей, можно настроить действия для этого отношения таблиц для использования параметров в столбце Родительское. Если позже добавить еще одно отношение таблиц 1:N с настраиваемой таблицей в качестве ссылочной таблицы, можно настроить действия только для использования параметров в столбце Не родительское.

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

Например, если в таблице настроен поиск по клиенту, который может ссылаться на таблицу контакта или организации. Существует два отдельных родительских отношения таблиц 1:N.

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

Доступные ограничения поведения

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

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

Очистка унаследованных прав доступа

Использование каскадного поведения Изменение родительского объекта и Общий доступ полезно, когда вы хотите предоставить доступ к строкам в связанных таблицах. Но могут быть изменения в процессе или дизайне, которые потребуют изменения настроек каскадного поведения.

Когда связь таблиц использует Изменение родительского объекта или Общий доступ, а каскадное поведение изменяется на Без каскадных, связь таблиц предотвращает каскадное распространение любых новых изменений разрешений в связанные дочерние таблицы. Кроме того, необходимо отозвать унаследованные разрешения, которые были предоставлены при активном каскадном поведении.

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

Вот как работает очистка унаследованных прав доступа:

  1. Идентифицирует и собирает все таблицы, которые были в каскадной связи с обновленным родительским элементом.
  2. Определяет и собирает пользователей, которым был предоставлен доступ к связанным таблицам посредством унаследованного доступа.
  3. Проверяет пользователей, которым был предоставлен прямой доступ к связанной таблице, и удаляет их из коллекции.
  4. Удаляет для собранных пользователей унаследованный доступ к собранным таблицам.

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

См. также

Мониторинг системных заданий
Создание и изменение отношений 1:N (один-ко-многим) или N:1 (многие-к-одному)
Создание отношений таблиц "многие-ко-многим" (N:N)

Примечание

Каковы ваши предпочтения в отношении языка документации? Пройдите краткий опрос (обратите внимание, что этот опрос представлен на английском языке).

Опрос займет около семи минут. Личные данные не собираются (заявление о конфиденциальности).