Відсутні значення І КЛЮЧІ

Примітка Далі замість терміна UNK ми будемо використовувати більш традиційну термінологію, тобто термін NULL

Всупереч всьому сказаному в попередньому розділі, на практиці невизначені значення (NULL) і тризначна логіка широко підтримуються в більшості сучасних програмних продуктів Резонно припустити, що така підтримка має дуже важливі наслідки, особливо щодо ключів Саме це і буде предметом подальшого короткого розгляду в цьому розділі

Первинні ключі

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

■&nbsp Правило підтримки цілісності сутності Жоден компонент первинного ключа будь-якої базової змінної відношення не може містити невизначені значення (NULL)

Обгрунтування цього обмеження побудовано на такій послідовності доводів: а) кортежі базових змінних відносини являють сутності реального світу б) сутності реального світу завжди повинні допускати можливість їх ідентифікації (за визначенням) в) отже, їх аналоги в базі даних також повинні допускати можливість ідентифікації г) в базі даних значення первинного ключа використовуються в якості ідентифікаторів д) отже, значення будь-якого первинного ключа не може бути невизначеним.

У звязку з цим наведемо ряд міркувань

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

2 З цього випливає висновок, що альтернативні ключі, мабуть, можуть содер жати невизначені значення (NULL) Але якщо якийсь ключ АК є альтер нативним ключем, в якому допускаються невизначені значення (NULL), то він не може використовуватися в якості первинного ключа, оскільки для нього на Руша вимога збереження цілісності сутності Тоді в якому сенсі ключ АК є потенційним І навпаки, якщо висунути вимогу, що альтернативні ключі також не можуть містити невизначені значення (NULL), то правило збереження цілісності суті буде ставитися до всім потенційним ключам, а не тільки до первинних ключам У будь-якому з цих двох варіантів вказане правило виглядає не цілком прийнятним

3 Нарешті, відзначимо, що правило збереження цілісності суті стосується тільки для базових змінних відносини, тоді як інші змінні отноше ня, мабуть, можуть містити первинні ключі з невизначеними значе нями (NULL) В якості тривіального і очевидного прикладу розглянемо проек цію змінної відносини R по атрибуту А, в якому допускається присутність невизначених значень (NULL) Очевидно, що правило збереження цілісно сті сутності порушує принцип взаємозамінності (Для базових і похідних змінних відносини) На думку автора, це може послужити серйозним до водом для відмови від нього (дана концепція буде відкинута нами незалежно від включення невизначених значень (NULL))

Тепер припустимо, що ми відмовилися від ідеї застосовувати невизначені значення (NULL) і для представлення інформації, якої бракує замість них застосували спеціальні значенія6аналогічно тому, як це робиться в реальному світі (докладні відомості наведені в розділі 196) Тоді модифікована версія правила збереження цілісності суті буде мати наступний вигляд: Ніякої компонент первинного ключа будь-якої базової змінної відношення не може містити подібних спеціальних значень . Ця вимога може використовуватися як рекомендація, але не є непорушним законом (так само, як ідеї подальшої нормалізації служать в якості рекомендацій, а не строгих законів) На рис 192 наведено приклад базової змінної відносини SURVEY, для якої може знадобитися порушити цю рекомендацію У ній представлені результати опитування співробітників про розмір їх зарплати, які включають середнє, максимальне і мінімальне значення для групи співробітників з

певним роком народження (Тут атрибут BIRTHYEAR є первинним ключем) Кортеж із спеціальним значенням ????” атрибута BIRTHYEAR представляє тих службовців, які відмовилися відповісти на питання про рік народження

Рис 192 Приклад значень даних в базової змінної відносини SURVEY

Зовнішні ключі

Ще раз звернемося до бази даних відділів і співробітників, вміст якої показано на рис 191 Можливо, ви не звернули на це уваги, однак свого часу автор навмисно не вказав, що на даному малюнку атрибут DEPT # змінної відносини ОМР є зовнішнім ключем Припустимо тепер, що це так Відразу стає зрозуміло наступне: потрібно уточнити формулювання визначення обмежень посилальної цілісності з урахуванням того, що зовнішні ключі можуть містити невизначені значенія7 (NULL), а це очевидно суперечить вихідного формулювання даного обмеження, наведеною в розділі 9

■&nbsp&nbsp&nbsp&nbsp Обмеження посилальної цілісності (Вихідна формулювання) База даних не повинна містити ніяких неузгоджених значень зовнішніх ключів

Насправді, це визначення можна залишити в незмінному вигляді, розширивши відповідним чином визначення терміна неузгоджені значення зовнішнього ключа А саме, назвемо неузгодженим значенням зовнішнього ключа таке його непорожнє

6 Часто необгрунтовано звані значеннями, заданими за замовчуванням ([1912])

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

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

З цього випливають наведені нижче висновки

1 Заборона або дозвіл на застосування невизначених значень (NULL) в даному зовнішньому ключі має здаватися у визначенні бази даних (Безумовно, насправді це вимога справедливо щодо всіх атрибутів в це лом, незалежно від того, чи є вони частиною деякого зовнішнього ключа)

2 Можливість присутності невизначених значень (NULL) в зовнішніх ключах вимагає введення нового типу посилального дії, SET NULL, яке можна буде вказувати в правилі видалення DELETE або поновлення UPDATE при визна леніі зовнішніх ключів, наприклад, наступним чином

VAR SP BASE RELATION { .. } ..

FOREIGN KEY { S# } REFERENCES S ON DELETE SET NULL ON UPDATE

SET NULL

При використанні цих специфікацій операція DELETE у змінній відносини постачальників призведе до приміщення невизначених значень (NULL) У атрибут зовнішнього ключа всіх кортежів з даними про відповідні поставках, і тільки після цього відомості про зазначені постачальниках будуть видалені Аналогічним чином, операція UPDATE для атрибута s # у змінній відносини постачальників викличе приміщення невизначених значень (NULL) в атрибут зовнішнього ключа всіх кортежів з даними про відповідних поставках, і тільки після цього відомості про зазначені постачальниках будуть оновлені Примітка Специфікація SET NULL може бути вказана тільки для тих зовнішніх ключів, в яких допускається наявність невизначених значень (NULL) 3 Нарешті, слід зазначити, що необхідності дозволити присутність невизначених значень (NULL) в зовнішніх ключах цілком можна уникнути за рахунок відповідного проектування бази даних [1919] Ще раз звернемося до прикладу з відділами і співробітниками Можлива ситуація, коли деякі співробітники дійсно не належать ні до одного з відділів Але тоді, як уже передбачалося в кінці попереднього розділу, логічніше було б не включати атрибут номера відділу DEPT # в змінну відносини ОМР, а створити окрему змінну відносини (скажімо) ED з атрибутами ОМР # і DEPT #, призначену для подання того факту, що вказаний співробітник працює в даному відділі Якщо деякий співробітник не відноситься ні до одному відділу, ситуацію легко можна уявити, не включаючи кортеж для цього співробітника із змінної відносини ED

Джерело: Дейт К Дж, Введення в системи баз даних, 8-е видання: Пер з англ – М: Видавничий дім «Вільямс», 2005 – 1328 с: Ил – Парал тит англ

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*