Короткі теоретичні відомості. Процес створення бази даних у системі SQL-сервер складається з двох етапів: створення власне бази даних і її журналу транзакций
Процес створення бази даних у системі SQL-сервер складається з двох етапів: створення власне бази даних і її журналу транзакций. Дана інформація розміщається у відповідних файлах, що має розширення *.mdf для бази даних і *.ldf -для журналу транзакций. У файлі бази даних записується інформація про основні її об'єкти - таблицях, індексах і т.д., а у файл журналу трансакцій інформація про процес роботи з трансакціями (контроль цілісності даних, стан бази даних до і після виконання трансакції).
Створення бази даних у системі SQL-сервер може здійснюватися такими способами:
• за допомогою команди CREATE DATABASES.
• за допомогою утиліти SQL Server Enterprise Manager.
Для створення бази даних за допомогою SQL Server Enterprise Manager на першому етапі необхідно виконати деяке настроювання самої утиліти. Для цього, після її запуску, виберіть у лівому списку об'єктів групу SQL Server Group, у якій клацніть на імені необхідного SQL-сервера. Після цього, скориставшись командою Edit SQL Server Registration properties меню Action, установите наступні настроювання підключення утиліти до даного SQL-сервера.
Server - за допомогою цього списку визначається база даних, для якої відбувається настроювання;
Use Windows NT authentication - при підключенні утиліти до SQL-сервера в якості імені і пароля користувача передаються ім'я і пароль облікового запису користувача в системі Windows NT;
Use SQL Server authentication - настроювання імені і пароля користувача SQL-сервера. При цьому в полючи Login Name і Password варто ввести відповідно ім'я і пароль зареєстрованого користувача SQL-сервера. Для підвищення безпеки або у випадку, коли комп'ютером, на який установлений SQL-сервер, користуються кілька людей, можна установити опцію Always prompt for login and password, що дозволить щораз при спробі підключення до SQL-сервера утиліти SQL Server Enterprise Manager запитувати ім'я і пароль користувача;
Server Group - вибір групи серверів баз даних;
Show system databases and system objects - вся системна інформація в системі SQL-сервер (наприклад, перелік баз даних, імена і паролі користувачів і т.д.) зберігається в спеціальних системних базах даних. Дана опція використовується для здійснення доступу користувача до них (спробуйте підключитися до SQL-сервера, скасовуючи і встановлюючи цю опцію, що дозволить Вам виділити групу системних баз даних; перегляньте їхній зміст). Варто звернути особливу увагу на базу даних tempdb. Вона служить для збереження тимчасової інформації, використовуваної в процесі роботи SQL-сервера: тимчасові таблиці для сортування даних, збереження значень перемінних і т.д. В процесі використання для неї не створюється журнал транзакций, що значно збільшує швидкість роботи. Не використовуйте цю базу даних для збереження необхідної Вам інформації, тому що при перезавантаженні сервера вміст цієї бази даних очищається;
Automatically start SQL Server when connecting – вибір цієї опції визначає, чи варто виконувати запуск SQL-сервера при спробі підключення до нього за допомогою розглянутої утиліти.
Слід також зазначити той факт, що процедура створення бази даних у SQL-сервері вимагає наявності прав адміністратора сервера, у зв'язку з чим необхідно упевнитися в том. що при підключенні було використане ім'я користувача sa.
Наступним кроком буде вибір групи Databases у списку використовуваного SQL-сервера. Результатом цієї дії буде відображення в правій частині діалогового вікна утиліти всіх наявних баз даних на використовуваному сервері. Графічне відображення баз даних в утиліті SQL Server Enterprise Manager здійснюється за допомогою спеціальних значків - піктограм. Вибір команди New Database меню Action дозволяє створити нову базу даних у використовуваному сервері. Результатом цієї дії буде відображення на екрані діалогового вікна введення параметрів створюваної бази даних:
У поле Name даного діалогового вікна вказується ім'я створюваної бази даних. При цьому в списку Database files відображається ім'я файлу, що буде створений для цієї бази даних. Тут також можна змінити ім'я, шлях і вихідний розмір цього файлу. Якщо в процесі використання бази даних планується розміщення її на декількох дисках, то в цьому випадку можна створити так названі вторинні файли бази даних (secondary - розширення *.ndf). Для цього в списку Database files варто додати ім'я нового файлу бази даних, вказати до нього шлях і вихідний розмір. У цьому випадку в первинному (primary) файлі розташовується основна інформація про базу даних. При недостачі вільного місця для первинного файлу бази даних інформація, що додається, буде розмішатися у вторинних файлах.
Опція Automatically grow file даного діалогового/вікна дозволяє чи забороняє автоматичний ріст розміру бази даних. При цьому збільшення росту можна вказати за допомогою абсолютної величини в мегабайтах (In megabytes) чи процентному співвідношенні (By percent).
Рисунок 3 - Діалогове вікно створення бази даних
Якщо планується запис великих обсягів інформації в створювану базу даних, то рекомендується установити збільшення росту як найбільше, тому що в противному випадку це приведе до уповільнення роботи SQL-сервера. Область Maximum file size визначає максимальний розмір створюваної бази даних. В цьому випадку вибір опції Restrict filegrowth дозволяє обмежити ріст бази даних визначеним значенням у мегабайтах. З іншого боку, опція Unrestricted filegrowth відключає режим перевірки розміру бази даних, тобто в цьому випадку ріст розміру бази даних може бути необмеженим (з урахуванням вільного місця на диску і даних табл. 1). Якщо ж опція Automatically grow file відключає ріст бази даних, то в цьому випадку її розмір буде обмежений числовим значенням полючи Initial size у списку Database files.
Для прикладу створіть базу даних EDUCATION, у якій надалі буде змодельована структура даних (успішність студентів). Після коректного завершення додавання бази даних відповідна піктограма з'явиться в групі Databases. Скориставшись символом +, розкрийте об'єкти знову створеної бази даних, короткий опис яких приведено в таблиці 3.
Таблиця 3 Основні об'єкти структури бази даних SQL-сервера
Об'єкт | Опис |
Tables | Таблиці бази даних |
Views | Види, що дозволяють відображати дані з таблиць |
Stored Procedures | Збережені процедури |
Extended Stored Procedures | Додаткові збережені процедури |
Об'єкт | Опис |
Users | Користувачі, що володіють дозволом до доступу в базу даних |
Roles | Ролі бази даних, що дозволяють поєднувати користувачів у групи для здійснення доступу до даних |
Rules | Правила бази даних |
Defaults | Стандартні установки бази даних |
User Defined Data Types | Обумовлені користувачем типи даних |
В знову створеній базі даних уже є кілька таблиць. Це системні таблиці, у яких розміщена інформація про базу даних. Також у SQL-сервері існує перелік ролей доступу до об'єктів бази даних, використовуваних для всіх об'єктів сервера. Їхній перелік і короткий опис представлені в таблиці 4.
Таблиця 4 Короткий опис ролей, що використовуються для доступу до бази даних
Роль | Опис |
db_owner | Повний доступ до бази даних |
db_accessadmin | Можливість додавання і видалення користувачів |
db securityadmin | Можливість керування всіма процесами доступу користувачів |
db_ddladmin | Виконання всіх команд DDL (Data definition language - мова визначень), крім GRANT, REVOKE чи DENY |
dbjbackupoperator | Виконання команд резервного копіювання бази даних |
db_datareader | Можливість читання всіх даних з будь-яких таблиць бази даних |
db_datawriter | Можливість зміни всіх даних з будь-яких таблиць бази даних |
db_denydatareader | Можливість обмеження доступу до об'єктів бази даних з використанням оператора SELECT |
db_denydatawriter | Можливість обмеження доступу до об'єктів бази даних з використанням операторів INSERT, UPDATE і DELETE |
Public | Користувачі без надання спеціальних ролей мають роль доступу public |
Таблиця 5 Короткий опис ролей, використовуваних для доступу до сервера баз даних
Роль | Опис |
sysadmin | Виконання будь-яких функцій SQL-сервера |
serveradmin | Настроювання конфігурації і виконання функцій закриття SQL-сервера |
setupadmin | Керування зв'язками між серверами і їхніми процедурами запуску |
securityadmin | Керування доступом, можливість створення баз даних, доступ до log-файлу помилок |
processadmin | Керування процесами, що виконуються в SQL-сервері |
dbcreator | Керування створенням і видаленням баз даних |
diskadmin | Керування файлами на диску SQL-сервера |
Для перегляду користувачів, що мають доступ до створеної бази даних, є група Users у списку об'єктів поточної бази даних. Єдиним користувачем знову створеної бази даних є dbo (Database Owner - власник бази даних). Для перегляду встановлених йому ролей необхідно скористатися наступними діями:
• виберіть групу Users;
• клацніть мишею на імені користувача dbo;
• з меню Action виберіть команду Properties.
Результатом цих дій буде відкриття діалогового вікна установки ролей доступу до бази даних для користувача dbo (рис.4).
Рис 4 - Діалогове вікно визначення ролей доступу до бази даних користувачам dbo
Таблиці бази даних
В реляційних базах даних для збереження інформації використовуються таблиці, що представляють собою двовимірні масиви. Створення таблиць у системі SQL-сервер можна здійснити за допомогою команди SQL CREATE TABLE, підключившись до сервера бази даних за допомогою утиліти SQL Server Query Analyzer чи скориставшись утилітою SQL Server Enterprise Manager. Розглянемо другий спосіб створення таблиць.
Виберіть в списку об'єктів бази даних групу Tables, після чого в правій частині утиліти SQL Server Enterprise Manager буде відображений список усіх її таблиць, у тому числі і системних. Виконаєте команду New Table меню Action, після чого на екрані відобразиться запит введення імені створюваної таблиці. Для зручності рекомендується використання символів у верхньому регістрі в назві таблиць, що дозволить візуально відрізняти таблиці користувачів від системних.
Для приклада скористаємося структурою таблиці STUDENTS. Отже на запит введення імені варто ввести STUDENTS, після чого підтвердити введення натисканням кнопки ОК. Потім утиліта відобразить на екрані вікно дизайнера таблиць. В стовпчик Column Name необхідно буде ввести назву стовпця таблиці (у нашому випадку SNUM), після чого визначити його тип даних, скориставшись стовпчиком Datatype вікна дизайнера. Тут у списку відображається перелік усіх доступних типів даних, визначених у SQL-сервері. Після вибору типу даних для створюваного полючи система автоматично підставить для нього параметри Length (розмір поля), Precision (десятковий розмір) і Scale (точність числового типу даних). У залежності від типу даних система визначить доступ до редагування цих параметрів.
Якщо необхідно зробити видалення рядка в дизайнері таблиць, то для цього потрібно клацнути мишею на кнопку , розташовану ліворуч від даного рядка, що приведе до її виділення. Натискання кнопки Delete викликає діалогове вікно запиту на її видалення.
Рисунок 5 - Діалогове вікно дизайнера таблиць
Якщо введення даних у створюване поле вимагає наявності якого-небудь значення, установлюваного за замовчуванням, то його варто ввести в колонку DefaultValue вікна дизайнера таблиці. У таблиці STUDENTS зручно скористатися з даної можливості при вказівці мінімальної стипендії студентам навчального закладу. Введення в колонку Default Value для полючи STIP значення 17 дозволить автоматично встановлювати цю суму для кожного студента, що додається. При використанні цієї можливості варто бути особливо акуратним, тому що можна установити, наприклад, мінімальну стипендію новому чи відміннику двієчнику, розмір стипендії, яких відрізняється від застосовуваного за замовчуванням.
В СУБД є підтримка так званих NULL значень. За допомогою SQL-сервера можна визначити їхнє використання в таблицях. Іншими словами, забравши прапорець у колонку Allow Nulls для якогось поля, можна вимагати обов'язкове введення значень у це поле. Наприклад, цим можна скористатися при введенні номерів студентських квитків у поле SNUM. Це поле є ключовим (про створення ключових полів за допомогою SQL Server Enterprise Manager буде сказано нижче), що, у свою чергу, зажадає обов'язкове введення значень.
При створенні таблиці можна визначити так називана властивість Identity для якого-небудь її полючи. Ця властивість дозволяє автоматично збільшувати на зазначену величину значення, що вводиться в поле, при кожнім додаванні нового запису в таблицю.
Іншими словами, якщо виникає необхідність у додаванні до таблиці полючи, що автоматично збільшує своє значення (наприклад, поле-лічильник), те для нього потрібно настроїти властивість Identity. Для цього в першу чергу в поле варто забрати прапорець Allow Nulls, щоб уникнути невизначеності інформації. Наступним кроком буде установка прапорця в поле Identity, після чого потрібно ввести початкове значення Identity Seed і значение-инкремент Identity Increment ( сума, щододається,).
Створимо структуру даних EDUCATION, скориставшись наступними даними для визначення параметрів полів.
Таблиця 4 Структура таблиць бази даних EDUCATION
Column name | Datatype | Length | Precision | Scale |
Таблиця STUDENTS | ||||
SNUM | int | |||
SFAM | char | |||
SIMA | char | |||
SOTCH | char | |||
STIP | small-money | |||
Таблиця PREDMET | ||||
PNUM | smallint | |||
PNAME | char | |||
TNUM | int | |||
HOURS | smallint | |||
COURS | tinyint | |||
Таблиця TEACHERS | ||||
TNUM | int | |||
TFAM | char | |||
TIMA | char | |||
TOTCH | char | |||
TDATE | small-datetime |
При необхідності внесення змін у структуру таблиці після її створення, дизайнер таблиць можна завжди викликати, скориставшись командою Design Table меню Action, попередньо вибравши таблицю в списку.
Наступним етапом розробки структури навчальної бази даних EDUCATION буде внесення інформації в створені таблиці. Для зміни вмісту таблиць за допомогою утиліти SQL Server Enterprise Manager необхідно виконати наступні дії:
• вибрати необхідну таблицю в списку;
• виконати команду Open Table / Return all rows меню Action;
• якщо в таблиці знаходиться занадто багато записів, то можна обмежити вибір, скориставшись командою Open Table / Return Top меню Action. У цьому випадку на екран буде виведене діалогове вікно, у якому необхідно буде ввести номер запису, з яким потрібно здійснювати перегляд і редагування даних.
Результатом виконання цих дій буде відкриття редактора таблиці утиліти SQL Server Enterprise Manager. Використовуючи клавіші переміщення курсору, можна здійснити перехід між полями і записами. При установці курсору в поле нового запису вона буде автоматично додана. Якщо необхідно зробити видалень запису таблиці, то для цього потрібно клацнути мишею на кнопку , розташовану ліворуч від даного рядка, що приведе до її виділення. Натискання кнопки Delete викликає діалогове вікно запиту на видалення цього запису.
Система автоматично перевіряє введення інформації на відповідність типу даних полів. Іншими словами, користувачу не удасться ввести в поле STIP таблиці STUDENTS строкове значення.
Рисунок 6 - Діалогове вікно редактора таблиць
Використання кнопки Show/Hide SQL Pane дозволяє чи відобразити забрати панель уведення SQL-команд. При цьому діалогове вікно редактора розбивається на двох частин для введення необхідних команд SQL. По завершенні введення цих команд варто обновити результати в таблиці, скориставшись кнопкою Run , розташованої на панелі інструментів редактора. Тут також можна забрати/вивести з екрана панель результатів запиту, скориставшись кнопкою Show/Hide Results Pane . Якщо в процесі написання SQL-команди з'являється необхідність переконатися в коректності даної команди, то варто скористатися кнопкою Verify SQL , що здійснить перевірку і виведе відповідні попередження, не звертаючи при цьому до таблиці бази даних. Використання цієї можливості прискорює роботу з SQL-сервером при наявності в таблицях бази даних великих обсягів інформації.
Рисунок 7 - Панель SQL діалогового вікна редактора таблиць