Як встановити зв'язок одним-багатьом

Як встановити зв'язок одним-багатьом



Як встановити зв'язок одним-багатьом

Бази даних можуть містити таблиці, пов'язані між собою різними зв'язками. Зв'язок (relationship) є асоціацією між сутностями різних типів.

При виділенні зв'язку виділяють головну або батьківську таблицю (primary key table/master table) та залежну, дочірню таблицю (foreign key table/child table). Дочірня таблиця залежить від батьківської.

Для організації зв'язку застосовуються зовнішні ключі. Зовнішній ключ являє собою один або кілька стовпців з однієї таблиці, який одночасно є потенційним ключем з іншої таблиці. Зовнішній ключ необов'язково має відповідати первинному ключу головної таблиці. Хоча, як правило, зовнішній ключ із залежної таблиці вказує на первинний ключ із головної таблиці.

Зв'язки між таблицями бувають таких типів:

  • Один до одного (One to one)
  • Один до багатьох (One to many)
  • Багато хто до багатьох (Many to many)

Зв'язок один до одного

Цей тип зв'язків зустрічає не часто. І тут об'єкту однієї сутності можна зіставити лише одне об'єкт інший сутності. Наприклад, на деяких сайтах користувач може мати лише один блог. Тобто виникає відношення один користувач – один блог.

Нерідко цей тип зв'язків передбачає розбиття однієї великої таблиці кілька маленьких. Основна батьківська таблиця в цьому випадку продовжує містити дані, що часто використовуються, а дочірня залежна таблиця зазвичай зберігає дані, які використовуються рідше.

Щодо цього первинний ключ залежної таблиці в той же час є зовнішнім ключем, який посилається на первинний ключ із головної таблиці.

Наприклад, таблиця Users представляє користувачів і має такі стовпці:

І таблиця Blogs представляє блоги користувачів і має такі стовпці:

  • BlogId (ідентифікатор, первинний та зовнішній ключ)
  • Name (назва блогу)

У цьому випадку стовпець BlogId зберігатиме значення зі стовпця UserId з таблиці користувачів. Тобто стовпець BlogId виступатиме одночасно первинним та зовнішнім ключем.

Зв'язок один до багатьох

Це найпоширеніший тип зв'язків. У цьому типі зв'язків кілька рядків із дочірньої таблиці залежать від одного рядка батьківської таблиці. Наприклад, в одному блозі може бути кілька статей. У цьому випадку таблиця блогів є батьківською, а таблиця статей – дочірньою. Тобто один блог – багато статей. Або інший приклад, у футбольній команді може грати кілька футболістів. І водночас один футболіст одночасно може грати лише в одній команді. Тобто одна команда – багато футболістів.

Наприклад, нехай буде таблиця Articles, яка представляє статті блогу і яка має такі стовпці:

  • ArticleId (ідентифікатор, первинний ключ)
  • BlogId (зовнішній ключ)
  • Title (назва статті)
  • Text (текст статті)

У цьому випадку стовпець BlogId з таблиці статей зберігатиме значення зі стовпця BlogId з таблиці блогів.

Зв'язок багато хто до багатьох

При цьому типі зв'язків один рядок з таблиці А може бути пов'язаний з безліччю рядків з таблиці В. У свою чергу один рядок з таблиці А може бути пов'язаний з безліччю рядків з таблиці А. Типовий приклад - студенти та курси: один студент може відвідувати кілька курсів і відповідно на один курс можуть записатися кілька студентів.

Інший приклад - статті та теги: для однієї статті можна визначити кілька тегів, а один тег може бути визначений для кількох статей.

Але в SQL Server на рівні бази даних ми не можемо встановити прямий зв'язок до багатьох між двома таблицями. Це робиться у вигляді допоміжної проміжної таблиці. Іноді дані цієї проміжної таблиці представляють окрему сутність.

Наприклад, у випадку зі статтями та тегами нехай буде таблиця Tags, яка має два стовпці:

Також нехай буде проміжна таблиця ArticleTags з наступними полями:

  • TagId (ідентифікатор, первинний та зовнішній ключ)
  • ArticleIdId (ідентифікатор, первинний та зовнішній ключ)

