Лекція 5. ІНДЕКСИ. ВЛАСНІ ТИПИ. ДІАГРАМА

Сайт: Навчально-інформаційний портал НУБіП України
Курс: Організація баз даних (КН+ІПЗ). Ч2☑️
Книга: Лекція 5. ІНДЕКСИ. ВЛАСНІ ТИПИ. ДІАГРАМА
Надруковано: Гість-користувач
Дата: середа, 11 березня 2026, 04:50

1. Індекси

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

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

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

На мові SQL формат оператора для створення індексів такий:

CREATE INDEX name_index ON name_table  

Рис.1 Діаграма демонстраційної БД «Pubs»

Для видалення індексу  використовується команда:

DROP INDEX 'table.index | view.index.

В межах Enteprise Manager можна створювати індекси, редагувати їх та видаляти. Виконуються  такі дії за допомогою так званого менеджера індексів. Для активізації менеджера необхідно вибрати необхідну таблицю або уявлення, натиснути праву кнопку миші та вибрати рядок All Tasks->Manage Indexes.

2. Типи індексів

Типи індексів.

  1. Простий індекс – це такий індекс, який створюється для одного стовпчика таблиці. Синтаксис для створення простого індексу такий:

CREATE INDEX name_index ON name_table (name_column).
Наприклад, створення індексу index_pubs в БД Pubs для таблиці Titles, стовпця Title:
create  index   pubs_ind   on   titles (title)

  1. Унікальний індекс – це такий індекс, який не дозволить ввести у таблицю дублікати записів. Синтаксис для створення унікального індексу такий:
    CREATE UNIQUE INDEX name_index ON name_table (name_column).
  2. Складений індекс – це індекс, який складається з декількох стовпців таблиці. Синтаксис такий:
    CREATE INDEX name_index ON name_table (name_column1, name_column2).
  3. Неявні індекси – це індекси, які створюються автоматично сервером БД: для стовпців-первинних клчів та для стовпців, що мають обмеження унікальності.

3. Діаграми

Перш ніж визначитися з діаграмою, розглянемо ще одне формальне визначення таблиць.

Таблиця – це колекція екземплярів даних, які мають декілька загальних атрибутів, згрупованих за рядками та стовпцями. Ще одна трактовка поняття таблиці полягає в тому, що таблиця – це сукупність практично значущих даних (такі об’єкти БД мають назву “сутності“), які об’єднуються зв’язками з інформацією, яка розміщена в інших таблицях. Зображення різних сутностей (екземплярів даних) та зв’язків (батьківсько-дочірні залежності між екземплярами даних) називають діаграмами «сутність-зв’язок» (або ER-діаграмами, скорочено - ERD).

Зв’язки поділяються на три основні типи:

  1. «Один до одного». Такий зв’язок ставить у відповідність рядку в одній із таблиць тільки один рядок із іншої таблиці, та, навпаки, - рядку із іншої таблиці ставить у відповідність тільки один рядок із першої таблиці. Може використовуватися у тих випадках, коли є необхідність дробити одну таблицю на декілька з одним ключовим полем (наприклад, для отримання нормальної форми вищого порядку або зменшення об’єму таблиці).

Зв‘язок «один до одного» вимагає одночасної появи записів з однаковим значенням ключових полів в обох таблицях. Іншими словами, необхідно дотримуватись так званої цілісності за посиланням, що, в свою чергу, означає залежність значень стовпця однієї таблиці від значень стовпця іншої таблиці. Для зв’язку, який розглядається, цілісність забезпечується за допомогою ключових полів. Але одночасно реалізувати операцію введення, редагування або видалення для таких таблиць на практиці важко.

Замість зв’язку «один до одного» СУБД SQL Server дозволяє реалізувати зв’язок «нуль або один до одного». Іншими словами, дозволяється на одній із сторін зв’язку наявність або відсутність рядка, що відповідає рядку в другій таблиці. Такий зв’язок дозволяє ввести рядок тільки в одну із таблиць, не вводячи відповідний рядок у другу таблицю.

  1. «Один до багатьох». Такий зв’язок ставить у відповідність рядку в одній із таблиць багато рядків із іншої таблиці, а рядку із іншої таблиці ставить у відповідність тільки один рядок із першої таблиці. Такі зв’язки реалізуються за допомогою зовнішнього ключа.

