Роздрукувати сторінку
Главная \ Методичні вказівки \ Методичні вказівки \ 1337 Лабораторна робота №1-7 на тему Створення модельної АІС за допомогою реляційної СУБД MS Access (DataEase)

Лабораторна робота №1-7 на тему Створення модельної АІС за допомогою реляційної СУБД MS Access (DataEase)

« Назад

Лабораторна робота №1-7 (10 год) Тема: Створення модельної АІС за допомогою реляційної СУБД MS Access (DataEase)

Мета: Навчитись формувати БД, створювати запити за зразком (QBE-запити) та мовою SQL (DQL), а також регламентувати доступ до БД.

Практична робота №1 (2 год.)

Тема: Формування  нерегламентних простих запитів до бази даних (на прикладі СУБД Access).

Мета: Навчитись формувати   запити до бази даних Access’у для  виборки  даних  з однієї таблиці.

1. На першому занятті:

a) на навчальному диску Eчи D створіть власну папку з іменем ПІБ-№групи, де ПІБ – прізвище та ініціали студента;

b) скопіюйте із  сервера базу даних Economica.mdb у власну папку ПІБ-№групи;

c) якщо БД Economicaзадана у вигляді архівного файла, то розархівуйте його;

d) запустіть програму Access (msaccess.exe), завантажте  БД Economica.mdbв режимі «Преобразовать базу данных» ізбережіть перетворену БД під іменем Еко-ПІБ-№гр у власну папку.

2. На повторних заняттях:

a)    скопіюйте із  сервера  власну папку ПІБ-№групи на навчальний диск EчиD;

b) запустіть програму Access (msaccess.exe) і завантажте  власну БД Еко-ПІБ-№гр в режимі «Открыть базу даннях”.

  1. У вікні бази Еко-ПІБ-№гр.mdbперейдіть на закладку “Таблиці”.

  2. Виділить мишкою таблицю Ustanova і викличте для неї конструктор (кнопка Коструктор).

  3. Перегляньте перелік полів цієї таблиці та їх формат. В подальшому нас цікавитимуть лише поля KODUST (код підпрємства), OKPO(код ЄДРПОУ), NAZVA (назва підприємства) i ADRESA (адреса підприємства). Занотуйте для себе їх типи.

  4. Закрийте вікно конструктора і у вікні бази перейдіть на закладку Запити (Запросы).

  5. Натисніть кнопку Создать. У вікні “Новый запрос” виберіть пункт “Конструктор”.

  6. У вікні “Добавление таблицы” натисніть кнопку “Закрыть”.

  7. Виберіть пункт меню Вид – Режим SQL.

  8. У вікні “Запрос1:запрос на виборку” введіть текст запиту результатом якого є всі підприємства назви яких починаються з тієїж літери що і Ваше прізвище(запит має повертати: а). тільки поля KODUST, NAZVA, ADRESA; б)всі поля таблиці Ustanova) . Збережіть ці запити.

  9. Створіть новий запит результатом якого є перелік підприємств, розташованих на вулиці Червоноармійскій (або ЧЕРВОНОАРМIЙСЬКІЙ ці слова вважаютьс різними).

  10. Оскільки літери і і І можуть бути латинськими або кириличними, врахуйте це в запиті п.13.

  11. Створіть новий запит результатом якого є перелік підприємств, розташованих на вулиці Ломоносова.

  12. Створіть новий запит результатом якого є перелік підприємств, розташованих на вулиці Ломоносова або Червоноармійскій .

  13. Створіть новий запит результатом якого є перелік підприємств, коди яких лежать в межах від  2020 до 2050 включно.

  14. Створіть новий запит результатом якого є перелік підприємств, для яких поле OKPO(код ЄДРПОУ) заповнене(якщо воно містить 0, воно вважається незаповненим).

  15. Оформіть звіт.

  16. Закрийте БД Еко-ПІБ-№гр.mdb.

  17. Перенесіть власну папку з іменем ПІБ-№групи із базою даних Еко-ПІБ-№гр.mdbнасервер для збереження практичних робіт.

 

Практична  робота №2 (2 год) Тема: Використання реляційних і булевих операторів для створення нерегламентних запитів. Використання спеціальних операторів в “умовах” відбору (IN, BETWEEN, IS NULL) та NOT із спеціальними операторами

Мета: Набути навичок написання запитів з використанням реляційних і булевих  операторів.

Для написання запитів і одержання результатів скористаємось програмою MSQRY32.EXE, яка є складовою частиною пакету MSOffice. Як правило, вона розташована в каталозі: C:\Program Files\Microsoft Office\Office, а її ярлик - в каталозі: C:\Program Files\Microsoft Office\Office. Запитами написаними в цій програмі легко скористатись офісними програмами Excel, Word.

