- •Методичний посібник
- •«Інженерна та комп’ютерна графіка»
- •Пояснювальна записка
- •Навчальна програма предмету
- •Методичні вказівки для практичних робіт Практичне заняття №1
- •Практичне заняття №2
- •Об'єднання
- •Перетин
- •Віднімання
- •Множення
- •Практичне заняття №3
- •Перша нормальна форма. Можливі недоліки відношення в 1нф
- •Друга нормальна форма. Можливі недоліки відношення в 2нф
- •Третя нормальна форма. Можливі недоліки відношення в 3нф
- •Збереження залежності
- •Нормальна форма Бойса-Кодда
- •Практичне заняття №4
- •Оператор select
- •Речення select
- •Речення from
- •Відбір рядків (речення where)
- •Умови пошуку
- •Сортування результатів запиту (речення order by).
- •Перелік навчально-методичної літератури
Третя нормальна форма. Можливі недоліки відношення в 3нф
Відношення знаходиться в третій нормальній формі тоді і тільки тоді, коли воно знаходиться в другій нормальній формі і кожен неключовий атрибут нетранзитивно залежить від первинного ключа. (Під "нетранзитивною залежністю" мається на увазі відсутність якої-небудь взаємної залежності у викладеному вище сенсі.)
Стосунки Cities і Regions знаходяться в третій нормальній формі. Таким чином другим етапом нормалізації є створення проекцій для виключення транзитивних залежностей.
Збереження залежності
В процесі приведення стосунків часто виникають ситуації, коли це відношення може бути піддане операції декомпозиції різними способами. Розглянемо знову приведене вище відношення CNR з функціональними залежностями CityNo(CityName, CityNo(RgNo, CityNo(RgNаме, RgNo(RgName і, отже, транзитивною залежністю CityNo(RgName (на Рисунок 3.5 транзитивна залежність показана пунктирною стрілкою).
Рисунок 3.5 Функціональних залежностей відносно CNR
Вище відзначалося, що аномалії оновлення, які супроводжують відношення CNR, можна здолати за допомогою декомпозиції із заміною цього відношення двома проекціями в ЗНФ.
Cities{CityNo, CityName, RgNo} і Regions{RgNo, RgName}
Назвемо цю декомпозицію просто "декомпозицією №1", маючи на увазі, що для неї існує альтернативна "декомпозиція №2":
Cities{CityNo, CityName, RgNo} і Regions{CityNo, RgName}
При цьому обидві проекції Cities однакові як для №1, так і для №2. Декомпозиція №2 відбувається також без втрати інформації, а обидві її проекції знаходяться в ЗНФ. Проте з деяких причин декомпозиція №2 менш бажана, чим декомпозиція №1. Наприклад, після виконання декомпозиції №2 все ще неможливо вставити інформацію про те, що деяка область має певний код, без вказівки міста, яке знаходиться в цій області.
Розглянемо цей приклад детальніше. Передусім помітимо, що залежності проекцій в декомпозиції №1 відмічені суцільними стрілками, тоді як одна, із залежностей проекцій декомпозиції №1 відмічена пунктирною стрілкою. У декомпозиції №1 дві проекції незалежні один від одного в наступному сенсі: оновлення в кожній з проекцій можуть бути виконані абсолютно незалежно один від одного. (Звичайно, за винятком обмеження цілісності для Cities і Regions) Якщо таке оновлення допустиме тільки в контексті цієї проекції, тобто не порушується унікальність первинного ключа для цієї проекції, то з'єднання цих двох проекцій після оновлення завжди буде рівносильне відношенню CNR (тобто при з'єднанні не будуть порушені обмеження, накладені на ФЗ відносно CNR). У декомпозиції №2, навпаки, оновлення будь-якої з двох проекцій повинне ретельно фіксуватися, щоб гарантувати відсутність порушення залежності RgNo(RgName (якщо два міста знаходяться в одній і тій же області, вони повинні мати однаковий код області). Інакше кажучи, обидві проекції декомпозиції №2 не є незалежними одна від одної.
Основна проблема полягає в тому, що в декомпозиції №2 функціональна залежність RgNo(RgName стає обмеженням між стосунками. (Слід зазначити, що в багатьох сучасних програмних продуктах це обмеження повинне підтримуватися за допомогою процедурної обробки.) У декомпозиції №1, навпаки, транзитивна залежність SityNo(RgName є обмеженням між стосунками, яке автоматично виконується при задіюванні двох обмежень усередині стосунків, : CityNo(RgNo і RgNo(RgName. Привести в дію ці обмеження досить просто за рахунок відповідних обмежень, накладених на унікальність первинних ключів.
Концепція незалежних проекцій, таким чином, забезпечує критерій вибору однієї з декількох можливих декомпозиції. Декомпозиція з незалежними проекціями в приведеному вище загальному сенсі прийнятніше за ту, в якій проекції залежні. Риссанен (Rissanen) показав, що проекції R1 і R2 відношення R незалежні в згаданому вище сенсі тоді і тільки тоді, коли:
кожна ФЗ відносно R є логічним наслідком функціональних залежностей в проекціях R1 і R2;
загальні атрибути проекцій R1 і R2 утворюють потенційний ключ, принаймні, для однієї з них.
Відношення, яке не може бути піддане декомпозиції з отриманням незалежних проекцій, називається атомарним. Проте це не означає, що будь-яке неатомарне відношення може бути розбите на атомарні компоненти. Ідея нормалізації з декомпозицією на незалежні проекції називається декомпозицією із збереженням залежності.
