Багатозначна залежність 1

Багатозначна залежність існує, якщо при заданих значеннях атрибута X існує безліч, що складається з 0 або більше взаємопов'язаних значень атрибута Y, причому безліч значень атрибута Y пов'язаний із значенням атрибута щодо U-X-Y, де U - все безліч атрибутів відносин.

Позначення багатозначною залежності X - >> Y.

Аксіоми багатозначною залежності

1. доповнення для багатозначної залежності: Якщо X> Y, то X - >> U-X-Y

2. поповнення для багатозначної залежності: Якщо X> Y, то WuX - >> VuY

3. транзитивність для багатозначної залежності: Якщо X> Y, Y - >> Z, то X - >> Z-Y

Додаткові правила виведення для багатозначних залежностей

1. об'єднання Якщо X> Z, X - >> Y, то X - >> YuZ

2. псевдотранзітівность Якщо X> Y, WuY - >> Z, то WuX - >> Z- (WuY)

3. змішане правило транзитивності Якщо X> Y, XuYàZ, то XàZ-Y

4. правило декомпозиції X> Y, X - >> Z, то X - >> Y ^ Z, X - >> Y-Z, X - >> Z-Y

Я нормальна форма

Відношення знаходиться в 4 нормальній формі, якщо воно знаходиться в НФБК і в ньому відсутні однозначні залежності є функціональними.

Приклад: Розглянемо залежність (№, курс, діти, посада)

Між викладачем і курсом зв'язок M: M

Між викладачем і дітьми 1: M

Багатозначні залежності № - >> курс, № - >> діти

Схема відносини знаходиться в 4НФ, якщо кожного разу, коли існує багатозначна залежність X - >> Y, де Y непусто, і не є підмножиною X, і XvY складається не з усіх атрибутів R, X містить до-н ключ відносини R, атрибути, між якими існує багатозначна залежність, виділяють в окремі відносини

R1 (№, курс) R2 (№, діти) R3 (№, посада)

Я нормальна форма

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

Кажуть, що ставлення знаходиться в 5НФ, тоді і тільки тоді, коли будь-яка залежність по з'єднанню визначається можливими ключами R. Інакше, кожна проекція містить не менше одного ключа або принаймні один не первинний атрибут.

Декомпозиція відносин повинна гарантувати оборотність. Оборотність передбачає:

1. відсутність втрати кортежів

2. не народжуються раніше відсутні картеж

3. збереження функціональної залежності

З'єднання без втрат, які зберігали залежність

З усіх можливих розкладів схеми повинні використовуватися тільки ті, які мають властивість з'єднань без втрат. Нехай в схемі R є безліч функціональних залежностей. Кажуть, що схема R разложима без втрат на відносини R1, R2, Rk, зі збереженням функціональної залежності, якщо для кожного кортежу r з R може бути rвосстановлен з'єднанням його проекцій.

Умови відсутності втрат при з'єднанні:

Якщо R1 і R2 є розкладанням R, зі скороченням функціональних залежностей - це розкладання забезпечує з'єднання без втрат зі збереженням функціональної залежності <=> якщо R1 ^ R2àR1-R2 або R1 ^ R2àR2-R1 при багатозначною залежності R1 ^ R2 - >> R1-R2, або R1 ^ R2 - >> R2-R1

Операції перетину і різниці визначені над списками атрибутів відносин.

1 розкладання E1 (№, відділ) E2 (№, місто)

2 розкладання E3 (№, відділ) E4 (відділ, місто)

1. E1 ^ E2 = № E1-E2 = відділ E2-E1 = місто. №àвідділ, №àмісто умова задовольняє, розкладання без втрат.

2. E3 ^ E4 = відділ E3-E4 = № E4-E3 = місто. відділà№, відділàмісто ці залежності в вихідному розкладанні не існують, а вихідні функціональні залежності загублені, значить це розкладання з втратами.

Для розкладів більш ніж з двох відносин можна використовувати метод Табло

Умови відсутності втрат при з'єднаннях

З усіх можливих розкладів схеми повинні використовуватися тільки ті, які мають властивість з'єднань без втрат. Нехай в схемі R є безліч функціональних залежностей. Кажуть, що схема R разложима без втрат на відносини R1, R2, Rk, зі збереженням функціональної залежності, якщо для кожного кортежу r з R може бути rвосстановлен з'єднанням його проекцій.

Умови відсутності втрат при з'єднанні:

Якщо R1 і R2 є розкладанням R, зі скороченням функціональних залежностей - це розкладання забезпечує з'єднання без втрат зі збереженням функціональної залежності <=> якщо R1 ^ R2àR1-R2 або R1 ^ R2àR2-R1 при багатозначною залежності R1 ^ R2 - >> R1-R2, або R1 ^ R2 - >> R2-R1

Операції перетину і різниці визначені над списками атрибутів відносин.

1 розкладання E1 (№, відділ) E2 (№, місто)