1. На першому занятті:

a) на навчальному диску Eчи D створіть власну папку з іменем ПІБ-№групи, де ПІБ – прізвище та ініціали студента;

b) скопіюйте із  сервера базу даних Economica.mdb у власну папку ПІБ-№групи;

c) якщо БД Economicaзадана у вигляді архівного файла, то розархівуйте його.

2. На повторних заняттях скопіюйте із  сервера  власну папку ПІБ-№групи на навчальний диск EчиD.

3. Запустіть програму MSQRY32.EXE. Виберіть пункт меню Файл – Створити запит.

4. У вікні  «Вибір джерела даних»

4.1. Виберіть пункт «Нове джерело даних»

4.2. Зніміть галочку з «Використовувати майстер запитів» і натисніть кнопку «ОК»

5. У вікні «Створення нового джерела даних»

5.1. В полі 1 наберіть довільне ім’я (латинськими буквами), наприклад Еко-ПІБ-№гр.

5.2. В полі 2 розкрийте список, натиснувши справа на кнопку і  виберіть пункт MicrosoftAccessDriver(*.mdb)”.

5.3. Натисніть кнопку “Підключить

5.3.1. У вікні “ODBC Microsoft Access Setup” натисніть кнопку Select

5.3.1.1. У вікні “Select Database” виберіть базу Еко-ПІБ-№гр.mdb чи Economica.mdb, яка знаходиться в каталозі E:\ ПІБ-№групи  чи D:\ ПІБ-№групи і натисніть кнопку ОК.

5.3.2. У вікні “ODBC Microsoft Access Setup” натисніть кнопку ОК

