Зв’язки таблиць
Зв'язки таблиць визначають, як рядки можуть бути пов'язані один із одним в базі даних. На найпростішому рівні додавання стовпця підстановки до будь-якої таблиці створює новий зв'язок 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, де один із каскадних параметрів у стовпці Батьківський у таблиці нижче є дійсним.
Дія | Батьківський | Не первинний |
---|---|---|
Призначити | Каскад для всіх Каскад для відповідальних Каскад для активних |
Без каскадних |
Видалити | Каскад для всіх | Видалити зв’язок Обмежити |
Перепідпорядкування | Каскад для всіх Каскад для відповідальних Каскад для активних |
Без каскадних |
Спільний доступ | Каскад для всіх Каскад для відповідальних Каскад для активних |
Без каскадних |
Скасувати спільний доступ | Каскад для всіх Каскад для відповідальних Каскад для активних |
Без каскадних |
Наприклад, у разі створення нової настроюваної таблиці і додавання зв’язку таблиць 1:N із таблицею бізнес-партнера, де ваша настроювана таблиця є пов’язаною, можна настроїти дії для цього зв’язку таблиць так, щоб використовувалися параметри у стовпці Батьківський. Якщо пізніше додати інший зв’язок таблиць 1:N до настроюваної таблиці як до таблиці посилання, можна лише настроїти дії для використання параметрів у стовпці Не батьківський.
Зазвичай це означає, що для кожної пари столів існує тільки один батьківський зв’язок. Існують випадки, де підстановки пов’язаної таблиці можуть дозволяти зв'язок з кількома типами таблиць.
Наприклад, якщо таблиця має підстановку Клієнт, яка може посилатися на таблицю контактних осіб або таблицю бізнес-партнерів. Існує два окремі батьківські зв’язки таблиць 1:N.
Будь-яка таблиця справ має однаковий набір батьківських зв'язків таблиць для таблиць, які можуть бути зв'язані за допомогою стовпця підстановки «стосовно».
Обмеження на поведінку, які можна встановити
Через батьківські зв'язки існують деякі обмеження, які ви повинні мати на увазі, визначаючи зв’язки таблиць.
- Настроювана таблиця не може бути основною таблицею у зв’язку із пов’язаною каскадною системною таблицею. Це означає, що не можна встановити зв’язок із будь-якою дією, встановленою на Каскад для всіх, Каскад для активних або Каскад для відповідальних, між основною настроюваною таблицею й пов'язаною системною таблицею.
- В жодному новому зв’язку не можна встановити жодну дію на Каскад для всіх, Каскад для активних або Каскад для відповідальних, якщо пов’язана таблиця у цьому зв’язку вже є пов’язаною таблицею в іншому зв’язку, в якому для будь-якої дії задано значення Каскад для всіх, Каскад для активних або Каскад для відповідальних. Це дозволяє уникнути зв’язків, які створюють зв’язки з кількома батьківськими об’єктами.
Очищення успадкованих прав доступу
Використання каскадної поведінки «Шаблон» і «Спільний доступ » корисне, коли потрібно надати доступ до рядків у пов’язаних таблицях. Але в процесі або дизайні можуть існувати зміни, для яких потрібно змінити параметри каскадної поведінки.
Якщо зв’язок між таблицями використовує «Батьківський елемент » або «Спільний доступ», а каскадна поведінка змінюється на «Каскадно немає», зв’язок між таблицями запобігає каскадуванню будь-яких нових змін дозволів у пов’язаних дочірніх таблицях. Крім того, успадковані дозволи, які були надані в той час, коли каскадна поведінка була активною, має бути скасовано.
Очищення успадкованих прав доступу — це системне завдання, яке очищає застарілі успадковані права доступу, які залишаються після зміни каскадної поведінки на «Каскадно немає». Це очищення не вплине на користувача, якому безпосередньо надано доступ до таблиці, але скасує доступ лише для всіх, хто отримав доступ через успадкування.
Очищення успадкованих прав доступу працює таким чином:
- Визначає та збирає таблиці, які були у каскадному зв'язку із оновленим батьківським елементом.
- Визначає та збирає користувачів, яким було надано доступ до пов'язаних таблиць через успадкування доступу.
- Шукає користувачів, яким було надано прямий доступ до пов'язаної таблиці, і видаляє їх з колекції.
- Скасовує успадкований доступ зібраних користувачів до зібраних таблиць.
Після запуску очищення користувачі, які мали доступ до пов'язаних таблиць лише через функцію каскадування, більше не зможуть отримати доступ до рядків, що є більш безпечним. Бувають випадки, коли очищення може не увінчатися успіхом. Докладніше про те, як очистити успадкований доступ
Див. також
Контролювання системних завдань
Створення та редагування зв'язків 1:N (один до багатьох) або N:1 (багато до одного)
Створіть зв’язки таблиць N:N («багато-до-багатьох»)
Примітка
Розкажіть нам про свої уподобання щодо мови документації? Візьміть участь в короткому опитуванні. (зверніть увагу, що це опитування англійською мовою)
Проходження опитування займе близько семи хвилин. Персональні дані не збиратимуться (декларація про конфіденційність).
Зворотний зв’язок
https://aka.ms/ContentUserFeedback.
Очікується незабаром: протягом 2024 року ми будемо припиняти використання механізму реєстрації проблем у GitHub для зворотного зв’язку щодо вмісту й замінювати його новою системою зворотного зв’язку. Докладніше:Надіслати й переглянути відгук про