- •ПоСіБник до вивчення курсу «оргаНізація баз даних»
- •Лабораторна робота № 1 Інсталяція та інтерфейс Microsoft sql Server
- •Завдання для самостійної роботи
- •Лабораторна робота № 2 Розробка реляційної бази даних
- •Завдання
- •Лабораторна робота № 3 Створення та наповнення таблиць бд
- •Теоретична частина
- •Insert into persons values ('ivanov', 'ivan', 'ivanovich')
- •Insert into persons values ('petrov', 'petr', 'petrovich')
- •Insert into persons values ('sidorov', 'sidor', 'sidorovich')
- •Id_pers int not null references persons)
- •Insert into students values (9560679, @id_pr)
- •Insert into students values (3945794, @id_pr)
- •Insert into students values (4596956, @id_pr)
- •Id_subj int references subjects,
- •Id_mark int references marks)
- •Insert into stud_progress(id_stud, id_subj, id_mark) values
- •Insert into stud_progress(id_stud, id_subj, id_mark) values
- •Insert into stud_progress(id_stud, id_subj, id_mark) values
- •Завдання
- •Лабораторна робота № 4 Виконання запитів до бази даних
- •Теоретична частина
- •Into ім'я_таблиці
- •In (список_імен_стовпців_значень_груп)
- •In (список_імен_стовпців))
- •Intersect
- •Intersect
- •Лабораторна робота № 5 Ітеративна обробка результату запита
- •Теоретична частина
- •5.1. Declare
- •5.2. Open
- •5.3. Fetch
- •5.4. Close
- •5.5. Deallocate
- •5.6. Функції роботи з курсорами
- •5.7. Приклади використання курсорів
- •Завдання
- •Лабораторна робота № 6 Створення тригерів бд
- •Теоретична частина.
- •Видалення тригерів.
- •Дозвіл | заборона спрацьовування тригерів.
- •Приклади тригерів.
- •Instead of delete
- •Instead of insert, update, delete
- •Insert into table1(c1, c2) (select c1, c2 from inserted)
- •Завдання.
Завдання для самостійної роботи
Установити Microsoft SQL Server 2005 Express Edition і Microsoft SQL Server Management Studio Express.
Настроїти змішану (Windows + SQL Server) аутентифікацію.
Створити базу даних, що буде називатися Student_Name, де замість Name буде написане прізвище латинськими буквами.
Створити користувача, ім'я (login) якого збігається із прізвищем студента, написаної латинськими буквами. Цей користувач повинен мати привілей (роль) для доступу до однойменного БД або db_owner, або зв'язування db_datareader, db_datawriter, db_ddladmin і одноіменну базу за замовчуванням.
Перевірити можливість з'єднання з Microsoft SQL Server 2005 Express Edition, використовуючи створеного користувача.
Лабораторна робота № 2 Розробка реляційної бази даних
Ціль роботи: розробити логічну структуру реляційної БД, що зберігає інформацію про студентів.
Завдання
Створити логічну структуру БД, що, буде складатися з декількох таблиць, які містять наступну інформацію про студентів:
Прізвище.
Ім'я.
По батькові.
Стать.
Дата народження.
Адреса (повна).
Телефон.
Навчальна група (може бути декілька).
Вид оплати за навчання (бюджетне або контрактне).
Вид навчання (очне, заочне, денне, вечірнє, екстерн).
Для військовозобов'язаних - інформація про придатність / непридатність до служби в армії.
Список вивчених предметів з оцінками по цих предметах.
Список наукових статей (у кожної наукової статті може бути кілька авторів).
Список тез, опублікованих у збірниках тез наукових конференцій (у тез доповідей на конференції може бути кілька авторів).
Інформація про викладачів, які є співавторами статей і тез студентів. Ця інформація повинна містити в собі: прізвище, ім'я, по батькові, ступінь, звання, посаду.
При створенні БД, слід враховувати, що одна і та сама людина може бути студентом 2-ох (або більше) навчальних груп.
Вищевказана інформація в БД повинна бути представлена у вигляді набору таблиць (реляційна БД), кожна з яких повинна задовольняти нормальним формам (обов'язково 4-рьом першим: 1-ій, 2-ій, 3-їй, Бойса-Кодда).
Дані, що зберігаються в одній таблиці, групуються разом по сукупності значеннєвих ознак з погляду мінімізації витрат на зберігання інформації та гнучкості при подальшій модифікації структури даних. Типи даних вибираються на підставі оптимуму між надмірністю і можливістю зберігання необхідної інформації.
Таблиці, якщо буде потреба, повинні бути пов'язані з використанням зовнішніх ключів.
Кількість таблиць не обмежується, вона вибирається виходячи з вимог до реляційних баз даних і з погляду подальшого розширення переліку збереженої інформації про студентів. Побудова таблиць повинна здійснюватися з урахуванням можливості подальшої модифікації структури даних.
Лабораторна робота № 3 Створення та наповнення таблиць бд
Ціль роботи: створення таблиць, що утворюють БД та наповнення їх даними.
Теоретична частина
/*
Приклад створює й заповнює даними частину таблиць, необхідних для створення БД, структуру якої необхідно було розробити в лабораторній роботі № 2.
Представлені таблиці мають спрощену структуру, тобто містять не всі дані, які необхідно зберігати відповідно до завдання л.р. №2.
Слід зазначити, що великі та маленькі букви в ключових словах, назвах таблиць і стовпців не різняться.
Приклад створений у припущенні, що існує тільки один простір імен у поточної БД, що може містити таблиці з використовуваними іменами.
*/
if NOT exists(select TABLE_NAME from INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'SUBJECTS')
/*
Перевіряється: чи існує вибірка з подання TABLES, власником якого є користувач INFORMATION_SCHEMA, поля TABLE_NAME, значення якого повинне рівнятися SUBJECTS. Для одержання потрібного значення поля TABLE_NAME використовується команда DML SELECT. Для її використання користувач повинен мати привілей dm_datareader доступу до бази даних, що містить шукану таблицю.
Зміст цього оператора мови TSQL полягає в перевірці того, чи існує таблиця з ім'ям SUBJECTS. Якщо така таблиця не існує, то виконується її створення і наповнення даними.
Якби існувало кілька просторів імен, то варто було б використовувати такий оператор if:
if not exists(select NAME from SYS.OBJECTS where NAME = 'SUBJECTS'
and TYPE = 'U'
and SCHEMA_ID = (select SCHEMA_ID from SYS.SCHEMAS
where NAME = 'name_of_schema'
)
)
де name_of_schema – простір імен, що цікавить.
*/
BEGIN
/*
Використовуються операторні дужки BEGIN...END, тому що, цілий блок операторів повинен розглядатися як єдина група операторів.
*/
create table subjects (id_subj int PRIMARY KEY IDENTITY, subject varchar(50))
/*
За допомогою команди DDL create table створюється таблиця з ім'ям SUBJECTS, що має 2 поля:
id_subj - поле, що має цілочисельний тип даних int, що є первинним ключем (PRIMARY KEY - обмеження, що вимагає, щоб значення в стовпці завжди існували (NOT NULL) і були унікальними(UNIQUE); тільки один стовпець або набір стовпців може мати це обмеження) і властивість, що має, IDENTITY, що дозволяє генерувати значення поля автоматично (у цьому випадку, тому що не зазначене початкове значення і збільшення, то будуть згенеровані значення, починаючи з 1 з кроком 1.
Це поле призначене для зберігання коду досліджуваного предмета.
subject - поле, що має строковий тип даних змінної довжини з максимальною кількістю символів = 50 (varchar(50)).
Це поле призначене для зберігання назви досліджуваного предмета.
Для виконання команди CREATE TABLE користувач повинен мати привілей dm_ddladmin доступу до бази даних, у якій створюється таблиця.
*/
INSERT INTO SUBJECTS VALUES('MATHEMATICS')
INSERT INTO SUBJECTS VALUES('PHYSICS')
INSERT INTO SUBJECTS VALUES('ENGLISH')
INSERT INTO SUBJECTS VALUES('UKRAINIAN')
INSERT INTO SUBJECTS VALUES('RUSSIAN')
INSERT INTO SUBJECTS VALUES('PROGRAMMING')
INSERT INTO SUBJECTS VALUES('HISTORY OF UKRAINЕ')
INSERT INTO SUBJECTS VALUES('PHILOSOPHY')
INSERT INTO SUBJECTS VALUES('ECONOMICS')
/*
За допомогою команди INSERT таблиця SUBJECTS заповнюється значеннями. Оскільки перше поле таблиці має властивість IDENTITY, то значення для нього генерується автоматично, а тому не вказується в списку значень після ключового слова VALUE. При цьому після імені таблиці не потрібно задавати список стовпців, для яких явно зазначені значення в команді INSERT.
Для виконання команди INSERT користувач повинен мати привілей dm_datawriter доступу до бази даних, у якій перебуває шукана таблиця.
*/
END
-ELSE
-- DROP TABLE SUBJECTS
/*
Якщо таблиця SUBJECTS існує, то вона знищується за допомогою команди DDL DROP TABLE, для виконання якої користувач повинен мати привілей dm_ddladmin доступу до бази даних, у якій перебуває таблиця. Цю команду не можна застосовувати для таблиць, на які йде посилання в обмеженні FOREIGN KEY ... REFERENCES (для видалення таких таблиць необхідно видалити обмеження FOREIGN KEY ... REFERENCES або таблицю, його утримуючу).
*/
if NOT exists(select TABLE_NAME from INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'PERSONS')
/*
Перевіряється: чи існує вибірка з подання TABLES, власником якого є користувач INFORMATION_SCHEMA, поля TABLE_NAME, значення якого повинне рівнятися PERSONS. Для одержання потрібного значення поля TABLE_NAME використовується команда DML SELECT. Для її використання користувач повинен мати привілей dm_datareader доступу до бази даних, що містить шукану таблицю.
Зміст цього оператора мови TSQL полягає в перевірці того, чи існує таблиця з ім'ям PERSONS. Якщо така таблиця не існує, то виконується її створення і заповнення даними.
*/
BEGIN
/*
Використовуються операторні дужки BEGIN...END, тому що, цілий блок операторів повинен розглядатися як єдина група операторів.
*/
create table PERSONS (ID_PERS int PRIMARY KEY IDENTITY,
SURNAME varchar(50),
FIRSTNAME VARCHAR(50),
PATRONAME VARCHAR(50))
/*
За допомогою команди DDL create table створюється таблиця з ім'ям PERSONS, що має 4 поля:
id_pers - поле, що має цілочисельний тип даних int, що є первинним ключем (PRIMARY KEY - обмеження, що вимагає, щоб значення в стовпці завжди існували (NOT NULL) і були унікальними(UNIQUE); тільки один стовпець або набір стовпців може мати це обмеження) і властивість IDENTITY, що дозволяє генерувати значення поля автоматично (у цьому випадку, оскільки не зазначене початкове значення та збільшення, то будуть згенеровані значення, починаючи з 1 з кроком 1.
Це поле призначене для зберігання коду особистості.
surname - поле, що має строковий тип даних змінної довжини з максимальною кількістю символів = 50 (varchar(50)).
Це поле призначене для зберігання прізвища особистості.
firstname - поле, що має строковий тип даних змінної довжини з максимальною кількістю символів = 50 (varchar(50)).
Це поле призначене для зберігання імені особистості.
patroname - поле, що має строковий тип даних змінної довжини з максимальною кількістю символів = 50 (varchar(50)).
Це поле призначене для зберігання по батькові особистості.
Для виконання команди CREATE TABLE користувач повинен мати привілей dm_ddladmin доступу до бази даних, у якій створюється таблиця.
*/