5.4. У вікні «Створення нового джерела даних» натисніть кнопку ОК

    6. У вікні  «Вибір джерела даних» список поновиться створеним джерелом Eko. Натисніть кнопку ОК. З’явиться вікно “Додати таблицю”. В ньому натисніть на кнопку ОК

    7. В результаті Ви повернулись до основного вікна програми MSQRY32, в якому ми будемо писати запити до бази Economica.mdb.

    8. Натисніть кнопку SQL. З’явиться вікно “Запит SQL”.

    9. Створіть новий запит результатом якого є перелік підприємств, коди (поле KODUST) яких належать множині {2001, 2023, 2057, 2101, 2120} і збережіть його під іменем Запит-№Пр/№Завдання  у власну папку.

    10. Створітьновий запит результатом якого є перелік підприємств, кодияких належать множині {2001,2023,2057,2101,2120} і поле OKPO(код ЄДРПОУ) заповнене(якщо воно містить 0, воно вважається незаповненим) ізбережіть його у власну папку.

    11. Створітьновий запит результатом якого є перелік підприємств, вяких поле DIRECTORзаповнене  (не є пустим NOT IS NULL) ізбережіть його .

    12. Створітьновий запит результатом якого є перелік підприємств, кодияких лежать в межах від 2010 до 2101 (використавши операторBETWEEN) і поле DIRECTOR  не заповнене ізбережіть його.

    13. Створітьновий запит результатом якого є перелік підприємств, сума коду підприємства і коду OKPO містить 8 цифр ізбережіть його.

    14. Оформіть звіт.

    15. Закрийте програму MSQRY32.EXE.

    16. Перенесіть власну папку з іменем ПІБ-№групи із базою даних Еко-ПІБ-№гр.mdbнасервер для збереження практичних робіт.

     

    Практична робота №3 (4 год) Тема: Використання множини таблиць в команді SELECT. З’єднання (join) таблиць, еквіз’єднання таблиць (на основі рівності). Поняття аліасу. Операція з’єднання, операнди якої є однією таблицею (2 копії однієї таблиці)

    Пояснення. В подальшому нас цікавитимуть таблиці – Ustanova, Limit та Rechovyna. В таблиці Limit зберігається інформація про викиди в атмосферу шкідливих речовин підприємствами м.Києва. В таблиці Rechovyna зберігається довідник шкідливих речовин. В подальшому нас цікавитимуть лише поля:

     KODUST (код підпрємства), NAZVA (назва підприємства) i ADRESA (адреса підприємства) з таблиці Ustanova;

    KODUST (код підпрємства), RIK(рік, в якому здійснювався викид), KODRECH(код шкідливої речовини), MVLT (маса викиду в т/рік) з таблиці Limit;

    KODRECH(код шкідливої речовини), NAZVA (назва речовини), NORM (норматив плати за викид) з таблиці  Rechovyn.

    1. Перегляньте таблиці Ustanova, Limit та Rechovyn.

    2. Створітьновий запит результатом якого є перелік речовин, які викидаються підприємством з кодом 2001 у 2001 році. Запит має повертати такі поля: KODUST (таблиця Limit) , RIK(таблиця Limit), NAZVA (назва речовини, таблиця Rechovyn), MVLT (маса викиду, таблиця Limit).

    3. Створітьновий запит результатом якого є перелік речовин, які викидаються підприємством з кодом 2002 у 1998 році. Запит має повертати такі поля: KODUST (таблиця Limit, назва колонки – Код підприємства), RIK(таблиця Limit, назва колонки – Рік ), NAZVA (таблиця Rechovyn, назва колонки – назва речовини), MVLT ( таблиця Limit, назва колонки – маса викиду ).

    4. Створітьновий запит результатом якого є перелік речовин, які викидаються підприємством з кодом 2028 у 2001 році. Запит має повертати такі поля: KODUST (таблиця Limit, назва колонки – Код підприємства), NAZVA (Таблиця Ustanova, назва колонки – Назва підприємства),RIK(таблиця Limit, назва колонки – Рік ), NAZVA (таблиця Rechovyn, назва колонки – назва речовини), MVLT ( таблиця Limit, назва колонки – маса викиду).

    5. Створітьзапит з пункту 4, використовуючи аліаси .

    6. Створітьновий запит результатом якого є перелік речовин, які викидаються підприємством з кодом 2001 у 2001 році і підприємством з кодом 2002 у 1998 році (перетин множин речовин). Запит має повертати такі поля: KODUST (таблиця Limit, назва колонки – Код підприємства), NAZVA (Таблиця Ustanova, назва колонки – Назва підприємства),RIK(таблиця Limit, назва колонки – Рік ), NAZVA (таблиця Rechovyn, назва колонки – назва речовини), MVLT ( таблиця Limit, назва колонки – маса викиду).

    7. Створітьновий запит результатом якого є розрахунок плати за викиди підприємством з кодом 2028. Запит має повертати такі поля: KODUST (таблиця Limit, назва колонки – Код підприємства), RIK(таблиця Limit, назва колонки – Рік ), NAZVA (таблиця Rechovyn, назва колонки – назва речовини), MVLT ( таблиця Limit, назва колонки – маса викиду ), NORM (таблиця Rechovyn, назва колонки –  Норматив плати), MVLT*NORM*2.25 (назва колонки –  Плата за викид).

    8. Оформіть звіт.

    9. Закрийте програмні продукти.

    10. Перенесіть власну папку з іменем ПІБ-№групи із базою даних Еко-ПІБ-№гр.mdbнасервер для збереження практичних робіт.

     

    Практична робота №4 (4 год) Тема: Використання агрегатних функцій (MAX, MIN, COUNT, AVG, SUM) у запитах. Групування і упорядкування вихідних даних. Використання підзапитів

    1. Створіть новий запит, результатом якого є перелік підприємств, які здійснювали викиди в атмосферу в 2000 році, з такими колонками: код підприємства, назва підприємства, сумарна маса викиду, сумарна  плата за викиди.

    2. Створіть новий запит, результатом якого є перелік підприємств, які здійснювали викиди в атмосферу в 2000 році, з такими колонками: код підприємства, назва підприємства, середня маса викиду, середня  плата за викид.

    3. Створіть новий запит, результатом якого є перелік підприємств, які здійснювали викиди в атмосферу в 2000 році, з такими колонками: код підприємства, назва підприємства, кількість шкідливих речовин.

    4. Створіть новий запит, результатом якого є перелік підприємств, які здійснювали викиди в атмосферу в 2000 році, з такими колонками: код підприємства, назва підприємства, максимальна маса викиду (серед викидів даного підприємства),  плата за цей викид .

    5. Створіть новий запит, результатом якого є перелік підприємств, які здійснювали викиди в атмосферу в 2000 році, з такими колонками: код підприємства, назва підприємства, мінімальна маса викиду (серед викидів даного підприємства),  плата за цей викид .

    6. Створіть новий запит, результатом якого є сумарна маса викиду (по всіх  підприємствах за 2000 рік) та сумарна  плата.

    7. Створіть новий запит, результатом якого є перелік речовин, які викидались підприємствами в 2001 році з такими колонками: назва речовини і маса викиду.

    8. Використовуючи підзапит, створіть новий запит, результатом якого є перелік підприємств, які здійснювали викиди в атмосферу в 2000 році, з такими колонками: код підприємства, назва підприємства, максимальна маса викиду (серед викидів даного підприємства), назва шкідливої речовини, на якій досягається максимум,  плата за цей викид.

    9. Оформіть звіт.

    10. Закрийте програмні продукти.

    11. Перенесіть власну папку з іменем ПІБ-№групи із базою даних Еко-ПІБ-№гр.mdbнасервер для збереження практичних робіт.

     

    Практична робота №5 (2 год) Тема: Побудова запитів з використанням агрегатних функцій в умовах відбору. Використання HAVING у запитах. Використання  підзапитів

    Створіть запит, який повертає перелік речовин з масою викиду вище середнього для підприємства з кодом 2001 за 2001 рік. Результат запиту має містить такі колонки: назва речовини, маса викиду.

    1. Створіть запит, який повертає перелік підприємств(за 2001 рік), сумарна маса викиду по підприємству більше 1 тони.

    2. Створіть запит, який повертає перелік підприємств(за 2001 рік), сумарна маса викиду по підприємству не перевищує 1 тони.

    3. Створіть запит, який повертає перелік підприємств(за 2001 рік), сумарна  плата за викиди по підприємству перевищує 100 грн.

    4. Створіть запит, який повертає перелік підприємств(за 2001 рік), сумарна плата за викиди по підприємству не перевищує 100 грн.

    5. Створіть запит, який повертає назву шкідливої речовини, яка найбільше викидалась всіма підприємствами в 2001 році. Вихідні поля: Назва речовини, Маса викиду, Плата за викид.

    6. Створіть запит, який повертає назву шкідливої речовини, яка викидалась всіма підприємствами в 2001 році і плата за яку найбільша. Вихідні поля: Назва речовини, Маса викиду, Плата за викид.

    7. Створіть запит, який повертає перелік підприємств(за 2001 рік), кожне з яких викидає не більше 5 речовин. Вихідні поля: Код підприємства, Назва підприємства, Сумарна маса викиду, Сумарна плата за викид.

    8. Оформіть звіт.

    9. Закрийте програмні продукти.

    10. Перенесіть власну папку з іменем ПІБ-№групи із базою даних Еко-ПІБ-№гр.mdbнасервер для збереження практичних робіт.

     

    Практична робота №6 (2 год) Тема: Побудова запитів з використанням з’єднання зліва (LEFTJOIN), внутрішнього з'єднання (INNER JOIN) і з’єднання зправа (RIGHTJOIN)

    1. Створіть новий запит, результатом якого є перелік підприємств, які здійснювали викиди в атмосферу в 2001 році, з такими колонками: Kод підприємства, назва підприємства, сумарна маса викиду, сумарна  плата за викиди, використовуючи з’єднання зліва (LEFTJOIN) між таблицями Ustanova i Limit.

    2. Створіть новий запит, результатом якого є перелік підприємств, які НЕ здійснювали викиди в атмосферу в 2001 році, з такими колонками: Kод підприємства, назва підприємства,  використовуючи з’єднання зліва (LEFTJOIN) між таблицями Ustanova i Limit.

    3. Створіть новий запит, результатом якого є перелік підприємств, які здійснювали викиди в атмосферу в 2001 році, з такими колонками: Kод підприємства, назва підприємства, сумарна маса викиду, сумарна  плата за викиди, використовуючи з’єднання зліва (INNERJOIN) між таблицями Ustanova i Limit. Зрівняйте результати запитів п.1 і п.3.

    4. Створіть новий запит, результатом якого є перелік підприємств, які ЗДІЙСНЮВАЛИ викиди в атмосферу в 2001 році і НЕ ЗДІЙСНЮВАЛИ викиди в атмосферу в 2000 році, з такими колонками: Kод підприємства, назва підприємства, сумарна маса викиду в 2001 році, сумарна  плата за викиди 2001 року.

    5. Створіть запит з пункту 4, використовуючи підзапит.

    6. Оформіть звіт.

    7. Закрийте програмні продукти.

    8. Перенесіть власну папку з іменем ПІБ-№групи із базою даних Еко-ПІБ-№гр.mdbнасервер для збереження практичних робіт.

     

    Практична робота №7 (2 год) Тема: Використанням команд модифікації даних Бази Даних (UPDATE, INSERT, DELETE, SELECT…INTO)

    1. Створіть запит, який додає новий запис у таблицю USTANOVA з такими значеннями: поле KODUST повино мати значення 30, поле NAZVA повино містити Ваше прізвище, поле ADRESA – Вашу адресу.

    2. Створіть запит, який всі викиди підприємства з кодом 2001(таблиця Limit) за 2001 рік копіює в ту ж таблицю Limit з новим значення поля RIK рівним 1999.

    3. Створіть запит, який масу кожного викиду підприємства з кодом 2001(таблиця Limit) за 1999 рік збільшить на 10.

    4. Створіть запит, який масу кожного викиду підприємства з кодом 2001(таблиця Limit) за 1999 рік збільшить у 2 рази.

    5. Створіть запит, який видалить з таблиці Limit всі викиди підприємства з кодом 2001 за 1999 рік і маса яких перевищує 10 тон.

    6. Видаліть з таблиці Limit всі викиди підприємства з кодом 2001 за 1999 рік маса яких не перевищує 10 тон.

    7. Використовуючи констркукцію SELECTINTOскопіюйтевикиди за 1998 рік підприємства з кодом 2002 в таблицю Lim98. Перегляньте таблицю Lim98.

    8. Видаліть з таблиці Lim98 записи, поле KODRECHяких більше за 10000.

    9. Видаліть з таблиці Limit записи, які є в таблиці Lim98.

    10. Оформіть звіт.

    11. Закрийте програмні продукти.

    12. Перенесіть власну папку з іменем ПІБ-№групи із базою даних Еко-ПІБ-№гр.mdbнасервер для збереження практичних робіт.

     

    Лабораторна робота №8 Тема: Створення баз даних

    Теоретичні відомості

    Визначення даних

    Мова DDL (Data Definition Language), як частина мови SQL, дозволяє створювати і видаляти різні об’єкти бази даних – наприклад, таблиці, представлення, індекси тощо. Основними операторами мови SQL, призначеними для визначення даних, є:

    CREATE SCHEMA

     

    DROP SCHEMA

    CREATE DOMAIN

    ALTER DOMAIN

    DROP DOMAIN

    CREATE TABLE

    ALTER TABLE

    DROP TABLE

    CREATE VIEW

     

    DROP VIEW

    Створення баз даних

    В різних СУБД процедура створення баз даних різна. В клієнт-серверних системах право створення баз даних як правило закріплене за адміністратором бази даних (АБД). В персональних системах база даних створюється в процесі інсталяції і настройки параметрів самої СУБД. Стандарт ISO не визначає процедури створення екземпляру бази даних, тому в кожному з діалектів мови SQL використовується свій власний підхід. Наприклад, в СУБД ORACLE створення екземпляру бази є частиною процесу інсталяції системи.

    У відповідності із  стандартом ISO, таблиці та інші об’єкти бази даних існують в деякому середовищі(environment). Крім того, кожне середовище містить в собі один або більше каталогів (catalog), а кожний каталог – набір схем (shema). Схема – це поіменована сукупність взаємопов’язаних об’єктів бази даних ( всі об’єкти бази даних повинні бути описані в тій чи іншій схемі). Об’єктами схеми можуть бути таблиці, представлення, домени і набори символів. Стандарт залишає право вибору конкретного механізму створення і знищення каталогів за розробником СУБД, але регламентує механізм створення і знищення схем. Оператор визначення схеми має такий формат:

          CREATE SHEMA [name | AUTHORIZATION creator-identifier]

    Таким чином, якщо творцем схеми під іменем sql_test буде користувач Ivanov, то даний оператор виглядатиме таким чином:

          CREATE SHEMA sql_test AUTHORIZATION Ivanov

    Схема видаляється з допомогою оператора DROP SHEMA, який має такий формат:

          DROP SHEMA name [RESTRICT | CASCADE]

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

    На сьогоднішній день оператори CREATE SHEMA і DROP SHEMA реалізовані в небагатьох СУБД.

    Створення таблиць (оператор CREATE TABLE)

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

          CREATE TABLE table_name

          (column_name data_type [NULL | NOT NULL][,…])

    В результаті виконання цього оператора буде створена таблиця з іменем table_name, яка матиме один або більше стовпчиків з іменами що задаються параметрами column_name і матимуть тип, що задається параметрами data_type.

    Ключове слово NULL визначає, що дане поле може містити значення NULL. Ключове слово NOT NULL визначає, що дане поле не може містити значення NULL. За змовчуванням, стандарт ISO визначає, що діє ключове слово NULL.

    Стовпчики первинних ключів завжди визначаються з ключовим словом NOT NULL.

    Приклад використання оператора CREATE TABLE. Оператор

          CREATE TABLE Osoba (

                       kod INTEGER NOT NULL,

                       priz VARCHAR(50) NOT NULL)

    створить таблицю Osoba, в якій є 2 стовпчики – kod i priz. Поле kod має цілочисельний тип, а поле priz має тип VARCHAR, тобто символьний і яке містить не більше 50 символів. Оператор, який створить таблицю table_a, якою ми користувались на попередніх лекціях, матиме вид

          CREATE TABLE table_a(

             kod INTEGER NOT NULL,

             suma DECIMAL(8,2) NOT NULL,

             data DATE )

    В стандарті ISO наведено декілька варіантів визначення цього оператора. Базовий формат цього оператора має вид:

          CREATE TABLE table_name

          {(column_name data_type [NOT NULL] [UNIQUE]

          [DEFAULT default_option] [CHECK (search_condition)] [,…]}

          [PRIMARY KEY (list_of_columns),]

          {[UNIQUE (list_of_columns)] [,…]}

          {FOREIGN KEY (list_of_foreign_key_columns)

          REFERENCES parent_table_name [list_of_candidate_key_columns)],

             [MATCH {partial | FULL}]

             [ON UPDATE referential_action]

             [ON DELETE referential_action] [,…]}

          {[CHECK (searh_condition)] [,…])}

    Дана версія оператора CREATE TABLE містить не тільки визначення даних (параметри table_name, column_name, data_type і специфікатор NOT NULL, які ми розглядали у спрощеному варіанті) але й засоби визначення цілісності бази даних, ключів і таке інше.

    Необов’язкова фраза DEFAULT задає значення - default_option, яке буде вставлятись оператором INSERT для невизначеного значення даного стовпчика (default_option може бути літералом).

    Необов’язкова фраза UNIQUE задає унікальність значення цього поля, тобто не повинно існувати двох і більше рядків в таблиці з одноковим значення цього поля. Для стовпчиків, які вказані у фразі UNIQUE повинен застосовуватись режим NOT NULL для їх можливих значень. Система заблокує виконання любого оператора INSERT аба UPDATE який створює рядок з дубльованими значеннями стовпчиків, які вказані у фразі UNIQUE.

    Необов’язкова фраза CHECK (search_condition). Кожний стовпчик має власний домен, тобто набір допустимих значень. Наприклад, для визначення наукового ступеня співробітника достатньо всього 3 значення – не має, кадидат і доктор. Тому домен для поля Naukov_stupin можна визначити як набір з 3-х значень- ‘не має’, ‘кадидат’,  ‘доктор’. Фраза

    CHECK (Naukov_stupin IN(‘не має’, ‘кадидат’,  ‘доктор’))

    задаватиме допустимі значення для поля Naukov_stupin. Тобто ніякі інші значення в це поле СУБД не дозволить внести.

    Всі інші фрази оператора CREATE TABLE, що залишились називають обмеженнями для таблиці і можуть відокремлюватись (не обов’язково) фразою

    CONSTRAINT constraint_name.

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

    Фраза PRIMARY KEY визначає стовпчик або стовпчики, які утворюють первинний ключ таблиці. Визначення любої таблиці повинно містити не більше однієї фрази PRIMARY KEY. Система заблокує виконання любого оператора INSERT аба UPDATE який створює рядок з дубльованими значеннями в стовпчиках, вказаних у фразі PRIMARY KEY. Наприклад, якщо S1 i S2 – стовпчики, які вказані у фразі PRIMARY KEY, і в таблиці вже є рядок зі значеннями a i b у цих стовпчиках відповідно, то спроба вставити новий рядок зі значеннями a i b у цих стовпчиках буде заблокована.

    Фраза FOREIGN KEY дозволяє визначити зовнішні ключі таблиці. Фраза містить такі елементи:

    • список list_of_foreign_key_columns складається з імен одного або більше стовпчиків, які утворюють даний зовнішній ключ;

    • фразу REFERENCES, яка визначає батьківську таблицю з іменем parent_table_name, яка містить потенційний ключ, поля якого визначені зовнішнім ключем (задаються списком list_of_candidate_key_columns);

    • необов’язкову фразу ON UPDATE для визначення правила поновлення даних, які задаються параметром referential_action. Цей параметр може приймати одне з таких значеннь: CASCADE, SET NULL, SET DEFAULT, NO ACTION. Якщо фраза ON UPDATE опущена, за змовчуванням використовується правило NO ACTION;

    • необов’язкову фразу ON DELETE для визначення правила поновлення даних, які задаються параметром referential_action. Цей параметр може приймати одне з таких значень: CASCADE, SET NULL, SET DEFAULT, NO ACTION. Якщо фраза ON DELETE опущена, за змовчуванням використовується правило NO ACTION.

    Правила підтримки цілісності посилань, які задаються у фразі FOREIGN KEY після ON UPDATE і ON DELETE:

    • CASCADE – виконується поновлення/видалення рядка з батьківської таблиці з автоматичним поновленням/видаленням всіх рядків дочірньої таблиці, пов’язаних з даним рядком батьківської таблиці;

    • SET NULL – виконується видалення рядка з батьківської таблиці, а у зовнішні ключі дочірньої таблиці, пов’язаних з даним рядком батьківської таблиці заноситься значенння NULL. Цей варіант застосовується лише для тих стовпчиків зовнішнього ключа, у визначенні яких задано NULL;

    • SET DEFAULT - виконується видалення рядка з батьківської таблиці, а у зовнішні ключі дочірньої таблиці, пов’язаних з даним рядком батьківської таблиці заноситься значення за змовчуванням.

    • NO ACTION операція видалення рядка з батьківської таблиці відміняється. Це значення використовується за змовчуванням.

    Приклади. Оператор

         CREATE TABLE Vidom(

         kod INTEGER NOT NULL,

         year SMALLINT NOT NULL,

         mounth SMALLINT NOT NULL,

        D REAL NOT NULL DEFAULT 0 ,

        CONSTRAINT ind PRIMARY KEY (kod,year, mounth))

    створить таблицю з назвою Vidom, яка матиме стовпчики - kod, year, mounth, D і первинний ключ з іменем ind, який визначається стовпчиками kod,year, mounth. Причому поля kod,year, mounth, D не можуть приймати значення NULL, а поле D за змовчуванням прийматиме значення 0, тобто оператор INSERT, що не містить явного задання значення поля D, автоматично підставлятиме значення 0. Приклад використання CHECK для недопущення вводу помилкових значень.

          CREATE TABLE Osoba

          (ID_OSOBA INTEGER NOT NULL,

          PRIZ VARCHAR(50) NOT NULL,

          NAME VARCHAR(50) NOT NULL,

          POBAT VARCHAR(50) NOT NULL,

          SEX CHAR(4) CHECK (SEX IN (‘жін.’,’чол.’)),

          ID_FACULT SMALLINT NOT NULL)

    Цей оператор створить таблицю Osoba з відповідними стовпчиками, причому в стовпчик SEX система не дозволить ввести нічого крім значень ‘жін.’і ’чол.’.

    Слід зауважити, що не всі діалекти SQL підтримують фразу DEFAULT (Access 97 не підтримує цієї фрази).

    ХІД ВИКОНАННЯ РОБОТИ

    1. Створіть запит, який визначає схему таблиці USTANOVA і назвіть її своїм прізвищем.

    2. Створіть запит, який визначає таблицю USTANOVA1 і назвіть її своїм прізвищем.

    3. Оформіть звіт

     

    Практична та лабораторна робота №9 Тема: Використанням команди видалення таблиці

    Теоретичні відомості

    Видалення таблиць (оператор DROP TABLE)

    Непотрібні таблиці видаляються з бази з допомогою оператора DROP TABLE, який має формат:

          DROP TABLE table_name [RESTRICT | CASCADE]

    Наприклад, для видалення таблиці Vidomist з бази необхідно застосувати оператор:

          DROP TABLE Vidomist

    Якщо в операторі вказано ключове слово RESTRICT  і в базі існує хоча б один об’єкт, який пов’язаний з таблицею table_name (наприклад, VIEW в якому використовується ця таблиця), операція видалення буде відхилена. Якщо в операторі вказано ключове слово CASCADE, автоматично буде видалена таблиця table_name і всі об’єкти, які пов’язані з цією таблицею.

    ХІД ВИКОНАННЯ РОБОТИ

    1. Видаліть таблицю, яку створили на лабораторній роботі 8.

    2. Оформіть звіт.

     

    Практична та лабораторна робота №10 Тема: Використанням команди модифікації структури таблиць

    Теоретичні відомості

    Модифікація структури таблиці (оператор ALTER TABLE)

    Для зміни структури існуючої таблиці стандартом ISO передбачено оператор ALTER TABLE. Визначення цього оператора містить шість параметрів для виконання таких операцій:

    • вставка в таблицю нового стовпчика;

    • видалення стовпчика з таблиці;

    • видалення з визначення таблиці існуючого обмеження;

    • визначення для зазначеного стовпчика значення за змовчуванням;

    • відміна встановленого значення за змовчуванням для даного стовпчика.

    Оператор ALTER TABLE має такий формат:

          ALTER TABLE table_name

          [ADD [COLUMN] column_name data_type [NOT NULL] [UNIQUE]

          [DEFAULT default_option] [CHECK (search_condition)]]

          [DROP [COLUMN] column_name [RESTRICT | CASCADE]]

          [ADD [CONSTRAINT [constrain_name]] table_constraint_definition]

          [DROP CONSTRAINT  constrain_name [RESTRICT | CASCADE]]

          [ALTER [COLUMN] SET DEFAULT default_option]

          [ALTER [COLUMN] DROP DEFAULT]

    Тут параметри мають ті ж призначення, що і в операторі CREATE TABLE. Параметр table_constraint_definition може приймати одне з таких значень: PRIMARY KEY, UNIQUE, FOREIGN KEY, CHECK. У фразі DROP COLUMN column_name  задається ім’я стовпчика, який видаляється з таблиці. Кваліфікатор RESTRICT означає, що якщо на даний стовпчик посилається який небудь інший об’єкт бази, він з таблиці не видалиться; кваліфікатор  CASCADE означає, що крім стовпчика вказаної таблиці будуть видалені всі посилання на даний стовпчик в базі. За змовчуванням діє кваліфікатор RESTRICT.

    Оператор ALTER TABLE реалізовано не у всіх діалектах SQL. В деяких діалектах підтримується урізаний варіант цього оператора (не дозволяється видаляти вже існуючі стовпчики).

    ХІД ВИКОНАННЯ РОБОТИ

    1. Створіть запит, який вставляє в таблицю Ustanova1 новий стовпчик, що носить ваше прізвище.

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

    3. Створіть запит, який визначає в таблиці Ustanova1 для стовбчика із вашим прізвищем значення за змовчуванням.

    4. Створіть запит, який відміняє в таблиці Ustanova1 для стовбчика із вашим прізвищем значення за змовчуванням.

    5. Створіть запит, який видаляє в таблиці Ustanova1 стовпчик, що носить ваше прізвище.

     

    Практична та лабораторна робота №11 Тема: Використання транзакцій

    Теоретичні відомості

    Використання транзакцій

    Стандарт ISO визначає модель транзакцій, яка використовує оператори COMMIT і ROLLBACK. Більшість (але не всі) комерційних реалізацій мови SQL підтримують цю модель, яка вперше була реалізована в СУБД DB2 корпорації IBM. Транзакцією називається логічна одиниця роботи, що складається з одного або більше SQL-операторів, яка обробляється системою як єдина і неподільна дія. В стандарті вказується, що в мові SQL транзакція автоматично запускається любим  ініціалізуючого транзакцію SQL-оператором (наприклад, SELECT, INSERT, UPDATE). Зміни, що внесені в базу даних в ході виконання даної транзакції, не будуть видимі для любих інших транзакцій, що виконуються паралельно, до тих пір поки ця транзакція не буде завершена. Завершення транзакції може бути виконано одним з наступних способів:

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

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

    • При внесенні SQL-оператора в текст програми (мається на увазі вбудований SQL) успішне завершення її роботи автоматично викличе завершення останньої запущеної програмою транзакції навіть у випадку відсутності оператора COMMIT.

    • При внесенні SQL-оператора в текст програми, що аварійно завершила свою роботу автоматично викличе відкат останньої транзакції.

    В мові SQL заборонено використовувати вкладені транзакції. За допомогою оператора SET TRANSACTION користувачі мають змогу налаштовувати процедуру обробки транзакцій. Основний формат цього оператора має вид:

          SET TRANSACTION

          [READ ONLY | READ WRITE] |

          [ISOLATION LEVEL READ UNCOMMITTED | READ COMMITTED |

          REPEATABLE READ | SERIALIZED]

    Кваліфікатори READ ONLY і READ WRITE вказують, що в транзакціях допускається лише виконання операцій читання або читання і записування відповідно. За змовчуванням використовується кваліфікатор READ WRITE (якщо тільки не вибрано рівень ізоляції READ UNCOMMITTED). Показник рівня ізоляції визначає степінь взаємодії з іншими транзакціями.

    Властивості транзакцій. Існують деякі властивості, які властиві кожній транзакції. Нижче наведено чотири основних властивостей.

    • Атомарність. Люба транзакція представляє собою неподільну одиницю роботи, яка виконується вся цілком або не виконується зовсім.

    • Узгодженність. Кожна транзакція повинна переводити базу даних з одного узгодженого стану в інший узгоджений стан.

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

    • Довготривалість. Результати успішно завершених (зафіксованих) транзакцій зберігаються в базі постійно і не повинні бути втраченими в результаті наступних аварійних ситуацій.

    ХІД ВИКОНАННЯ РОБОТИ

    1. Налаштуйте процедуру обробки трансакцій

    2. Оформіть звіт.

    З повагою ІЦ “KURSOVIKS”!