Як правило, зовнішній ключ – це стовпець таблиці, який безпосередньо посилається на ключ іншої таблиці з метою забезпечення цілісності за посиланням.

СУБД SQL Server дозволяє також реалізувати зв’язки «один до одного або багатьох» та «один до нуля, одного або багатьох».

  1.    «Багато до багатьох». Такий зв’язок ставить у відповідність рядку в одній із таблиць багато рядків із іншої таблиці, таа рядку із іншої таблиці ставить у відповідність багато рядків із першої таблиці.

В СУБД SQL Server не передбачена реалізація такого зв’язку напряму. Зв’язок здійснюється за допомогою проміжної таблиці.

До комплекту програмних засобів SQL Server входить  інструментальний засіб побудови діаграм. Для цього необхідно натиснути правою кнопкою миші на вузлі Diagrams, який має відношення до тієї БД, для якої будуються діаграми. Далі необхідно вибрати опцію New Database Diagram. У вікні, що з’явиться, виконати команду Add Table для всіх таблиць, які необхідно добавити до діаграми. Діаграма зберігається як окремий об’єкт з власною назвою.

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

У разі необхідності діаграму можна видалити (права кнопка миші – «Delete»).

4. Типи даних користувачів

Типи даних користувачів надають можливість будувати власні типи даних на основі вже існуючих. Для створення такого типу даних використовується в мові SQL оператор CREATE TYPE. MS SQL Server не підтримує цей оператор. Для створення типів даних користувачів використовується системна процедура sp_addtype:

Sp_addtype [ @typename = type,
    [ @phystype = ] system_data_type
    [ @nulltype = 'null_type]
    [ , [ @owner = 'owner_name].

Як базові системні типи можна використовувати ті, що представлені в наступній таблиці:

'binary( )'

image

smalldatetime

Bit

int

smallint

'char( )'

'nchar( )'

text

Datetime

ntext

tinyint

Decimal

numeric

uniqueidentifier

'decimal[]'

'numeric) ]'

'varbinary( )'

Float

'nvarchar( )'

'varchar( )'

'float( )'

real

 

 

Третій параметр визначає, чи можуть дані цього типу мати значення NULL.

Останній параметр вказує власника цього типу. Якщо цей параметр опущений, за замовченням приймається як власник поточний користувач.

Приклади створення типів даних користувача для БД PUBS.

Для виклику системної процедури використовується оператор EXEC.

1. EXEC sp_addtype 'empid', 'char (9)', 'not null'

    GO

 

2. EXEC sp_addtype 'id', 'varchar (11)', 'not null'

    GO

 

3. EXEC sp_addtype 'tid', 'varchar (6)', 'not null'

    GO

Також можна створювати типи даних, використовуючи інструментарій Enterprise Manager. Для цього вибирається вузол User Defined Data Types відповідної БД. Натиснувши на праву кнопку миші, із списку, що з’явився, необхідно вибрати команду New User Defined Data Type. На наступних кроках заповнюється уся необхідна для створення нового типу інформація.

Для видалення нового типу використовується процедура:

sp_droptype [ @typename = 'type'

В середовищі Enterprise Manager також можна видалити новий тип даних – права кнопка миші на типі, команда «Delete».


Доступність

Шрифти Шрифти

Розмір шрифта Розмір шрифта

1

Колір тексту Колір тексту

Колір тла Колір тла

Кернінг шрифтів Кернінг шрифтів

Видимість картинок Видимість картинок

Інтервал між літерами Інтервал між літерами

0

Висота рядка Висота рядка

1.2

Виділити посилання Виділити посилання

Вирівнювання тексту Вирівнювання тексту

Ширина абзацу Ширина абзацу

0