Технічно ми отримаємо два зв'язки одним-багатьом. Стовпець TagId із таблиці ArticleTags буде посилатися на стовпець TagId із таблиці Tags. А стовпець ArticleId із таблиці ArticleTags буде посилатися на стовпець ArticleId із таблиці Articles. Тобто стовпці TagId і ArticleId у таблиці ArticleTags являють собою складовий первинний ключ і одночасно є зовнішніми ключами для зв'язку з таблицями Articles і Tags.

Посилальна цілісність даних

При зміні первинних і зовнішніх ключів слід дотримуватися такого аспекту, як посилальна цілісність даних (referential integrity). Її основна ідея у тому, щоб дві таблиці у базі даних, які зберігають одні й самі дані, підтримували їх узгодженість. Цілісність даних представляє правильно збудовані відносини між таблицями з коректною установкою посилань між ними. У яких випадках цілісність даних може порушуватися:

  • Аномалія вилучення (deletion anomaly). Виникає у разі видалення рядка з головної таблиці. У цьому випадку зовнішній ключ із залежної таблиці продовжує посилатися на віддалений рядок із головної таблиці
  • Аномалія вставки (insertion anomaly). Виникає при вставці рядка у залежну таблицю.У цьому випадку зовнішній ключ із залежної таблиці не відповідає первинному ключу жодного з рядків із головної таблиці.
  • Аномалії оновлення (update anomaly). При подібній аномалії кілька рядків однієї таблиці можуть містити дані, які належать одному й тому об'єкту. При зміні даних в одному рядку вони можуть суперечити даними з іншого рядка.

Аномалія видалення

Для вирішення аномалії видалення зовнішнього ключа слід встановлювати одне з двох обмежень:

  • Якщо рядок із залежної таблиці обов'язково вимагає наявності рядка із головної таблиці, то для зовнішнього ключа встановлюється каскадне видалення. Тобто при видаленні рядка із головної таблиці відбувається видалення зв'язаного рядка (рядків) із залежної таблиці.
  • Якщо рядок із залежної таблиці допускає відсутність зв'язку з рядком із головної таблиці (тобто такий зв'язок необов'язковий), то для зовнішнього ключа при видаленні зв'язаного рядка із головної таблиці задається встановлення значення NULL. У цьому стовпець зовнішнього ключа повинен допускати значення NULL.

Аномалія вставки

Для вирішення аномалії вставки при додаванні до залежної таблиці даних стовпець, який представляє зовнішній ключ, повинен допускати значення NULL. І таким чином, якщо об'єкт, що додається, не має зв'язку з головною таблицею, то в стовпці зовнішнього ключа стоятиме значення NULL.

Аномалії оновлення

Для вирішення проблеми аномалії поновлення застосовується нормалізація, яка буде розглянута далі.

Як визначити зв'язки між таблицями у базі даних Access

Увага! Матеріал, викладений у цій статті, вимагає знання інтерфейсу користувача на комп'ютерах з одним користувачем. Ця стаття стосується лише бази даних Microsoft Access (.mdb або .accdb).

Анотація

