Головна
Лекції
Завдання
Побажання
Гостьова
Лінки
Лекція №6 Лекція №4 Скачати лекцію

Лекція 5

Індексування

Визначення ключа для таблиці означає автоматичне сортування записів, контроль відсутності повторення значень у ключових полях записів і підвищення швидкості виконання операцій пошуку у таблиці. Для реалізації цих функцій у СУБД застосовують індексування.

Термін “індекс” тісно пов'язаний з поняттям “ключ”, хоча між ними є і деякі відміни.

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

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

На практиці для створення індексу для деякої таблиці БД користувач вказує поле таблиці, котре вимагає індексації. Ключові поля таблиці в багатьох СУБД, як правило, індексуються автоматично. Індексні файли, що створюються по ключовим полям таблиці, часто називаються файлами первинних індексів.

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

Звзок вторинного індексу з елементами даних бази може бути встановлена різними способами. Один з них – використання вторинного індексу як входу для отримання первинного ключа, по котрому потім з використанням первинного індексу провадиться пошук необхідних записів. (мал.3.5)

Деякими СУБД, наприклад Access, поділ індексів на первинні і вторинні не робиться. В цьому випадку використовується автоматично створювані індекси та індекси, що визначаються користувачем по будь-якому із не ключових полів.

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

При проектуванні реальних БД інформацію звичайно розміщують в декількох таблицях. Таблиці при цьому зв’язані інформаційно. В реляційних СУБД для вказівки на звязок між таблицями проводять операцію їх звязування.

Основні види звязків між таблицями

При звязуванні двох таблиць виділяють основну да допоміжну (підлеглу) таблицю. Логічне звязування таблиць провадиться за допомогою ключа звязку.

Ключ звязку, за аналогією із звичайним ключом таблиці, складається з одного або декільких полів, які в даному випадку називаються полями звязку (ПС).

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

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

 

Характеристика видів звязку таблиць

 

Характеристика полів звязку за видами

1:1

1:М

М:1

М:М

Поле звязку основної таблиці

являються

ключем

являються

ключем

не являються ключем

не являються ключем

Поле звязку додаткової таблиці

являються ключем

не являються ключем

являються ключем

не являються ключем

 

Звязок виду 1:1

Звязок виду 1:1 утворюється у випадку, коли всі поля звязку основної та додаткової таблиці є ключовими. Оскільки значення в ключових полях обох таблиць не повторюються, забезпечується взаємнооднозначна відповідність записів з цих таблиць, тобто таблиці є рівноправними.

Зіставлення записів двох таблиць по суті означає утворення нових “віртуальних записів” (псевдозаписів). На практиці звязки виду 1:1 використовують досить рідко, так як інформацію з двох таблиць легко об’єднати в одну таблицю, яка займає значно менше місця в пам’яті ПК. Можливі випадки, коли зручніше мати не одну, а дві чи більше таблиці. Причинами цього може бути необхідність прискорити обробку, підвищити зручність роботи користувачів, забезпечити вищу ступінь захисту інформації.

Звязок виду 1:М

Звязок 1:М має місце, коли одному запису основної таблиці відповідає декілька записів допоміжної таблиці.

Приклад:

Нехай є 2 звязані таблиці О2 та Д2. В таблиці О2 міститься інформація про види мультимедіа-пристроїв ПК, а в таблиці Д2 – відомості про фірми-виробники цих пристроїв, а також про наявність на складі, хоча б одного пристрою.

Таблиця Д2 має 2 ключових поля, так як одна й та ж фірма може виробляти пристрої різних типів. Співсталення записів обох таблиць за полем “Код” породжує записи типу (а, CD-ROM, Acer, так).

Якщо звести всы псевдозаписи в нову таблицю, то отримаємо про всі види мультімедіа-пристроїв, фірмах-виробниках, а також відомості про їх наявність на складі.

Звязок виду М:1

 

Звязок М:1 має місце у випадку, коли одній чи декільком записам основної таблиці ставиться у відповідності один запис додаткової таблиці.

 

Приклад:

Розглянемо звязок таблиць ОЗ та ДЗ. У основній таблиці ОЗ міститься інформація о назвах деталей (Поле11), видах матеріалів, із котрого деталі можна виготовити (Поле12), і марках матеріалу (Поле13). У додатковій таблиці ДЗ містяться відомості о назвах деталей (Поле21), планованих строках виготовлення (Поле22) і вартості замовлень (Поле23).

 

Таблиця ОЗ

+

Поле11

Поле12

Поле13

деталь1

чавун

марка1

деталь1

чавун

марка2

деталь2

сталь

марка1

деталь2

сталь

марка2

деталь2

сталь

марка3

деталь3

алюміній

-

деталь4

чавун

марка2

 

Таблиця ДЗ

* +

Поле21

Поле22

Поле23

деталь1

4.03.98

90

деталь2

3.01.98

35

деталь3

17.02.98

90

деталь4

6.05.98

240

 

Зв'язування цих таблиць забезпечує таке встановлення відповідності між записами: (деталь1, чугун, марка1,4.03.98), (деталь1, чугун, марка2,4.03.98). Таблиця О3 не має ключів, в ній можливе повторення записів. Якщо таблицю Д3 зробити основною, а О3 – додатковою, то отримаємо звязок виду 1:М. Якщо поміняти місцями таблиці О2 та Д2, можна отримати звязок виду М:1. Звідси випливає, що вигляд звязку (1:М або М:1) залежить від того, яка таблиця є головною, та яка додатковою.

 

 

Звязок вигляду М:М

