Головна |
Нормалізація - перетворення вихідного відносини за певними правилами і отримання іншого ставлення, яке еквівалентно іншого ставлення. Форми вкладені одна в одну. Знаходження відносини в старшій формі, в деякому сенсі, більш переважно.
Визначення 1НФ. Відношення знаходиться в першій 1НФ, якщо всі його атрибути атомарний, тобто якщо жоден з його атрибутів можна розділити на більш прості атрибути, які відповідають якимось іншим властивостям описуваної суті.
Будемо називати вихідне відношення основним, а значення неатомарного атрибута - підлеглим. Для того, щоб нормалізувати вихідне відношення, атрибути якого неатомарни, необхідно об'єднати схеми основного і підлеглого відносин.
Алгоритм нормалізації відносини до 1НФ:
1. створити нове ставлення, схема якого буде отримана шляхом злиття основної та підлеглої схем вихідного відносини в одну;
2. для кожного кортежу вихідного відносини включити в новий стільки рядків, скільки кортежів міститься в підлеглому відношенні цього кортежу;
3. заповнити значення атрибутів нового відносини, відповідних атрибутів підлеглого відносини;
4. заповнити рядки нового відносини значеннями атомарних атрибутів вихідного;
R1 | ||||
код | статус | Місто | товар | Кількість |
Москва | ||||
Москва | ||||
Москва | ||||
Москва | ||||
Москва | ||||
Москва | ||||
Ростов | ||||
Ростов | ||||
Ростов | ||||
Москва | ||||
Москва | ||||
Москва |
Недоліки 1НФ розглянемо на прикладі ставлення R1 з наступними ФЗ: {код, товар} -> {кількість}; {Код} -> {місто}; {Код} -> {статус}; {Місто} -> {статус}, первинний ключ щодо {код, товар}.
Дане відношення має надмірністю (для кожного постачальника вказано місто і статус). Надмірність призводить до різних аномалій:
1. аномалія вставки. Не можна додати інформацію про постачальника, який не поставив жодного товару;
2. аномалія видалення. Можливо, що з видаленням деякої рядка таблиця (видалення поставки) зникне інформація про постачальника;
3. аномалія оновлення. Проблема виникає в тому випадку, якщо необхідно перемістити постачальника з одного міста в інший. Наприклад, 1 з Москви в Новгород. Для цього необхідно відкоригувати всі записи про постачання від цього постачальника;
Для вирішення цієї проблеми замінимо ставлення декількома проекціями. В одне включимо первинний ключ і все неключових атрибути, неприводимого залежні від первинного ключа. В інші проекції - неключових атрибути, приводимо залежні від первинного ключа і та частина первинного ключа, від якої дані атрибути неприводимого залежать. Отже отримаємо 2 відносини R2 і R3:
R2 | R3 | |||||
код | товар | Кількість | код | статус | Місто | |
Москва | ||||||
Ростов | ||||||
Ростов | ||||||
Москва | ||||||
Новгород | ||||||
ФЗ для відносини R2: {код, товар} -> {кількість}.
ФЗ для відношення R3: {код} -> {місто}, {код} -> {статус}, {місто} -> {статус}.
Такі відносини дозволяють подолати зазначені суперечності:
1. можна додати постачальника з Новгорода, яка не поставляв товар;
2. можна видалити товар з кодом 2 від постачальника з кодом 3, а відомості про постачальника залишаться;
3. для того, щоб перемістити постачальника 1 з Москви в Новгород, досить поміняти запис щодо R3.
Фізичний сенс протиріч щодо R1 в тому, що це відношення описує не один об'єкт (поставку товару) а два: постачання і постачальника.
Визначення 2НФ (за умови єдиності потенційного ключа). Відношення знаходиться в другій нормальній формі тоді і тільки тоді, коли воно знаходиться в 1НФ і кожен його неключових атрибут неприводимого залежимо від первинного ключа.
Проблеми, що виникають в R3:
1. аномалія вставки. Не можна включити місто з деяким статусом з якого немає жодного постачальника;
2. аномалія видалення. Видаливши постачальника 5, видалимо інформацію про те, що Новгороду був встановлений статус 30;
3. аномалія оновлення. Інформація про статус повторюється, таким чином змінивши статус Москви з 20 на 30 необхідно відкоригувати кілька записів.
Фізичний сенс протиріччя той же: інформація про два об'єкти предметної області (місто і постачальник) знаходиться в одному відношенні.
Формальною ознакою неналежність R3 до 3НФ є наявність транзитивной ФЗ для цього відносини неприводимого безліч ФЗ: {код} > {місто} і {місто} > {статус}.
R5: | R6: | |||
код | Місто | Місто | статус | |
Москва | Москва | |||
Ростов | Ростов | |||
Ростов | Новгород | |||
Москва | Казань | |||
Новгород |
Для вирішення проблеми знайдемо про R3 проекції, в які включимо первинний ключ і атрибут, перед яким здійснюється транзитивній залежність і в другому відношенні цей же атрибут і атрибут, транзитивно залежить від первинного ключа вихідного відносини. Отримаємо відносини R5 і R6. ФЗ для відносини R5: {код} -> {статус}. ФЗ для відносини R6: {місто} > {статус}.
Кожне відношення описує тільки одну сутність (об'єкт предметної області).
Визначення 3НФ. Відношення знаходиться в третій нормальній формі тоді і тільки тоді, коли воно знаходиться в 2НФ, і кожен його неключових атрибут нетранзитивно залежимо від первинного ключа.
Метрики Холстеда. | Основні реляційні операції над відносинами.
Фізична і логічна організація мереж. Мережеві топології. Способи маршрутизації. | Поняття протоколу. Семиуровневая модель взаємодії відкритих систем. | Методи зв'язку між апаратурою в мережі. Методи вирішення конфліктів при множинному доступі. | Обмін файлами. Служба архівів FTP. | Мова гіпертекстової розмітки HTML. | Шість типів технологій структурно-модульного проектування. |