У цій статті описано, як визначити відносини в базі даних Microsoft Access. Стаття включає такі теми:

  • Що таке зв'язок між таблицями?
  • Види зв'язків між таблицями
    • Зв'язки "один до багатьох"
    • Зв'язки "багато хто до багатьох"
    • Зв'язки "один до одного"
    • Як визначити зв'язки "один до багатьох" або "один до одного"
    • Як визначити зв'язок "багато хто до багатьох"

    Що таке зв'язок між таблицями?

    У реляційній базі даних відносини дозволяють запобігти надлишковим даним. Наприклад, при розробці бази даних, яка відстежуватиме інформацію про книги, може бути таблиця "Назви", в якій зберігається інформація про кожну книгу, наприклад назву книги, дату публікації та видавця. Існує також інформація, яку ви можете зберігати про видавця, наприклад номер телефону видавця, адресу та поштовий індекс. Якщо ви зберігаєте всю цю інформацію в таблиці "Назви", номер телефону видавця буде дублюватися для кожної назви, яку друкує видавець.

    Найкраще рішення - зберігати відомості видавця лише один раз в окремій таблиці, яка називатиметься "Видавці". Потім у таблицю "Заголовки" помістіть покажчик, який посилається на запис у таблиці "Видавці".

    Щоб переконатися, що дані залишаються синхронізованими, можна забезпечити цілісність даних між таблицями. Відносини цілісності даних допомагають переконатись, що інформація в одній таблиці відповідає інформації в іншій. Наприклад, кожна назва в таблиці "Назви" має бути пов'язана з конкретним видавцем у таблиці "Видавці". Назва не може бути додана до бази даних для видавця, якого не існує у базі даних.

    Логічні зв'язки в базі даних дозволяють ефективно запитувати дані та створювати звіти.

    Види зв'язків між таблицями

    Зв'язок працює шляхом зіставлення даних у ключових стовпцях, зазвичай стовпцях (або полях), які мають те саме ім'я в обох таблицях. У більшості випадків зв'язок з'єднує основний ключ або унікальний стовпець ідентифікатора для кожного рядка від однієї таблиці до поля в іншій таблиці. Стовпець в іншій таблиці називається "зовнішнім ключем". Наприклад, якщо ви хочете відстежувати продаж кожної книги, створіть зв'язок між основним ключовим стовпцем (назвемо його title_ID) у таблиці "Заголовки" та стовпцем у таблиці Sales з ім'ям title_ID. Стовпець title_ID у таблиці "Продажі" є зовнішнім ключем.

    Існує три види зв'язків між таблицями. Тип створюваних зв'язків залежить від цього, як визначаються пов'язані стовпці.

    Зв'язки "один до багатьох"

    Зв'язок "один до багатьох" є найпоширенішим типом зв'язку. У зв'язках рядок у таблиці А може мати багато рядків у таблиці B. Але рядок у таблиці B може мати лише один рядок у таблиці А. Наприклад, таблиці "Видавці" і "Назви" мають зв'язок "один до багатьох". Тобто кожен видавець випускає багато назв. Але кожна назва належить лише одному видавцеві.

    Зв'язок "один до багатьох" створюється, якщо тільки один із зв'язаних стовпців є основним ключем або має унікальне обмеження.

    У вікні зв'язків у Access сторона первинного ключа зв'язку "один до багатьох" позначається номером 1. Сторона зовнішнього ключа зв'язку позначається символом нескінченності.

    Зв'язки "багато хто до багатьох"

    У зв'язку "багатьом до багатьох" рядок у таблиці А може мати багато збігаються рядків у таблиці B, і навпаки. Ви створюєте такий зв'язок, визначаючи третю таблицю, яка називається проміжною таблицею.Первинний ключ проміжної таблиці складається із зовнішніх ключів як таблиці А, так і таблиці B. Наприклад, таблиця "Автори" та таблиця "Назви" мають зв'язок "багато до багатьох", яка визначається зв'язком "один до багатьох" з кожної з цих таблиць таблиці "TitleAuthors". Первинним ключем таблиці "TitleAuthors" є комбінація стовпця au_ID (первинний ключ таблиці "Authors") та стовпця title_ID (Первинний ключ таблиці "Titles").

    Зв'язки "один до одного"

    У зв'язку "один до одного" рядок в таблиці А може мати не більше одного рядка, що збігається в таблиці B, і навпаки. Зв'язок "один до одного" створюється, якщо обидва зв'язані стовпці є первинними ключами або мають унікальні обмеження.

    Цей тип відносин не розповсюджений, тому що більша частина інформації, пов'язана таким чином, буде в одній таблиці. Ви можете використовувати зв'язок один до одного, щоб зробити наступні дії:

    • Розділіть таблицю на безліч шпальт.
    • З міркувань безпеки ізолюйте частину таблиці.
    • Зберігайте дані, які недовговічні і можуть бути легко видалені під час видалення таблиці.
    • Зберігайте інформацію, яка стосується лише підмножини основної таблиці.

    У Access сторона первинного ключа зв'язку один до одного позначається символом ключа. Сторона зовнішнього ключа також символом ключа.

    Як визначити зв'язки між таблицями

    Під час створення зв'язку між таблицями пов'язані поля нічого не винні мати одні й самі імена. Однак пов'язані поля повинні мати той самий тип даних, якщо тільки поле первинного ключа не є полем AutoNumber. Ви можете зіставити поле AutoNumber з полем Number, тільки якщо властивість FieldSize обох полів збігаються.Наприклад, можна зіставити поле AutoNumber і поле Number, якщо властивість theFieldSizeproperty обох полів має значення Long Integer. Навіть якщо обидва збігаються поля є числовими полями, вони повинні мати параметр sameFieldSizeproperty.

    Як визначити зв'язки "один до багатьох" або "один до одного"

    Щоб створити зв'язок "один до багатьох" або "один до одного", виконайте наведені нижче дії.

    1. Закрийте всі таблиці. Не можна створювати або змінювати зв'язок між відкритими таблицями.
    2. У Access 2002 та Access 2003 виконайте такі дії.
      1. Натисніть F11, щоб перейти до вікна бази даних.
      2. У меню Інструменти виберіть Зв'язки.

      У Access 2007, Access 2010 або Access 2013 натисніть Зв'язки у групі Показати/Приховати на вкладці Інструменти бази даних.

      Примітка. Можна створювати зв'язки у таблицях, а й у запитах. Однак, цілісність даних зв'язування не забезпечується за допомогою запитів.

      Як визначити зв'язок "багато хто до багатьох"

      Щоб створити зв'язок "багатьом до багатьох", виконайте наведені нижче дії.

      1. Створіть дві таблиці, які матимуть зв'язок "багато до багатьох".
      2. Створіть третю таблицю. Це таблиця стику. У таблиці з'єднання додайте нові поля, які мають самі визначення, що й основні ключові поля з кожної таблиці, створеної у кроці 1. У сполучній таблиці основні ключові поля функціонують як зовнішні ключі. Ви можете додати інші поля до сполучної таблиці, так само, як і в будь-яку іншу таблицю.
      3. У сполучній таблиці встановіть первинний ключ, щоб увімкнути основні ключові поля з двох інших таблиць. Наприклад, у сполучній таблиці "TitleAuthors" первинний ключ складатиметься з полів OrderID і ProductID.

      1. Відкрийте таблицю у Конструкторі.
      2. Виберіть поле або поля, які потрібно визначити як первинний ключ. Щоб вибрати одне поле, натисніть селектор рядка для потрібного поля. Щоб вибрати кілька полів, утримуйте клавішу Ctrl і натисніть селектор рядка для кожного поля.
      3. У Access 2002 або Access 2003 натисніть на Первинний ключ на панелі інструментів. У Access 2007 натисніть на Первинний ключ у групі Інструменти на вкладці Дизайн.

      Примітка. Якщо ви хочете, щоб порядок полів у первинному ключі з кількома полями відрізнявся від порядку цих полів у таблиці, натисніть Індекси на панелі інструментів, щоб відобразити діалогове вікно Indexes, а потім знову впорядкуйте імена полів для індексу з ім'ям PrimaryKey.

      Цілісність даних

      Референтна цілісність — це система правил, яку використовує Access, щоб переконатися, що зв'язки між записами у відповідних таблицях є дійсними і що користувач не видаляє або не змінить випадково пов'язані з ними дані. Ви можете встановити цілісність даних при виконанні наступних умов:

      • Збігаючі поля з основної таблиці є первинним ключем або має унікальний індекс.
      • Пов'язані поля мають той самий тип даних. З цього правила є два винятки: Поле лічильника може бути пов'язано з полем номерищо має FieldSize значення властивості «Довге ціле», а поле лічильника, що має FieldSize значення властивості "Код реплікації", може бути пов'язане з полем номерищо має FieldSize значення властивості «Код реплікації».
      • Обидві таблиці відносяться до однієї і тієї ж бази даних Access.Якщо таблиці є пов'язаними таблицями, вони повинні бути таблицями у форматі Access, і необхідно відкрити базу даних, де вони зберігаються, щоб встановити цілісність даних. Референтна цілісність може бути застосована для пов'язаних таблиць з баз даних інших форматах.

      При використанні цілісності даних застосовуються такі правила:

      • Неможливо ввести значення у зовнішньому ключовому полі пов'язаної таблиці, яке немає у первинному ключі первинної таблиці. Проте можна ввести значення Null у зовнішньому ключі. Це вказує на те, що записи не пов'язані між собою. Наприклад, неможливо мати замовлення, яке призначається клієнту, який не існує. Тим не менш, можна мати замовлення, яке не призначається нікому, ввівши значення Null у полі CustomerID.
      • Ви не можете видалити запис із основної таблиці, якщо у відповідній таблиці існують відповідні записи. Наприклад, ви не можете видалити запис співробітника з таблиці "Співробітники", якщо у таблиці "Замовлення" є замовлення, призначені співробітнику.
      • Неможливо змінити основне ключове значення в основній таблиці, якщо запис має відповідні записи. Наприклад, ви не можете змінити ідентифікатор співробітника у таблиці "Співробітники", якщо у таблиці "Замовлення" є замовлення, призначені цьому співробітнику.

      Каскадні оновлення та видалення

      Для з'єднань, в яких застосовується цілісність даних, можна вказати, чи ви хочете, щоб Access автоматично каскадно оновлював або каскадно видаляв пов'язані з ним записи. Якщо ви встановите ці параметри, видаліть та оновіть операції, які зазвичай запобігають правилам цілісності даних.При видаленні записів або зміні основних ключових значень в основній таблиці Access вносить необхідні зміни до відповідних таблиць для збереження цілісності даних.

      Якщо встановити прапорець Каскадне оновлення пов'язаних полів При визначенні зв'язків, кожен раз при зміні первинного ключа запису в головній таблиці Microsoft Access автоматично оновлює первинний ключ до нового значення у всіх пов'язаних записах. Наприклад, при зміні ідентифікатора клієнта в таблиці «Клієнти» поле CustomerID у таблиці «Замовлення» автоматично оновлюється для кожного із замовлень цього клієнта, щоб зв'язки не були порушені. Access каскадує оновлення без відображення будь-яких повідомлень.

      Якщо первинним ключем у головній таблиці є поле лічильника, вибір Каскадне оновлення пов'язаних полів не призводить до жодного результату, оскільки неможливо змінити значення в полі лічильника.

      Якщо вибрати Каскадне видалення пов'язаних полів при визначенні зв'язків, при видаленні записів у головній таблиці Access автоматично видаляє пов'язані записи у відповідній таблиці. Наприклад, при видаленні запису клієнта з таблиці "Клієнти" всі замовлення клієнта автоматично видаляються з таблиці "Замовлення". (Це включає записи у таблиці "Деталі замовлення", які пов'язані із записами "Замовлення"). При видаленні записів з форми або таблиці після встановлення прапорця Каскадне видалення пов'язаних записів Access виводить попередження, що пов'язані записи також можна видалити. Однак при видаленні записів за допомогою запиту видалення Access автоматично видаляє записи у відповідних таблицях, не відображаючи попередження.

      Типи з'єднання

      Існує три основні типи з'єднання: Ви можете побачити їх на наступному знімку екрана:

      Варіант 1 визначає внутрішню сполуку. Внутрішнє з'єднання — це з'єднання, у якому записи з двох таблиць об'єднуються у результатах запиту лише тому випадку, якщо значення об'єднаних полях відповідають певному стану. У запиті стандартне з'єднання — це внутрішнє з'єднання, яке вибирає записи тільки в тому випадку, якщо значення в об'єднаних полях збігаються.

      Варіант 2 визначає ліве зовнішнє з'єднання. Зовнішнє ліве з'єднання — це з'єднання, в якому всі записи з лівого боку операції LEFT JOIN в оператора запиту SQL додаються до результатів запиту, навіть якщо немає відповідних значень в об'єднаному полі з таблиці на правій стороні.

      Варіант 3 визначає праве зовнішнє з'єднання. Зовнішнє праве з'єднання — це з'єднання, в якому всі записи з правого боку операції RIGHT JOIN в операторі запиту SQL додаються до результатів запиту, навіть якщо немає відповідних значень в об'єднаному полі з таблиці на лівій стороні.

      Створення зв'язку (відносини) типу "один до багатьох" між таблицями бази даних Microsoft SQL Server

      Створення зв'язку (відносини) типу "один до багатьох" між таблицями бази даних Microsoft SQL Server

      У цій темі показано, як створювати зв'язок між столами по деякому полю. Ця тема базується на знаннях попередніх тем:

      Пошук на інших ресурсах:

      Умова завдання

      Дана база даних Microsoft SQL Server. База даних розміщується у файлах MyDatabase.mdf і MyDatabase.ldf . Завантажити архів із готовими для роботи файлами бази даних можна тут.

      У базі даних задані дві таблиці з іменами Source та Emission. Таблиця Source визначає джерело забруднених викидів. Таблиця Emission визначає час викидів та кількість забруднених викидів, що було сформовано джерелом.

      Структура таблиць така.

      Назва поля Тип даних Коментар
      ID_Source int Ключове поле, унікальне поле (лічильник), первинний ключ
      Name char[50] Назва, рядок символів
      Address char[100] Адреса, рядок символів
      Назва поля Тип даних Коментар
      ID_Emission int Ключове поле, унікальне поле (лічильник)
      ID_Source int Зовнішній ключ значення Source.ID_Source
      count float Кількість викидів
      Text char[100] Коментар
      date datetime Дата та час викидів

      Використовуючи засоби системи Microsoft Visual Studio, необхідно реалізувати зв'язок (відношення) «один до багатьох» між таблицями Source та Emission по полю ID_Source.

      Виконання

      1. Запуск Microsoft Visual Studio

      Запустити систему візуальної розробки програм Microsoft Visual Studio.

      2. Створення/підключення бази даних

      На цьому кроці потрібно підключити (або створити) готову базу даних MyDataBase.mdf , яка складається з двох файлів:

      Після підключення вікно Server Explorer матиме вигляд, як показано на малюнку 1.

      Мал. 1. Вікно Server Explorer після підключення бази даних MyDataBase.mdf

      3. Поля ID_Source та ID_Emission

      Слід зазначити, що поля ID_Source та ID_Emission є унікальними лічильниками. Такі поля використовуються у базах даних для забезпечення унікальності кожного запису таблиці.

      Поле ID_Source таблиці Source є первинним ключем.

      Докладний приклад створення унікального поля, яке є лічильником, описується у статті:

      4. Встановлення зв'язку між таблицями
      4.1. Зняття опції «Prevent saving changes that require table re-creation»

      За промовчанням система MS Visual Studio забороняє збереження змін, які вимагають повторного створення таблиць. Щоб дозволити вносити зміни в таблиці, потрібно налаштувати (зняти виділення) опцію

      Prevent saving changes that require table re-creation

      Для цього потрібно виконати таку послідовність кроків:

      • перейти до меню Tools головного меню MS Visual Studio;
      • у меню Tools вибрати команду «Options…» . В результаті відкриється вікно Options (рисунок 2);
      • у лівій частині вікна "Options" послідовно розкрити вкладки "Database Tools" -> "Table and Database Designers" (рисунок 2);
      • вибрати елемент Table and Diagram Options . В результаті в правій частині вікна активується група елементів "Table Options";
      • у групі «Table Options» зняти позначку з опції «Prevent saving changes that require table re-creation» (малюнок 2) та підтвердити вибір (кнопка OK ).

      Після виконання дій можна створювати зв'язок між таблицями.

      Мал. 2. Опція «Prevent saving changes that require table re-creation»

      4.2. Встановлення первинного ключа (Primary Key) у таблиці Source

      Як видно із структури таблиць (рисунок 1) загальним для таблиць є поле ID_Source. Зв'язок між таблицями здійснюватиметься цим полем.

      У таблиці Source необхідно встановити поле ID_Source як «Первинний ключ» ( Primary Key ).

      Щоб встановити первинний ключ, потрібно виконати такі дії:

      • перейти в режим редагування таблиці Source вибором команди Open Table Definition (рисунок 3). Відкриється вікно редагування таблиці;
      • зробити клік правою кнопкою мишки на рядку ID_Source і в контекстному меню вибрати команду Set Primary Key . В результаті поле ID_Source буде позначене як поле, яке є первинним ключем (рисунок 5);
      • зберегти та закрити таблицю Source.

      Мал. 3. Команда «Open Table Definition»

      Мал. 4. Встановлення первинного ключа у таблиці Source

      Мал. 5. Поле ID_Source у таблиці Source після встановлення первинного ключа

      У таблиці Emission необов'язково встановлювати первинний ключ.

      4.3. Створення зв'язку між таблицями по полю ID_Source

      Для створення зв'язків між таблицями використовується елемент “Database Diagrams” бази даних MyDataBase.mdf . Щоб створити зв'язок між таблицями, потрібно виконати наступні дії:

      • за допомогою кліка правою кнопкою мишки викликати контекстне меню (рисунок 6). У меню виберіть команду «Add New Diagram» . В результаті база даних створить порожню діаграму. Буде виведено вікно "Add Table" додавання таблиць у діаграму (рисунок 7);
      • по черзі вибрати потрібні таблиці (Source, Emission) і підтвердити вибір натисканням кнопки «Add Table» ;
      • закрити вікно "Add Table" .

      Мал. 6. Команда додавання нової діаграми

      Мал. 7. Вікно «Add Table» додавання таблиць у діаграму

      Після виконання дій вікно діаграми матиме вигляд, як показано на малюнку 8. Поки що таблиці не мають зв'язку між собою.

      Мал. 8. Таблиці Source та Emission

      Щоб розпочати встановлювати відношення між таблицями, потрібно зробити клік на полі ID_Source таблиці Source, а потім (не відпускаючи кнопку мишки) перетягнути його на поле Source таблиці Emission.

      В результаті послідовно відкриються два вікна: Tables and Columns (малюнок 9) і Foreign Key Relationship (малюнок 10), в яких потрібно залишити все як є і підтвердити свій вибір на кнопці OK.

      У вікні "Tables and Columns" є такі поля (рисунок 9):

      • поле "Relationship name" . У цьому полі визначається ім'я об'єкта, який символізує з'єднання (відношення) між таблицями. За допомогою цього об'єкта (імені) можна керувати деякими властивостями зв'язку (відносини). У нашому випадку з'єднання (відношення) має назву FK_Emission_Source;
      • поле "Primary key table:" . Це поле визначає таблицю, яка є первинною по відношенню до іншої таблиці. У разі первинної є таблиця Source.Поле, яке є первинним ключем таблиці має назву ID_Source ;
      • поле «Foreign key table:» вказує назву таблиці ( Emission ) і поля цієї таблиці ( ID_Source ), яке є зовнішнім ключем.

      Мал. 9. Вікно налаштування параметрів зв'язку між столиками

      У вікні Foreign Key Relationship налаштовуються властивості з'єднання. Можна залишити все як є.

      Мал. 10. Налаштування властивостей з'єднання FK_Emission_Source

      4.4. Діаграма зв'язку

      Після створення зв'язку вікно діаграми матиме вигляд, як показано малюнку 11.

      Мал. 11. Вид діаграми після встановлення відношення (зв'язку) між таблицями Source та Emission

      Як очевидно з малюнка, кінець з'єднання (відносини), що примикає до таблиці Source має вигляд ключа. А кінець з'єднання, яке примикає до таблиці Emission, має вигляд знака нескінченність. .

      Це означає, що в таблиці Source числове значення в полі ID_Source може траплятися лише один раз. На таблиці Emission числове значення ID_Source може повторюватися (нескінченна кількість разів). Таким чином можна уявити будь-яку множину унікальних об'єктів, які мають властивість повторюватися в деякій предметній області.

      Після закриття діаграми її слід зберегти під деяким ім'ям, наприклад Diagram1 (рисунок 12). Система видасть відповідне вікно уточнення.

      Мал. 12. Завдання імені для діаграми

      Також система може вивести вікно збереження таблиць у базі даних (рисунок 13), оскільки між таблицями вже існує відношення (зв'язок). У цьому вікні потрібно вказати "Yes".

      Мал. 13. Вікно збереження таблиць у базі даних у зв'язку із змінами

      Після виконання дій, діаграма Diagram1 відобразиться у вікні Server Explorer (мал. 14).За допомогою команд контекстного меню можна управляти діаграмою. Так, наприклад, команда Design Database Diagram переводить діаграму в режим редагування, в якому можна змінювати зв'язки між таблицями бази даних.

      Мал. 14. Команда редагування зв'язків (відносин) між таблицями

      5. Програмне керування даними

      Після створення зв'язку між столиками можна створювати проект, який керуватиме даними в таблицях. Але це вже зовсім інша тема.

      Схожі теми

Подібні статті

Останні статті

Категорії