Загальний вигляд звязку М:М виникає у випадках, коли декільком записам основної таблиці відповідає декілька записів додаткової таблиці.

Приклад : Нехай в таблиці О4 міститься інформація про те, на яких верстатах можуть працювати робітники деякої бригади. Таблиця Д4 містить відомості про те, хто з бригади ремонтників які таблиці обслуговує.

Першому та третьому запису таблиці О4 відповідає перший запис таблиці Д4 (у всіх цих записів значення другого поля –“верстат1”). Четвертому запису таблиці О4 відповідає другий та четвертий запис таблиці Д4 (у другому полі цих записів міститься “верстат3”). Виходячи з визначення полів звязку цих таблиць можна скласти нову таблицю “О4+Д4”, записами якої будуть псевдозаписи. Записам отриманої таблиці можна надати зміст можливих змін, які складають при плануванні роботи. Для зручності, поля нової таблиці перейменовано (до речі таку операцію пропонують багато із сучасних СУБД).

Наведену таблицю можна використовувати, наприклад, для отримання відповіді на питання: “Хто обслуговує верстати, на яких працює Петров Н.Г?”.

Очевидно аналогічно звязку 1:1, звязок М:М не встановлює пілеглості таблиць. Для перевірки цього можна основну та додаткову таблицю поміняти місцями та виконати обєднання інформації шляхом звязування. Результуючі таблиці “О4+Д4” та “Д4+О4” будуть відрізнятися тільки порядком розташування першого та третього полів, а також порядком розташування записів.

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

Контроль цілісності звязків

З перечислених видів звязку найбільш широко використовується звязок виду 1:М. Зязок виду 1:1 можна вважати окремим випадком звязку 1:М, коли одному запису основної таблиці відповідає один запис допоміжної таблиці. Зв Звязок М:1 по сутності є “дзеркальним відображенням звязку 1:М. Виз звязку М:М характеризується як слабкий вид звязку або навіть як відсутність звязку, тому далі не розглядатиметься.

Контроль цілісності звязків звичайно означає аналіз вмісту таблиць на дотримання таких правил:

  • Кожному запису основної таблиці відповідає нуль або більше записів допоміжної таблиці;
  • В допоміжній таблиці немає записів, в яких немає батьківських записів в основній таблиці;
  • Кожний запис допоміжної таблиці має тільки один батьківський запис основної таблиці;

Опишемо дію контролю цілісності при маніпулюванні даними в таблицях. Розглянемо три основних операції над даними двох таблиць:

  • Введення нових записів;
  • Модифікацію записів;
  • Видалення записів.

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

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

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

Редактування полів звязку основної таблиці треба проводити користуючись правилами:

  • Редактувати записи, які не мають підлеглих записів. Якщо є підлеглі записи, то блокувати модифікацію полів звязку.
  • Зміни в полях звязку основного запису миттєво передавати у всі поля звязку всіх записів допоміжної таблиці (каскадне відновлення).

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

Видалення записів основної таблиці логічно підчинити одному з наступних правил:

  • Видаляти можна запис, який не має підлеглих записів;
  • Блокувати видалення записів при наявності підлеглих записів, або видаляти її разом із всіма підлеглими записами (каскадне видалення).

Таблиця Основна1

* +

Поле11

Поле12

 

а

10

 

б

40

 

в

3

 

Таблиця Додаткова1

* +

Поле21

Поле22

а

стіл

в

книга

Таблиця Основна2

* +

Код

Вид пристрою

 
 

а

CD-ROM

 
 

б

CD-Recorder

 
 

в

Sound Blaster

 
 
 

Таблиця Додаткова2

* +

Код

Фірма-виробник

Наявність

а

Acer

так

а

Mitsumi

ні

а

NEC

так

а

Panasonic

так

а

Sony

так

б

Philips

ні

б

Sony

ні

б

Yamaha

так

в

Creative Labs

так

 

Таблиця ОсновнаЗ

*+

Поле11

Поле12

Поле13

деталь1

чавун

марка1

деталь1

чавун

марка2

деталь2

сталь

марка1

деталь2

сталь

марка2

деталь2

сталь

марка3

деталь3

алюміній

-

деталь4

чавун

марка2

 

Таблиця ДодатковаЗ

* +

Поле21

Поле22

Поле23

деталь1

4.03.98

90

деталь2

3.01.98

35

деталь3

17.02.98

90

деталь4

6.05.98

240

 

Таблиця Основна4

*+

Працюють

На верстаті

 

Іванов А.В.

Верстат1

 

Іванов А.В.

Верстат2

 

Петров Н. Г.

Верстат1

 

Петров Н.Г.

Верстат3

 

Сидоров В.К.

Верстат2

 

Таблиця Додаткова4

* +

Обслуговують

Верстат

Голубєв Б.С.

Верстат1

Голубєв Б.С.

Верстат3

Зиков А.Ф.

Верстат2

Зиков А.Ф.

Верстат3

 

Таблиця “Основна4+Додаткова4”

Робота

Верстат

Обслуговування

Іванов А.В.

Верстат1

Голубєв Б.С.

Іванов А.В.

Верстат2

Зиков А.Ф.

Петров Н. Г.

Верстат1

Голубєв Б.С.

Петров Н.Г.

Верстат3

Голубєв Б.С.

Петров Н.Г.

Верстат3

Зиков А.Ф.

Сидоров В.К

Верстат2

Зиков А.Ф.

 

Лекція №6 Лекція №4 Скачати лекцію

 

 

 

 
Hosted by uCoz