Міністерство освіти та науки України
Національний університет “Львівська політехніка”
Розроблення проекту бази даних
Microsoft SQL Server 2005
Інструкція до лабораторної роботи № 1
з курсу “Бази даних та знань”
для студентів базового напряму 6.0914
“Комп’ютеризовані системи, автоматика і управління”
та базового напряму 050201 “Системна інженерія”
Затверджено
на засіданні кафедри
“Комп’ютеризовані
системи автоматики”
Протокол № 5 від 06.11.2008
Львів 2008
Розроблення проекту бази даних Microsoft SQL Server 2005: Інструкція до лабораторної роботи № 1 з курсу “Бази даних та знань” для студентів базового напряму 6.0914 “Комп’ютеризовані системи, автоматика і управління” та базового напряму 050201 “Системна інженерія” / Укл.: У.Ю. Дзелендзяк, А.Г. Павельчак, В.В. Самотий – Львів: Львівська політехніка. – 2008. – 64 с.
Укладачі: У.Ю. Дзелендзяк, к.т.н., доцент
А.Г. Павельчак, к.т.н., ст. викладач
В.В. Самотий, д.т.н., професор
Відповідальний за випуск:
А.Й. Наконечний, д.т.н., професор
Рецензент: З.Р. Мичуда, д.т.н., професор
Мета роботи: ознайомитися зі структурою об’єктів баз даних Microsoft SQL Server 2005 та отримати навики розроблення проекту бази даних за допомогою інструментарію Management Studio.
1. Основні відомості про Microsoft SQL Server
Microsoft SQL Server – комерційна система керування базами даних, яка входить у трійку лідерів на ринку баз даних (судячи по об’єму продаж, IBM Informix займає перше місце, Oracle знаходиться дуже близько, а третє місце посідає Microsoft SQL Server). Базовий код MS SQL Server (до версії 7.0) ґрунтувався на коді Sybase SQL Server, і це дало можливість швидко вийти на ринок баз даних, де вже конкурували IBM, Oracle і, згодом, Sybase. Microsoft, Sybase та Ashton-Tate об’єдналися для створення та випуску першої версії програми, яка фактично була еквівалентом Sybase SQL Server 3.0 для Unix. У 1992 році була випущена версія 4.2, яка входила до складу операційної системи Microsoft OS/2. Одночасно з виходом Windows NT 3.1 з’явився реліз MS SQL Server 4.21 для цієї операційної системи. Версія MS SQL Server 6.0 створена була виключно для архітектури NT, і є самостійним релізом Microsoft. На цьому етапі компанії Sybase та Microsoft розійшлися, та займалися створенням власних моделей баз даних. Версія 7.0 була першим сервером баз даних зі справжнім графічним інтерфейсом адміністрування, а весь програмний код був переписаний (для уникнення порушень авторських прав щодо Sybase).
Таблиця 1.1. Версії Microsoft SQL Server
Версія
Рік
Повна назва
Кодове ім’я
1.0 (OS/2)
1989
SQL Server 1.0
-
4.2
1992
SQL Server 4.2
-
4.21 (Win NT)
1993
SQL Server 4.21
-
6.0
1995
SQL Server 6.0
SQL95
6.5
1996
SQL Server 6.5
Hydra
7.0
1998
SQL Server 7.0
Sphinx
–
1999
SQL Server 7.0 OLAP
Plato
8.0
2000
SQL Server 2000
(32-бітна версія)
Shiloh
8.0
2003
SQL Server 2000
(64-бітна версія)
Liberty
9.0
2005
SQL Server 2005
Yukon
10.0
2008
SQL Server 2008
Katmai
Великої популярності набула MS SQL Server 2000, як особливо стабільна та надійна система з мінімальними вимогами до ресурсів. До появи чергової версії, вона протрималася на ринку цілих шість років. Ця версія вже підтримувала XML (Extensible Markup Language, розширювана мова розмітки), одночасне функціонування багатьох копій сервера; була тісно інтегрована з Windows 2000, та автоматично реєструвалася в Active Directory; під керуванням Windows 2000 Datacenter могла використовувати до 32 процесорів та 64 Гбайт оперативної пам’яті; передбачено можливості масштабування (розподіл даних по декількох серверах) та покращена швидкодія.
Для наступної версії, MS SQL Server 2005, основним завданням ставилося покращити можливості масштабування та підвищення швидкодії (секціонування для таблиць та індексів, відключення індексів, збільшена кількість з 16 до 50 екземплярів SQL Server на одному комп’ютері, відкладене видалення та перебудова великих об’єктів, динамічні представлення й т.д.). Введені нові можливості системи безпеки (вбудовані засоби шифрування даних, розширені можливості роботи з логінами SQL Server, розділення користувачів та схем), системи реплікації, забезпечення безвідмовності (можливість створення, зміни та видалення індексів в оперативному режимі, виділене адміністративне підключення, дзеркальне відображення баз даних, контрольні суми для перевірки цілісності сторінок баз даних), введено підтримку XML як типу даних.
Для MS SQL Server 2008 було поставлено завдання зробити керування даними самоналаштовуваним, самоорганізованим та самопідтримуваним. Ця версія також включає підтримку структурованих і напівструктурованих даних, у тому числі цифрові медіа-формати для зображень, звуків, відео та інших мультимедійних даних. Ключовим нововведенням MS SQL Server 2008 є розвинені засоби керування ресурсами, що дають можливість ефективно керувати та розподіляти робоче навантаження за допомогою відстеження рівня завантаження процесора та об’єму пам’яті. Введено підтримку просторових даних.
Редакції MS SQL Server 2005.
Усього є 5 редакцій MS SQL Server 2005, дві з них постачаються в 32- та 64-розрядних версіях. У всіх редакціях присутні компоненти для встановлення як на сервері, так і на робочій станції. Вибір редакції залежить від апаратних та фінансових можливостей, та потреб замовника.
Таблиця 1.2. Порівняння редакцій Microsoft SQL Server 2005
Редакція
Ціна*
Enterprise Edition (32- та 64- розрядні версії). Найповніша версія продукту з підвищеною продуктивністю та розширеним набором функцій. Здатна підтримувати тисячі підключень та баз даних, що вимірюються в терабайтах. Для досягнення такого рівня продуктивності необхідні й відповідні комп’ютери – як мінімум, з 16-ма двоядерними процесорами, 32 Гбайтами пам’яті та потужними мережевими платами. Встановлюється лише на серверні операційні системи починаючи з Windows 2000 Server.
$ 24 700
Standard Edition (32- та 64- розрядні версії). Має всі основні функції сервера: служби інтеграції та аналізу, Web-служби, дзеркальне відображення баз даних та кластеризацію. Підтримує лише 4 процесори, однак не має обмежень на пам’ять. У такій конфігурації сервер здатний обслуговувати 500 одночасних підключень та терабайтну базу даних.
Однак на відміну від Enterprise Edition, ця версія не може здійснювати ряд операцій (з індексами, дзеркальне резервне копіювання, додавання оперативної пам’яті й т.п.) в оперативному режимі, тобто без відключення користувачів чи без відключення сервера. Також відсутнє секціювання таблиць та індексів
$ 6 060
Workgroup Edition (32-розрядна версія). Ця редакція є ще більш спрощеною в порівнянні зі Standard Edition. Підтримує 2 процесори та 3 Гбайти пам’яті, однак не має обмежень на розмір бази даних. У такій конфігурації сервер здатний обслуговувати до 100 активних користувачів.
На відміну від Standard Edition, не підтримується кластеризація та дзеркальне відображення баз даних, відсутня служба бізнес-аналізу, служба інтеграції.
$ 3 900
Developer Edition (32- та 64- розрядні версії). Включає всі можливості Enterprise Edition, але ліцензується лише для розроблення програмного забезпечення та тестування. Запускається в операційних системах, призначених для робочих станцій, наприклад, Windows NT Workstation, Windows 2000 Prof. та Windows XP Prof.
$ 50
Express Edition (32-розрядна версія). Повноцінна версія ядра SQL Server, що призначена для використання з певним програмним забезпеченням у якості клієнтської чи основної серверної бази даних. Підтримує 1 процесор, 1 Гбайт пам’яті, обмеження розміру бази даних становить 4 Гбайти.
Безкошт.
* Ціни приблизні та наведені для порівняння вартості ліцензій різних редакцій із розрахунку на один процесор.
2. Проектування бази даних
2.1. Створення бази даних.
Основним графічним інструментом проектування баз даних в MS SQL Server 2005 є компонент Management Studio (Express). При запуску цієї програми відобразиться діалогове вікно Connect to Server (з’єднання із сервером) (рис. 2.1).
Рис. 2.1. Діалогове вікно Connect to Server
Поле Server type (тип сервера) дає можливість вибрати одну з декількох підсистем SQL Server (ядро бази даних чи відповідна служба), у яку повинен зайти користувач.
У полі Server name (ім’я сервера) відображається ім’я сервера, до якого необхідно підключитися. Як правило, з’єднання встановлюється з екземпляром за замовчуванням. Якщо необхідно з’єднатися з іншим екземпляром, тоді слід вибрати його у випадаючому списку. Якщо ж підключення до даного екземпляра здійснюється вперше, тоді в цьому випадаючому списку треба вибрати опцію <Browse for more> (огляд далі), та в наступному діалоговому вікні вибрати необхідний екземпляр.
У полі Authentication (перевірка автентичності) може бути вибраний один із двох варіантів перевірки автентичності користувача – Windows Authentication (перевірка автентичності Windows) та SQL Server Authentication (перевірка автентичності SQL Server). Перший варіант передбачає, що облікові записи користувачів Windows відображаються на облікові записи користувачів SQL Server. При спробі користувача зареєструватися в SQL Server, інформація про нього перевіряється в домені Windows та відображається на ролі, відповідно до облікового запису, а ролі вказують, які дозволяється користувачу виконувати дії. При використанні варіанту організації захисту на основі параметру SQL Server Authentication повністю ігноруються права, надані користувачу в мережі, а беруться до уваги лише ті, що явно задані в системі SQL Server. Для цього користувач повинен задати ім’я облікового запису та пароль, що відносяться до SQL Server.
СТВОРЕННЯ З’ЄДНАННЯ:
У полі Server type (тип сервера) вибираємо значення Database Engine (рис. 2.1).
У полі Server name (ім’я сервера) залишаємо ім’я сервера за замовчуванням.
У полі Authentication (перевірка автентичності) вибираємо варіант Windows Authentication або SQL Server Authentication (вводимо ім’я користувача sa та його пароль).
Натискаємо кнопку Connect (з’єднати).
Після запуску програми Management Studio та розгортання вузлів Оглядача об’єктів вигляд буде схожим як на рис. 2.2.
Рис. 2.2. Загальний вигляд Management Studio
Як бачимо, у вікні Object Explorer (оглядач об’єктів) у вузлі Databases (бази даних) присутня папка з набором системних баз даних: master – основна службова база даних усього сервера, в якій зберігаються налаштування його роботи, список баз даних на сервері з їхніми налаштуваннями, інформація про облікові записи користувачів для підключення до сервера і т.п.; model – шаблонна база даних для створення нових баз даних в SQL Server; msdb – база даних для зберігання службової інформації (служби SQL Server Agent, історії резервного копіювання тощо); tempdb – база даних для зберігання тимчасових таблиць та збережених процедур, проміжних даних при перебудові індексів. Також існують ще й додаткові системні бази даних, які є прихованими для очей користувачів та адміністраторів.
СТВОРЕННЯ БАЗИ ДАНИХ:
Натиснути правою кнопкою миші на вузлі Databases (бази даних) (рис. 2.2) та в контекстному меню вибрати команду New Database… (створити базу даних…).
У відкритому діалоговому вікні ввести ім’я для нової бази даних (рис. 2.3).
Вказати шлях на диску для розміщення файлів бази даних та журналу.
Натиснути кнопку ОК.
Рис. 2.3. Діалогове вікно для створення нової бази даних
При створенні бази даних, створюються файли самої бази даних та файли журналів транзакцій. Файл журналу транзакцій містить послідовний запис усіх змін, що вносяться в базу даних. Мінімальний набір файлів для будь-якої бази містить один файл для самої бази даних та один файл для журналу транзакцій. У кожній базі обов’язково є один основний файл, з розширенням *.mdf за замовчуванням. Вторинні файли бази даних мають розширення *.ndf, а для журналів транзакцій використовуються розширення *.ldf.
Наступний момент при створенні бази даних пов’язаний із вибором розміру файлів бази даних та журналів транзакцій. Звичайно, розмір файлів баз даних залежить від поставленої задачі. Можна одразу створити великі файли баз даних, або налаштувати для них режим автоматичного приросту. Як правило, рекомендують одразу створювати файли максимального розміру (або, принаймні, налаштувати автоматичний приріст великими частинами в декілька гігабайт). Такий підхід знижує фрагментацію файлів баз даних, підвищуючи тим самим продуктивність.
При створенні файлу бази даних можна також вказати, до якої файлової групи він буде відноситися. Файлова група – це спосіб організації файлів бази даних. За замовчуванням для будь-якої бази даних створюється файлова група PRIMARY, і всі створювані файли бази даних за замовчуванням будуть відноситися до неї. При необхідності можна створити додаткову файлову групу у вкладці Filegroups (файлові групи) (рис. 2.3 – А). Файлові групи використовуються при оптимізації резервного копіювання. Наприклад, якщо базу даних можна умовно поділити на дві частини: користувацькі таблиці, які є невеликими і постійно змінюються, та таблиці довідника, що змінюються дуже рідко, але є великого розміру. У цьому випадку виконувати резервне копіювання важливо саме для користувацьких таблиць. Для цього створюють додаткову файлову групу, наприклад, USERS, далі створюють новий файл даних, наприклад, users.ndf, та призначають його до цієї групи. Файловій групі можна також призначати користувацькі таблиці та індекси. Тепер можна виконувати резервне копіювання окремих файлових груп із різним розкладом, наприклад, для файлової групи USERS проводити кожного дня, а для групи PRIMARY раз у місяць. Інші ситуації, для яких можна застосувати додаткові файлові групи – ручний розподіл навантаження на дисковій підсистемі (наприклад, часто використовувані дані розмістити на швидкому диску, а інші на звичайному); розпаралелення запитів у дисковій підсистемі (розмістивши таблицю та її індекси в різних файлових групах) тощо.
Важливим моментом при створенні бази даних є вибір режиму її відновлення. Цей параметр вибирається у вкладці Option (параметри) (рис. 2.3 – А). Передбачено три режими відновлення бази даних:
Full (режим повного протоколювання) – у журнал записується максимальна кількість операцій. Журнал транзакцій автоматично не обрізується. Цей режим забезпечує максимальні можливості відновлення (за рахунок зниження продуктивності). Лише в цьому режимі можна використовувати дзеркальне відображення баз даних.
Bulk-logged (режим неповного протоколювання) – компромісне рішення між вимогами продуктивності та можливостями відновлення. У цьому режимі практично відключається запис у журнал для операцій масового вставлення, вставлення/зміни великих двійкових даних, операцій по створенню, перебудові та видаленню індексів.
Simple (проста модель відновлення) – максимальний виграш у продуктивності за рахунок можливостей відновлення. Мінімально протоколюються ті ж операції, що й у режимі Bulk-logged, а крім того, журнал транзакцій автоматично очищується. Однак, у цьому режимі не можливо використати журнал для відновлення бази даних .
У вкладці Option (параметри) (рис. 2.3 – А) знаходиться також ряд додаткових параметрів, інформацію про які можна знайти у [2].
2.2. Створення схем бази даних.
Схеми – це контейнери для об’єктів, або, як їх ще називають, простори імен. Схеми використовують для спрощення керування даними та створення підмножини об’єктів, якими можна керувати як єдиним цілим. Такий підхід є особливо зручним, коли над проектуванням бази даних працюють декілька проектантів, і тоді виключається ситуація зі співпадіннями назв певних об’єктів (об’єкти кожного проектанта можуть бути прив’язані до певної схеми). Для звертання до об’єктів у схемах необхідно вказувати двоскладовий ідентифікатор у вигляді SchemaName.ObjectName. Якщо необхідно звертатися до об’єктів іншої бази даних, тоді слід використовувати трискладовий ідентифікатор у вигляді DatabaseName.SchemaName.ObjectName.
Якщо для об’єктів явно не вказують приналежність до конкретної схеми, тоді вони за замовчуванням відносяться до схеми dbo. Використання схеми за замовчуванням дає можливість звертатися до об’єктів за їхніми назвами (розширення схеми додається автоматично).
Рис. 2.4. Створення нової схеми
СТВОРЕННЯ СХЕМИ:
У панелі Object Explorer (оглядач об’єктів) для вибраної бази даних розкрити вузли, як на рис. 2.4а, та вибрати в контекстному меню команду New Schema… (створити схему).
У діалоговому вікні Schema – New (схема - створити) у полі Schema name (ім’я схеми) ввести ім’я, а поле Schema owner (власник схеми) можемо залишити пустим (рис. 2.4б).
Натиснути кнопку ОК.
Якщо явно не задати власника схеми, то за замовчуванням власником стане роль dbo, яка асоціюється з користувачем, що створив цю базу даних.
2.3. Створення таблиць бази даних.
Найближчим аналогом таблиці бази даних можна вважати лист електронної таблиці Microsoft Excel. При роботі з листом таблиці інформацію вводять у стрічки та стовпці. Також в електронних таблицях, як правило, є заголовки стовпців, згідно яких можна судити про вид інформації в них. Однак, на відміну від електронних таблиць, таблиці баз даних мають певні строгі обмеження відносно даних, які можна вводити в стовпці. В SQL Server така структура даних забезпечується за рахунок використання типів даних та властивостей стовпців. У таблиці 2.1 наводяться основні типи даних та їхні характеристики.
Таблиця 2.1. Вбудовані типи даних Microsoft SQL Server 2005
Тип даних
Діапазон – опис
Розмір
у байтах
Цілочисельні типи
bit
0, 1 або NULL
1 байт на кожні 8 стовпців
bigint
від -263 до 263-1
8
int
від -231 (-2 147 483 648)
до 231-1 (2 147 483 647)
4
smallint
від -215 (-32 768) до 215-1 (32 767)
2
tinyint
від 0 до 255
1
Десяткові типи
decimal (p, s);
numeric (p, s)
від -1038 до 1068-1
де p – точність (макс. к-сть цифр у числі), s – степінь (к-сть цифр після коми).
Наприклад, для числа 5 123,845: p=7; s=3;
від 5
до 17
Числові типи з плаваючою комою
float
від -2,23∙10308 до 2,23∙10308
8
real
від -3,4∙1038 до 3,4∙1038
4
Фінансові типи
money
від -922 337 203 685 477,5808
до 922 337 203 685 477,5807
8
smallmoney
від -214 748,3648 до 214 748,3647
4
Типи даних «Дата і час»
datetime
З 01.01.1753р. до 31.12.9999р.
з точністю до 3,33 мсек.
8
smalldatetime
З 01.01.1900р. до 06.06.2079р.
з точністю до 1 хв.
4
Символьні / текстові типи
char (n)
n= 1 ÷ 8 000 символів ANSI.
Розмір фіксований. Недозаповнені поля доповнюються пробілами.
1 для кожного символу
varchar (n)
n= 1 ÷ 8 000 символів ANSI.
Розмір змінний
(пробілами не доповнюється).
1 для кожного символу + 2-байт-ний вка-зівник
varchar (max)
До 2 147 483 647 символів ANSI.
Розмір змінний (до 2 Гбайт).
text
До 2 147 483 647 символів ANSI.
Розмір змінний (до 2 Гбайт).
1 для кожного символу
nchar (n)
n= 1 ÷ 4 000 символів UNICODE;
розмір фіксований; недозаповнені поля доповнюються пробілами.
2 для кожного символу
nvarchar (n)
n= 1 ÷ 4 000 символів UNICODE;
розмір змінний
(пробілами не доповнюється)
2 для кожного символу + 2-байт-ний вка-зівник
nvarchar (max)
До 1 073 741 823 символів UNICODE;
розмір змінний (до 2 Гбайт).
ntext
До 1 073 741 823 символів UNICODE.
Розмір змінний (до 2 Гбайт)
2 для кожного символу
Бінарні типи
binary (n)
n= 1 ÷ 8000 байт;
бінарні дані фіксованої довжини
1 – 8000
varbinary (n)
n= 1 ÷ 8000 байт;
бінарні дані змінної довжини
1 – 8000
+ 2-байт-ний вка-зівник
varbinary (max)
Бінарні дані змінної довжини;
максимум до 2 147 483 647 байтів
До 2 Гб
+ 2-байт-ний вка-зівник
image
Бінарні дані змінної довжини;
максимум до 2 147 483 647 байтів
До 2 Гб
Спеціальні типи
timestamp
Унікальне значення в межах БД,
що вказує на порядок змін;
генерується автоматично
8
uniqueidentifer
Глобальний унікальний ідентифікатор (Globally Unique Identifier – GUID)
16
sql_variant
Дає можливість зберігати в одному стовпці дані різних типів (за винятком text, ntext, image, timestamp, xml, varchar(max), varbinary(max), nvarchar(max) )
до 8000
xml
Символьне поле, що зберігає XML-дані
до 2 Гб
Числові типи із плаваючою комою float і real рекомендують використовувати лише тоді, коли вхідні дані виходять за границю діапазонів точних числових типів даних decimal (numeric).
Типи даних money і smallmoney призначені для зберігання грошових значень, однак, через їхнє обмеження в чотири десяткових розряди після коми, вони рідко використовуються у фінансових програмах. Дані програми вимагають виконання розрахунків із точністю до 6, 8, а іноді 12 знаків після коми, і тому, замість фінансових типів, використовують decimal (numeric).
Серед символьних типів є, на перший погляд, чимало однотипних, і відмінності між ними, хоча й ледве помітні, але дуже важливі. Тип даних char як в ANSI, так і в UNICODE має фіксований розмір. Тому для нього потрібно однаковий об’єм пам’яті при довільній кількості символів, що зберігаються в стовпці. Наприклад, стовпець із типом даних char(30) займає 30 байт пам’яті незалежно від того, зберігається в ньому один символ чи тридцять, а невикористана пам’ять доповнюється пробілами. А для зберігання кожного символу в стовпці з типом даних varchar(30) необхідно лише один байт.
Типи даних text і ntext призначені для зберігання великих масивів символьних даних. Однак ці типи мають ряд обмежень: до них неможна застосовувати оператор рівності чи операцію об’єднання; багато системних функцій не можуть працювати із цими типами даних. Через ці обмеження в SQL Server 2005 були введені типи даних varchar(max) і nvarchar(max), які об’єднують можливості попередніх, можуть зберігати до 2 Гб даних та не мають обмежень щодо їхнього використання з різними операціями та функціями.
Типи даних binary/varbinary переважно використовують для збереження групи невеликих файлів розміром 4-6 Кб, що містять різні дані в двійковому форматі. Тип даних image дає можливість зберігати не лише фотографії, але й довільні документи Word, Excel, PDF тощо, довільні файли, розмір яких не перевищує 2 Гб. Для усунення обмежень, що накладаються на тип даних image при використанні з різними операціями та функціями, у SQL Server 2005 був введений тип даних varbinary(max), що теж дає можливість зберігати об’єм даних до 2 Гб.
Рис. 2.5. Створення нової таблиці
СТВОРЕННЯ ТАБЛИЦІ:
У панелі Object Explorer (оглядач об’єктів) для вибраної бази даних розкрити вузли, як на рис. 2.5а, та в контекстному меню вузла Tables (таблиці) вибрати команду New Tables… (створити таблицю), після чого відкриється вікно Table Designer (конструктор таблиць) (2.5б).
Вписати назву таблиці в поле Name (ім’я), що розміщене на панелі Properties (Властивості).
Вибрати приналежність таблиці до певної схеми з випадаючого списку поля Schema (схема), що розміщене на панелі Properties (Властивості).
Вибрати файлові групи, у яких зберігатимуться дані цієї таблиці.
Сформувати стовпці таблиці, задаючи ім’я стовпця, його тип даних та дозвіл на NULL.
За допомогою вкладки Column Properties (властивості стовпців) задати значення властивостей стовпців таблиці.
Зберегти таблицю.
Приналежність до заданих файлових груп визначається окремо для звичайних даних і окремо для великих об’єктів:
Для визначення місця зберігання звичайних даних розкрийте вузол розділу Regular Data Space Specification (специфікація звичайного простору даних) (рис. 2.5б, п.4) і у випадаючому списку File or Partition Scheme Name (ім’я групи файлів чи схеми розділів) виберіть необхідну групу файлів.
Для визначення місця зберігання даних великих об’єктів виберіть необхідну групу файлів із випадаючого списку поля Text/Image Filegroup (група файлів Text/Image).
Спеціальна конструкція null, що означає «невідомий» чи «відсутній», дає можливість зберігати в стовпці пусті значення. null не є значенням, і тому не потребує пам’яті для свого збереження. Якщо ж дозвіл на null не встановлений, то це вимагає від користувача обов’язкового введення значення в зазначений стовпець.
Набір властивостей вкладки Column Properties (властивості стовпців)
Name (Ім’я) – ім’я стовпця.
Allow Nulls (Дозволити значення null) – дозволяє або забороняє значення null.
Length (Довжина) – вказує число символів, дозволених для символьних типів даних.
Default Value or Binding (значення або прив’язування за замовчуванням) – виводить значення за замовчуванням, яке встановлюється, коли в стовпець не було нічого введено. Значення за замовчуванням може бути введено у вигляді тексту або ж вибране з випадаючого списку, де відображаються всі глобальні значення за замовчуванням, що визначені в базі даних.
Precision (точність) – вказує максимальну кількість цифр у значеннях стовпця з типом decimal.
Scale (масштаб) – вказує максимальну кількість цифр справа від десяткової коми в значеннях стовпця з типом decimal.
Computed Column Specification (специфікація обчислюваного стовпця) – виводить інформацію про стовпець, що містить результат обчислень із використанням даних інших стовпців таблиці. У полі (Formula) [(формула)] задається вираз, згідно якого обчислюється значення для стовпця. В якості цього виразу може бути довільне коректне поєднання операторів, функцій, констант та значень інших стовпців цієї таблиці (оператори та функції наводяться в табл. 3.1). Поле Is Persisted (є збережуваним у базі даних) вказує чи зберігаються результати обчислень у базі даних (значення Yes (так) ), чи в базі зберігається лише формула (значення No (ні) ), а самі значення обчислюються лише при звертанні до цього стовпця.
Identity Specification (специфікація ідентифікуючого стовпця) – виводить інформацію про стан стовпця в режимі автоматичного генерування унікальних числових ідентифікаторів стрічок. Для включення стовпця в режим ідентифікації необхідно встановити в його полі (Is Identity) [(є ідентифікуючим стовпцем)] значення Yes (так), у полі Identity Increment (початкове значення) задати вихідне значення, а в Identity Seed (приріст) – значення інкременту. Вихідне значення – це початкове значення, що встановлюється для найпершої стрічки таблиці, а інкремент визначає, наскільки SQL Server збільшує (зменшує) цю початкову величину при генеруванні кожного наступного значення. Ця властивість доступна лише для цілочисельних типів, а для використання з типами decimal та numeric необхідно встановити нуль розрядів після коми.
Collation (таблиця сортування) – задає порядок сортування стовпця, який використовується SQL Server при сортуванні стрічок результатів запиту.
RowGuid (ідентифікатор GUID стрічки) – вказує на наявність глобальних унікальних ідентифікаторів стрічок; може бути застосованим лише для стовпців із типом даних uniqueidentifer. GUID формується на основі номера мережевої плати, унікальність якого гарантується виробниками в найближчі 100 років.
2.4. Створення ключів та реалізація обмежень бази даних.
Є декілька різних типів ключів:
Первинний – містить первинний вказівник на стрічку в таблиці;
Альтернативний – містить додаткові вказівники на стрічку в таблиці, довільні унікальні умови, що представляють один чи більшу кількість стовпців таблиці.
Зовнішній – містить вказівники на ключі в інших таблицях.
Первинні та альтернативні ключі – гібридні об’єкти: частково індекси, а частково обмеження. Обмеження оголошують, що для об’єкта повинен бути істинним певний фактор, а для ключів це означає, що значення в таблиці повинні бути унікальними.
Індекси дають можливість організувати швидкий доступ до даних без пошуку по всій базі даних. Індекси керуються та зберігаються окремо від таблиць. Для побудови індексів SQL Server використовує структуру В-дерева (B-tree, Balanced-tree), що складається з кореня, проміжних вузлів та кінцевих вузлів (листків). Деревовидна структура дає можливість організувати швидкий та ефективний пошук, в іншому ж випадку, серверу довелось би почергово зчитувати кожну сторінку даних таблиці в пошуку потрібного запису. Проіндексованим може бути як окремий стовпець, так і сукупність вибраних стовпців.
За своєю структурою індекси поділяються:
Кластерний індекс зберігає сторінки даних таблиці на рівні листків В-дерева, при цьому дані фізично впорядковані згідно ключа. Для кожної таблиці можна визначити лише один кластерний індекс (!!!). При створенні такого індексу відбувається фізичне сортування даних у відповідності до індексу, та перебудова всіх некластерних індексів. Як правило, кластерні індекси створюють для первинних ключів, хоча можуть бути створені й для довільного стовпця. Оптимальним варіантом вважають такий, коли індексовані значення для кластерного ключа унікальні. Якщо ж значення не унікальні, тоді SQL Server створює додаткові ключі сортування для стрічок, що мають дублікати для основних ключів сортування.
Некластерний індекс на рівні листків В-дерева містить вказівник на стрічку даних, що відповідає ключу в індексі. Якщо таблиця вже має кластерний індекс, тоді вказівник вказує на його ключ, а не на дані. Якщо ж кластерний індекс відсутній, тоді вказівник вказує на реальну стрічку даних. При створенні некластерного індексу SQL Server створює необхідні сторінки індексу, але не змінює фізичного розташування табличних даних, і не видаляє інші індекси таблиці. Кожна таблиця може мати до 249 некластерних індексів.
Вибір стовпців для індексування. Варто пам’ятати, що застосування індексів не тільки пришвидшує пошук необхідної інформації, але й, у свою чергу, вимагає накладних витрат: оперативної пам’яті, місця на диску, машинного часу. Кожного разу, коли відбуваються довільні зміни в індексованих стовпцях, також змінюється й індекс. При одиночній зміні цей час незначний, однак чим активніша система, тим більше це зачіпає продуктивність. У табл. 2.2 наводяться рекомендації щодо вибору стовпців для індексації, а у табл. 2.3 – відносно використання кластерних чи некластерних індексів.
Таблиця 2.2. Рекомендації по створенню індексів
Індексувати
Не індексувати
Таблиці з великою кількістю стрічок
Стовпці, що часто використовуються в запитах
Стовпці, що зберігають широкий діапазон значень і мають високу ймовірність бути вибраними в типовому запиті
Стовпці, що використовуються в реченнях GROUP BY
Стовпці, що використовуються в реченнях ORDER BY
Стовпці, що використовуються у з’єднанні таблиць
Таблиці з невеликою кількістю стрічок
Стовпці, що рідко використовуються в запитах
Стовпці, що зберігають широкий діапазон значень і мають низьку ймовірність бути вибраними в типовому запиті
Стовпці, що мають великий розмір у байтах
Таблиці, де дані часто змінюються, але рідко зчитуються
Таблиця 2.3. Рекомендації по кластеризації індексів
Кластеризувати індекс для
Не кластеризувати індекс для
Первинних ключів, що часто використовуються при пошуку, наприклад, номера рахунків
Запитів, що повертають численні результуючі набори
Стовпців, що використовуються в численних запитах
Стовпців із високою селективністю
Стовпців, що використовуються в реченнях GROUP BY чи ORDER BY
Стовпці, що використовуються у з’єднанні таблиць
Первинних ключів, що зберігають послідовні значення ідентифікаторів, наприклад, ідентифікаційних стовпців
Запитів, що повертають невеликі результуючі набори
Зовнішніх ключів
Обмеження – це формулювання певних вимог до даних. Обмеження встановлюються на рівні стовпця чи таблиці та забезпечують відповідність даних визначеним правилам забезпечення їхньої цілісності.
Серед методів реалізації обмежень розрізняють такі:
PRIMARY KEY – обмеження первинного ключа.
FOREIGN KEY – обмеження зовнішнього ключа.
UNIQUE – обмеження унікальності, або альтернативного ключа.
CHECK – обмеження перевірки.
DEFAULT – обмеження заданих за замовчуванням значень.
Правила.
Також ще до цих методів відносять задані за замовчуванням значення на рівні таблиці, тригери та збережувані процедури.
Способи іменування ключів та обмежень. Імена ключів та обмежень у системі SQL Server можуть бути довільними, у межах загально дозволеного іменування. Система генерує імена таким чином: скорочена абревіатура у виді двох букв + назва таблиці + унікальне доповнення:
PK_TableName_Definition – первинний ключ;
IX_TableName_Definition – унікальний ключ / індекс;
FK_TableName_Definition – зовнішній ключ;
CK_TableName_Definition – обмеження перевірки;
Таке позначення є прийнятним і зрозумілим. SQL Server як Definition генерує унікальне значення, а в графічній компоненті розробника Management Studio задаються порядкові номери. Проектанти баз даних, як правило, розшифровують його – вказують коротке формулювання його призначення, або вказують ім’я (імена) стовпця (стовпців), на який цей ключ чи обмеження поширюється.
2