2 розкладання E3 (№, відділ) E4 (відділ, місто)

1. E1 ^ E2 = № E1-E2 = відділ E2-E1 = місто. №àвідділ, №àмісто умова задовольняє, розкладання без втрат.

2. E3 ^ E4 = відділ E3-E4 = № E4-E3 = місто. відділà№, відділàмісто ці залежності в вихідному розкладанні не існують, а вихідні функціональні залежності загублені, значить це розкладання з втратами.

Для розкладів більш ніж з двох відносин можна використовувати метод Табло

Приклад: R (A, B, C, D) Ф.З. AàC, BàC, CàD.

Розклали: R1 (A, B) R2 (B, D) R3 (A, B, C) R4 (B, C, D)

Є рядки з усіма a, розкладання без втрат.

Створення і модифікація, переміщення БД. (FoxPro)

Створення БД починається введенням команди для формування структури файлу даних:

CREATE <имя файла базы данных>

Після введення цієї команди з'являється вікно, в якому Ви повинні задати всі параметри структури бази: Ім'я поля, Тип поля, Розмір поля, Кількість полів.

Завершення введення всієї структури підтверджується натисканням клавіші "OK", потім FoxPro запитує необхідність заповнення полів створюваної бази даних.

Щоб переконатися в тому. що Ваш файл дійсно створений, можна ввести команду

В результаті на екрані з'явиться список баз даних (в даному випадку включає одне ім'я), що зберігаються на диску, відомості про займаному обсязі пам'яті і про наявність на диску вільної пам'яті. Команду DIR можна використовувати у всіх випадках, коли необхідно подивитися, які БД знаходяться на диску, уточнити ім'я БД для подальшого звернення до неї і т.д.

Для роботи з створеної базою даних її треба відкрити за допомогою команди

USE <имя файла базы данных>

DISPLAY STRUCTURE або LIST STRUCTURE

Закриття бази даних здійснюється командою CLOSE <имя файла базы данных>

Доповнення БД записами виконується по інтерактивній команді APPEND

Отримати на екрані дисплея вміст записів попередньо відкритої бази даних можна за командою LIST <список полей> (І ще DISPLAY)

GO N дозволяє зробити запис з номером N поточної. Вона має два формати,

дозволяють зробити поточної:

а) першу по порядку запис - GO TOP

б) останній запис - GO BOTTOM

Для переміщення по базі даних на задане число записів використовується команда SKIP N

Просуванню вперед відповідає позитивне значення N, просуванню назад - негативне.

Edit - дозволяє редагувати її поля. Видаляти і додавати дані. Browse - теж один з варіантів редагування.

Індекс - покажчик на дані в таблиці.

CREATE INDEX ім'я ON ім'я таблиці

1. прості - індекс, що створюється за даними одного стовпчика таблиці

CREATE INDEX ім'я ON ім'я таблиці (ім'я стовпця)

2. унікальні - використовуються не тільки для прискорення пошуку даних, а й для забезпечення їх цілісності. Наявність унікального індексу дозволяє ввести в таблицю дублікати записи. Його можна створити тільки за тим колонки таблиці, дані якого унікальні.

CREATE UNIQUE INDEX ім'я ON ім'я таблиці (ім'я стовпця)

3. складові - індекси, складені за значеннями кількох стовпців таблиці. При створенні складеного індексу слід враховувати питання продуктивності бази даних. Оскільки порядок стовпців в умови індексу може сильно впливати на швидкість отримання даних. Загальне правило для підвищення продуктивності - більше обмежує значення має йти першим. Але першим повинен вказуватися стовпець, наявність якого завжди передбачається в умовах вибору.

CREATE INDEX ім'я ON ім'я таблиці (ім'я столбца1, ім'я столбца2)

Використання складеного індексу виявляється найбільш ефективним в тому випадку, коли відповідні індексу стовпці часто одночасно використовуються в умовах запитів в вираженні WHERE. Не рекомендується створення індексів для таблиць з ключами дуже великої довжини, так як швидкість роботи такої таблиці знижується через великі обсягів введення / виведення.

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

Якщо для створення унікального індексу використовується простий, значення поля повинні бути неповторяющимися. Коли для створення унікального індексу використовується складовою, значення в кожному з полів, що входять в індекс, можуть повторюватися, але індексний вираз має бути унікальним.

Regular - звичайний. Створюється індекс, в якому для кожного запису таблиці зберігається значення індексного вираження. Якщо кілька записів мають однакові значення індексного виразу, то кожне значення зберігається окремо і містить посилання на пов'язану з ним запис.

Candidate - створюється унікальний індекс, який не містить полів з порожніми значеннями

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

Cascade - при зміні значень полів первинного ключа або ключа кандидата в батьківській таблиці, автоматично здійснюється каскадне зміна всіх відповідних значень в дочірній таблиці.

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

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

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

25. Пошук і сортування, прискорений пошук (на прикладі СУБД FoxPro).

Схожі статті