Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекц6 Реляц модель Укр!.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
88.7 Кб
Скачать

Зв'язок виду м : м

Самий загальний вид зв'язку М : М виникає, коли декільком записам головної таблиці відповідає кілька записів підлеглої таблиці.

Приклад 5. У головній таблиці Табл9 міститься інформація про те, на яких верстатах можуть працювати робітники. Табл10 містить зведення про те, хто з ремонтників які верстати обслуговує.

Багатьом полям головної таблиці відповідають багато полів підлеглої таблиці, отже між таблицями мається зв'язок М : М.

У результаті такого зв'язку таблиць можна скласти псевдотаблицю Табл11, записам якої можна надати зміст можливих змін, що складаються при плануванні роботи. Псевдотаблицю можна використовувати також для одержання відповіді на питання: "Хто обслуговує верстати, на яких працює Петров?".

Табл9

Табл10

▼Працює

▼Верстат

Іванов

верстат1

Іванов

верстат 2

Петров

верстат 1

Петров

верстат 3

▼Обслуговує

▼Верстат

Голуб

верстат 1

Голуб

верстат 3

Зиков

верстат 2

Зиков

верстат 3

Табл11

Працює

Верстат

Обслуговує

Іванов

верстат 1

Голуб

Іванов

верстат 2

Зиков

Петров

верстат 1

Голуб

Петров

верстат 3

Зиков

Петров

верстат 3

Голуб

Зв'язок М : М не встановлює підпорядкованості таблиць. Для перевірки цього можна головну і підлеглу таблиці поміняти місцями і виконати об'єднання інформації шляхом зв'язування.

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

6.2. Контроль цілісності зв'язків

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

Перше обмеження - обмеження домену. Кожен атрибут визначається на своєму домені. Чи навпаки - домен задає безліч значень, що може приймати атрибут. Наприклад, вартість товару не може бути від’ємною, дорівнювати нулю, або перевищувати визначене значення. Якщо значення атрибута в даний момент невідомо, то використовується поняття NULL. Наприклад, в екзаменаційній відомості для студентів, по якимось причинах не здаваних іспит, атрибут Оцінка не має значення, тоді у полі повинно бути зазначене NULL. Друге обмеження - категорійна цілісність обмежує значення первинних ключів базових відношень. Кортеж не може записуватися в БД доти , поки значення його ключових атрибутів не будуть цілком визначені. Тому у властивостях ключового поля повинно бути зазначене NOT NULL.

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

З усіх видів зв'язку найбільше широко використовується зв'язок виду 1: М. Зв'язок виду 1:1 можна вважати часткою случаємо зв'язку 1: М, коли одному запису головної таблиці відповідає один запис допоміжної таблиці. Зв'язок М:1, по суті, є "дзеркальним відображенням" зв'язку 1: М. Вид зв'язку М : М характеризується як слабкий вид зв’язку чи навіть як відсутність зв'язку. Тому докладно розглянемо зв'язок виду 1: М.

При утворенні зв'язку виду 1: М один запис головної таблиці (головний, батьківський запис) виявляється зв'язаним з декількома записами підлеглої таблиці (додатковий, підлеглий запис) і має місце схема, що наведена на рис. 6.1.

Контроль цілісності зв'язків означає аналіз двох таблиць на дотримання таких умов:

  • кожного запису головної таблиці відповідає нуль чи більше записів підлеглої таблиці;

  • у підлеглій таблиці немає записів, що не мають батьківських записів у головній таблиці;

  • кожен запис підлеглої таблиці має тільки один батьківський запис головної таблиці.

Під час операцій над даними двох таблиць виконуються різні дії для контролю цілісності.

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

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

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

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

Редагування поля зв'язку головної таблиці здійснюється за правилами:

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

  • зміни в полях зв'язку головної таблиці миттєво передавати в усі поля зв'язку всіх записів підлеглої таблиці (каскадне відновлення).

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

Вилучення записів головної таблиці здійснюється за правилами:

  • вилучати можна запис, що не має підлеглих записів;

  • заборонити (блокувати) вилучення запису при наявності підлеглих записів, або вилучати його разом із усіма підлеглими записами (каскадне вилучення).