Формування відношень для зв'язку 1:м
Якщо дві сутності С1 і С2 зв'язані як 1:М, сутність С1 будемо називати однозв'язною (1-зв'яна), а сутність С2 - багатозв'язною (М-зв'язна). Визначальним фактором при формуванні відношень, зв'язаних цим видом зв'язку, є клас приналежності М-зв'язної сутності. Так, якщо клас приналежності М-зв'язної сутності обов'язковий, то в результаті застосування правила одержимо два відношення, якщо необов'язковий - три відношення. Клас приналежності однозв'язної сутності не впливає на результат.
Щоб переконатися в цьому, розглянемо відношення ВИКЛАДАЧ_ДИСЦИПЛІНА (рис. 10.9), що відповідає діаграмам, приведеним на рис. 9.3, тобто случаю, коли: зв'язок типу 1 : М, клас приналежності М-зв'язної сутності обов'язковий, 1 - зв'язної - необов'язковий.
З відношенням ВИКЛАДАЧ_ ДИСЦИПЛІНА (рис. 10.9) зв'язані наступні проблеми:
маються кортежі з порожніми полями (викладач не веде дисципліни),ВИКЛАДАЧ_ДИСЦИПЛІНА
ПІБ
Посада
Наущзва
Години
Іванов І.М.
асистент
СУБД
60
Іванов І.М.
асистент
ПЛ/1
70
Петров М.І.
викладач
АЛГОЛ
80
СІдоров Н.Г.
доцент
ФОРТРАН
90
СІдоров Н.Г.
доцент
С++
85
Єгоров В. В.
доцент
Паскаль
100
Єгоров В. В.
доцент
JAVA
65
Козлов А. С.
професор
….
….
10.9. Вихідне відношення
надлишкове дублювання даних (повторюється посада викладача) у кортежах зі зведеннями про викладачів, що ведуть кілька дисциплін.
Якби клас приналежності 1-зв'язної сутності був обов'язковим (немає викладача без дисципліни), то зникли б порожні поля, але повторювані дані в атрибутах викладача збереглися б. Для усунення названих проблем відношення повинні бути сформовані за наступним правилом.
Правило 4. Якщо ступінь зв'язку між сутностями 1:М (або М:1) і клас приналежності М-зв'язної сутності обов'язковий, то достатньо формування двох відношень (по одному на кожну із сутностей). При цьому первинними ключами цих відношень є ключі їхніх сутностей. Крім того, ключ 1-зв'язної сутності додається як атрибут (зовнішній ключ) у відношення, що відповідає М-зв'язної сутності.
На
рис. 10.10 приведена діаграма ER-типу і
відношення, сформовані за правилом 4.
Відповідно до правила 4 перетворимо відношення на рис. 10.10 у два відношення (рис. 10.11).
ВИКЛАДАЧ |
ДИСЦИПЛІНА_ ВИКЛАДАЧ |
||||
ПІБ |
Посада |
|
Назва |
Години |
ПІБ |
Іванов І.М. |
асистент |
|
СУБД |
60 |
Іванов І.М. |
Петров М.І. |
викладач |
|
ПЛ/1 |
70 |
Іванов І.М. |
СІдоров Н.Г. |
доцент |
|
АЛГОЛ |
80 |
Петров М.І. |
Єгоров В.В. |
доцент |
|
ФОРТРАН |
90 |
Сідоров Н.Г. |
Козлов А.С. |
професор |
|
С++ |
85 |
Сідоров Н.Г. |
|
|
|
Паскаль |
100 |
Єгоров В.В. |
|
|
|
JAVA |
65 |
Єгоров В.В. |
Рис. 10.11. Відношення, що отримані за правилом 4 |
|||||
З рис. 10.11 видно, що порожні поля і дублювання інформації удалося усунути. Утрати зведень про те, хто з викладачів веде яку дисципліну, не відбулося завдяки введенню ключа ПІБ сутності ВИКЛАДАЧ як зовнішнього ключа у відношення ДИСЦИПЛІНА_ ВИКЛАДАЧ.
Приклад. Зв'язок між сутностями 1 : М, а клас приналежності М-зв'язної сутності необов'язковий.
Нехай клас приналежності 1-зв'язної сутності також необов'язковий, хоча це і не принципово, тому що визначальним є клас приналежності М-зв'язної сутності. Подивимося, до чого може привести використання одного відношення в цьому випадку (рис. 10.12).
ВИКЛАДАЧ_ДИСЦИПЛІНА |
|||
ПІБ |
Посада |
Назва |
Години |
Іванов І.М. |
асистент |
СУБД |
60 |
Іванов І.М. |
асистент |
ПЛ/1 |
70 |
Петров М.І. |
викладач |
АЛГОЛ |
80 |
Сідоров Н.Г. |
доцент |
ФОРТРАН |
90 |
… |
… |
С++ |
85 |
Єгоров В. В. |
доцент |
Паскаль |
100 |
Єгоров В. В. |
доцент |
JAVA |
65 |
Козлов А.С. |
професор |
… |
… |
Рис. 10.12. Вихідне відношення |
|||
1. Є порожні поля в кортежах, що містять наступне:
а) дані про викладачів, що не ведуть дисциплін;
б) дані про дисципліни, що не ведуться викладачами.
2. Надлишкове дублювання даних про викладачів, що ведуть більш однієї дисципліни.
ВИКЛАДАЧ |
|
ВЕДЕ |
|
ДИСЦИПЛІНА |
|||
ПІБ |
Посада |
|
ПІБ |
Назва |
|
Назва |
Години |
Іванов І.М. |
асистент |
|
Іванов І.М. |
СУБД |
|
СУБД |
60 |
Петров М.І. |
викладач |
|
Іванов І.М. |
ПЛ/1 |
|
ПЛ/1 |
70 |
Сидоров Н.Г. |
доцент |
|
Петров М.І. |
АЛГОЛ |
|
АЛГОЛ |
80 |
Єгоров В.В. |
доцент |
|
Сідоров Н.Г. |
ФОРТРАН |
|
ФОРТРАН |
90 |
Козлов А.С. |
професор |
|
Єгоров В. В. |
Паскаль |
|
С++ |
85 |
|
|
|
Єгоров В. В. |
JAVA |
|
Паскаль |
100 |
|
|
|
|
|
|
JAVA |
65 |
Рис. 10.13. Відношення, що отримані за правилом 5 |
|||||||
У випадку обов'язкового класу приналежності 1-зв'язної сутності зникають проблеми 1 а). Для усунення всіх проблем потрібно перейти до трьох відношень у відповідності з наступним правилом.
Правило 5. Якщо ступінь зв'язку 1 : М (М : 1) і клас приналежності М-зв'язної сутності є необов'язковим, то необхідно формування трьох відношень (рис. 10.14). Два відношення відповідають сутностям що зв’язуються, ключі яких є первинними в цих відношеннях. Третє відношення є зв'язуючим між першими двома (його ключ поєднує ключові атрибути відношень, що зв'язуються)
У
результаті застосування правила 5 до
відношення (рис. 10.14) його дані розподіляються
по трьом відношенням (рис.10.13).
Таким чином, зазначені проблеми удалося уникнути. Ключ у зв'язаному відношенні ВЕДЕ є складеним і містить у собі ключові атрибути обох відношень, що зв'язуються, (сутностей). Підкреслимо, що визначальним фактором при виборі між 4-м чи 5-м правилом є клас приналежності М-зв'язної сутності.
