Варіант 7. “Облік кадрів”
Інформаційна система призначена для обліку особових даних працівників підприємства.
Підприємство поділене на відділи, кожен з яких має назву, абревіатуру та керівника. В кожному відділі працює не більше ніж 20 працівників. Кожен працівник характеризується табельним номером, прізвищем, ім'ям, по-батькові, паспортними даними, датою та місцем народження, домашньою адресою. Працівник працює на певній посаді, за що отримує оклад. За кожен рік, відпрацьований на підприємстві, оплата працівника збільшується на 1.2%. Працівник може міняти посади, інформаційна система повинна зберігати історію попередніх посад працівника. Працівник кожного року має відпустку, тривалість якої залежить від посади та вимірюється в днях за календарний рік роботи. Система повинна зберігати дані про всі відпустки працівників. Одночасно перебувати в відпустці можуть не більше 5 працівників одного відділу.
Система повинна надавати наступні звіти:
Список працюючих відділу (відділ – параметр).
Список працівників з вказанням періодів використаних відпусток з підсумком днів проведених в відпустках для кожного працівника.
Довідка працівника з вказанням посади та окладу.
Список відділів з вказанням керівника та кількості працюючих.
Лабораторна робота № 1. “Створення схеми БД”
1) Створити концептуальну та логічну модель предметної області згідно з описом, отриманим в викладача (відповідно до обраної предметної області).
2) Створити базу даних: створити таблиці, задати всі потрібні обмеження, створити зв’язки між таблицями. Схема бази даних повинна містити приклади використання сурогатних ключів створених за допомогою послідовностей (SEQUENCES). Схема бази даних повинна містити приклади використання всіх можливих способів перевірок обмеження цілісності, зокрема зовнішні ключі, вимоги на унікальність полів, перевірки типу CHECK, перевірки типу NULL/NOT NULL, тощо.
3) Ввести по декілька записів в кожну таблицю, проаналізувати цілісність даних.
У звіті має бути наведено:
1) схема даних (малюнок з вказанням типів зв’язків між таблицями та відповідними ключовими полями).
2) SQL-запити для створення та наповнення таблиць.
3) Роз’яснення до схеми даних:
– опис концепції роботи БД на основі представленої схеми;
– опис призначення кожної таблиці з вказанням її місця в БД згідно концепції;
– опис призначення кожного поля з обґрунтуванням типу даних та обмежень.
Лабораторна робота № 2. “Написання SQLзапитів”
Завдання лабораторної роботи виконувати в призначеній предметній області. Змістовне призначення запитів визначати самостійно виходячи з логіки предметної області.
Створити запити типу:
SELECT на базі однієї таблиці з використанням сортування, накладенням умов зі зв’язками OR та AND.
SELECT з виводом обчислюваних полів (виразів) в колонках результату.
SELECT на базі кількох таблиць з використанням сортування, накладенням умов зі зв’язками OR та AND.
SELECT на базі кількох таблиць з типом поєднання Outer Join.
SELECT з використанням операторів Like, Between, In, Exists, All, Any.
SELECT з використанням підсумовування та групування.
SELECT з використанням під-запитів в частині Where.
SELECT з використанням під-запитів в частині From.
ієрархічний SELECTзапит.
SELECTзапит типу CrossTab.
UPDATE на базі однієї таблиці.
UPDATE на базі кількох таблиць.
Append (INSERT) для додавання записів з явно вказаними значеннями.
Append (INSERT) для додавання записів з інших таблиць.
DELETE для видалення всіх даних з таблиці.
DELETE для видалення вибраних записів таблиці.
Запити можуть бути складними і поєднувати у собі одразу декілька типів (згідно завдання). У роботі має бути не менше двох таких складних запитів. При цьому обов’язково необхідно відобразити у звіті відповідні особливості запиту.
У звіті має бути наведено:
Для кожного SQL-запиту:
1) Призначення (опис завдання, яке має реалізувати запит).
2) SQL представлення.
3) Результат виконання.
4) Опис особливостей, які використані у запиті та які реалізують поставлене завдання.
Лабораторна робота № 3. “Підпрограми СУБД Oracle”
Завдання лабораторної роботи виконувати в призначеній предметній області. При написанні процедур повинні бути використані лише базові таблиці відповідно до створеної у ЛР №1 схеми БД, тобто результати роботи процедур повинні записуватися у відповідні поля існуючих таблиць БД та не можна створювати жодних тимчасових таблиць. Змістовне призначення процедур є наступним:
Варіант 1. Написати процедуру нарахування стипендії за вказаний місяць вказаному студенту. Написати процедуру, яка б викликала першу процедуру для всіх студентів.
Варіант 2. Написати процедуру нарахування оплати за оренду за вказаний місяць вказаному орендарю. Написати процедуру, яка б викликала першу процедуру для всіх орендарів.
Варіант 3. Написати процедуру визначення рейтингу кожної конференції на основі власного алгоритму, який враховував би кількість виступаючих, їхній ступінь, потрібне обладнання , тривалість виступів, тощо. Написати процедуру, яка б викликала першу процедуру для всіх конференцій за вказаний період часу.
Варіант 4. Написати процедуру нарахування оплати за вказаний місяць вказаному замовнику. Написати процедуру, яка б викликала першу процедуру для всіх замовників.
Варіант 5. Написати процедуру нарахування зарплати за вказаний місяць вказаному працівнику. Написати процедуру, яка б викликала першу процедуру для всіх працівників.
Варіант 6. Написати процедуру визначення рейтингу кожного лікаря на основі власного алгоритму, який враховував би кількість хворих, тривалість лікування, ефективність лікування, кількість протипоказань, тощо. Написати процедуру, яка б викликала першу процедуру для всіх лікарів.
Варіант 7. Написати процедуру обрахування фонду зарплати за вказаний місяць вказаному відділу. Написати процедуру, яка б викликала першу процедуру для всіх відділів.
Варіант 8. Написати процедуру нарахування оплати за вказаний місяць вказаному покупцеві. Написати процедуру, яка б викликала першу процедуру для всіх покупців.
Варіант 9. Написати процедуру визначення рейтингу кожного пілота на основі власного алгоритму, який враховував би кількість вильотів, тривалість перебування в польотах, тип літаків, звання, тощо. Написати процедуру, яка б викликала першу процедуру для всіх пілотів.
Варіант 10. Написати процедуру нарахування оплати за вказаний місяць заданому абоненту. Написати процедуру, яка б викликала першу процедуру для всіх абонентів.
Варіант 11. Написати процедуру нарахування зарплати за вказаний місяць заданому працівнику (в тому числі врахувати нарахування відпускних). Написати процедуру, яка б викликала першу процедуру для всіх працівників.
Варіант 12. Написати процедуру нарахування процентів заданому клієнту за останній розрахунковий період. Написати процедуру, яка б викликала першу процедуру для всіх клієнтів.
У звіті має бути наведено:
Для кожної процедури / функції:
1) Призначення процедури / функції.
2) Опис алгоритму роботи (концепція роботи та покроковий опис, можливо блок-схема).
3) Опис вхідних / вихідних параметрів (їх призначення, типи, варіанти застосувань).
4) Опис внутрішніх ідентифікаторів (їх призначення, типи, застосування).
5) Результати виконання.
Лабораторна робота № 4. “Тригери в СУБД Oracle”
Завдання лабораторної роботи виконувати в призначеній предметній області. Обов’язково врахувати проблему “mutating table”. Змістовне призначення тригерів є наступним:
Для всіх варіантів:
1. У всіх таблицях створити поля UCR, DCR, ULC, DLC. Написати тригери які будуть заповнювати дані поля наступним чином: UCR – ім’я користувача, що створив даний запис; DCR – дата та час створення даного запису; ULC – ім’я користувача, що останнім змінив даний запис; DLC – дата та час останньої модифікації даного запису.
2. Створити сурогатний ключ для деякої таблиці, та написати тригер для обов’язкового заповнення цього поля послідовними значеннями.
3. Написати тригери для перевірки наступних обмежень цілісності:
Варіант 1. В одній кімнаті проживає до трьох студентів. Студент не може мати одночасно позиченими книжок на суму більше ніж 100 грн.
Варіант 2. Кімната не може одночасно бути здана двом орендарям. Орендар, який має борг більший ніж сума трьохмісячної оренди не може отримувати в оренду нові приміщення.
Варіант 3. Кожен виступаючий може брати участь в кількох секціях, але за один день він може виступати тільки в одній секції. В одному приміщенні не можуть проводитися одночасно засідання двох секцій.
Варіант 4. Автобус та шофер не можуть одночасно обслуговувати дві екскурсії. Потрібно контролювати місткість автобусів та інформувати чи є вона достатньою для екскурсії. Екскурсія не може надаватись замовнику, який має борг впродовж 30 днів.
Варіант 5. Замовник не може замовити новий проект, якщо він має неоплачені на протязі 3 місяців проекти. Кожен виконавець не може прозвітувати виконання більше 10 годин роботи в день.
Варіант 6. Пацієнту не можна призначати лікарства, які є протипоказані йому, або містять протипоказані складові. Лікар не може одночасно мати більше 10 пацієнтів.
Варіант 7. Одночасно перебувати в відпустці можуть не більше 5% працівників одного відділу. В відділі не можуть працювати однофамільці керівника відділу.
Варіант 8. Система повинна забороняти продаж товару, якщо його немає в достатній кількості. Автоматично обраховувати кількість товару – залишок на складі.
Варіант 9. В кожного пілота повинна бути перерва між вильотами не менше трьох днів. Система повинна не дозволяти конфлікти з призначенням персоналу одночасно на кілька вильотів.
Варіант 10. Абонент, що не оплатив замовлені послуги за останні три місяці не може замовляти нові послуги та йому повинно бути припинене надання будь-яких послуг до сплати суми боргу (під час відключення оплата нараховуватися не повинна). Система повинна забороняти замовлення кінофільмів з позначкою «для дорослих» абонентами віком до 18 років.
Варіант 11. Працівник не може працювати в декількох відділах та на декількох посадах одночасно. Основна зарплата працівника не може бути меншою від встановленої мінімальної зарплати, працівнику забороняється нараховувати зарплату після його звільнення; виплата зарплати працівникам повинна здійснюватись не пізніше 10 числа наступного місяця, який слідує за відпрацьованим, при порушенні цього правила працівнику додається до зарплати за поточний місяць пеня в розмірі 0,1% від суми заборгованості за кожен прострочений день.
Варіант 12. Клієнт не може отримувати нові кредити у випадках, визначених у предметній області. Автоматично при будь-якій операції (одержання, сплата чи погашення кредиту) повинен обчислюватися рейтинг клієнта.
У звіті має бути наведено:
Для кожного тригера:
1) Призначення тригера.
2) Текст тригера та опис механізму роботи.
3) Опис вхідних / вихідних параметрів (їх призначення, типи, варіанти застосувань).
4) Опис внутрішніх ідентифікаторів (їх призначення, типи, застосування).
5) Приклади результатів роботи (результати повинні якнайповніше виявляти механізм роботи тригера).