Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
8. Проектування реляційної бази даних..docx
Скачиваний:
9
Добавлен:
22.11.2019
Размер:
69.77 Кб
Скачать

8. 5. Використання бази даних „Навчальний процес” засобами sql

Метою будь-якої бази даних є введення, зміна, видалення і вибірка даних. Засоби мови SQL, призначені для введення, зміни, видалення даних, описані в розділі 6.4. Основним інструментом вибірки даних в мові SQL є команда SELECT (див. Розділ 6.5). Розглянемо, як з допомогою цієї команди можна отримати доступ до даних, представлених в таблицях бази даних „Навчальний процес”.

Нехай необхідно сформувати список студентів-пільговиків. Це можна зробити з допомогою наступної команди:

select student.prizv, student.ima, student.pob, pilgy.nazva_pilgy

from student, pilgy

where student.kod_ pilgy is not null and

student.kod_ pilgy = pilgy.kod_pilgy

Для формування списку студентів групи 202-БС, які навчаються на комерційній основі, необхідно виконати команду:

select student.prizv, student.ima

from student, zamov, grup

where student.kod_ zamov = zamov.kod_zamov and

student. kod_ grupa = grup.kod_grupa and

zamov.nazva_zamov = „Комерційна основа” and

grup. nazva _grupa = „202-БС”

Запити можуть керувати іншими запитами. Це робиться шляхом вміщення запиту всередину умови іншого запиту. Зазвичай, внутрішній запит генерує значення, яке перевіряється в умові зовнішнього запиту, яка визначає правильне воно чи ні. Наприклад, нам відоме прізвище студента, але нам потрібен його код для отримання даних з таблиці Успішність:

select usp.*

from usp

where kod_ st = (

select kod_ st

from student

where prizv = „Білан”

)

Вибрати з бази даних студентів, які отримали під час сесії незадовільну оцінку, можна з допомогою запиту:

select prizv, ima

from student

where kod_ st = (

select kod_ st

from usp

where ocinka = 2

)

Такий запит повертає список студентів, у якому можуть повторюватися прізвища та імена, оскільки студент під час сесії може отримати декілька негативних оцінок. Щоб уникнути цього запит слід доповнити описувачем DISTINCT.

Для того, щоб сформувати відомість рейтингу студентів, можна скористатися таким запитом:

select student.prizv, usp.avg(rating)

from student, usp

where student.kod_st = usp. kod_st

group by kod_st

order by usp.rating desc

Щоб вибрати з бази даних студента з найвищим рейтингом, потрібно виконати наступний запит:

select student.prizv, student.ima, usp.avg(rating)

from student, usp

where student.kod_st = usp. kod_st

group by kod_st

order by usp.rating desc

Для формування екзаменаційної чи залікової відомості з конкретної дисципліни використовується такий запит:

8. 6. Задачний практикум

Задача 1

Постановка задачі

Засобами MS SQL Server створити базу даних штату працівників рекламного агенства. Ця база складається з двох таблиць „Штат рекламних агентів”, „Обсяг операцій рекламного агенства”.

Поля таблиці 1 „Штат рекламних агентів”:

  • № п/п;

  • Код працівника;

  • Прізвище

  • Ім’я

  • По-батькові

  • Адреса

  • Телефон

  • Дата народження

  • Освіта

  • Стаж роботи

Поле „Код працівника” повинно бути ключовим (співпадіння не допускаються). Це поле призначене для однозначної ідентифікації кожного працівника та буде використовуватись в інших таблицях.

Поля таблиці 2 „Обсяг операцій рекламного агенства”:

  • № п/п;

  • Код працівника;

  • Дата здійснення операції

  • Сума операції

  • Назва рекламодавця

Розробити структуру таблиць. Створити зв’язок між таблицями. Головною таблицею вважати „Штат рекламних агентів”. Для зв’язування використати поля „Код працівника” обох таблиць.

Заповнити таблиці даними. В таблиці „Штат рекламних агентів” повинно бути не менше 10 записів. В таблицю „Обсяг операцій рекламного агенства” вноситься кожна здійснена операція рекламними агентами.

Створення запитів

  1. Для таблиці „Штат рекламних агентів” створити запит „Список працівників”. Виводити наступні поля таблиці:

  • Код працівників,

  • Прізвище,

  • Ім’я,

  • По-батькові.

  1. Для таблиці „Штат рекламних агентів” створити запит „Алфавітний список працівників”. Виводити наступні поля таблиці:

  • Прізвище,

  • Ім’я,

  • По-батькові,

  • Адреса,

  • Телефон.

Виконати сортування за „Прізвищем” в алфавітному порядку.

  1. Для таблиці „Штат рекламних агентів” створити запит „Досвідчені працівники”. Вивести перелік працівників, стаж роботи яких більший або рівний 10 рокам, а освіта – вища. Виводити поля:

  • Прізвище,

  • Ім’я,

  • Стаж роботи,

  • Освіта.

  1. Для таблиці „Штат рекламних агентів” створити запит „Молоді працівники”. Вивести список працівників, які народилися в період з 01.01.70 по 01.01.82. Виводити наступні поля таблиці:

  • Прізвище,

  • Ім’я,

  • Дата народження.

  1. Для таблиці „Штат рекламних агентів” створити запит „Список працівників”. Вивести список працівників, прізвища яких починаються з літери „К”. Виводити наступні поля таблиці:

  • Прізвище,

  • Ім’я,

  • По-батькові.

6) Для таблиці „Штат рекламних агентів” створити запит „Кількість працівників з вищою освітою”

Вивести поле „Освіта” і поле, в якому обчислюється кількість. Назвати це поле „Кількість працівників”.

7)Для таблиць „Штат рекламних агентів” та „Обсяг операцій рекламного агентства” створити запит „Операції рекламних агентів

Умови запиту.

Вивести список рекламних агентів в алфавітному порядку. Виводити наступні поля таблиці:

  • Прізвище

  • Ім’я

  • По-батькові

  • Сума операції

8)Для таблиць „Штат рекламних агентів” та „Обсяг операцій рекламного агентства” створити запит „Загальна сума операцій рекламних агентів

Умови запиту.

Вивести список рекламних агентів в алфавітному порядку з обчисленням загальної суми операцій, яку здійснив рекламний агент за весь період своєї роботи. Виводити наступні поля таблиці:

  • Прізвище

  • Ім’я

  • По-батькові

  • Сума операції

9)Для таблиць „Штат рекламних агентів” та „Обсяг операцій рекламного агентствастворити запит „Кількість проведених операцій рекламних агентів

Умови запиту.

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

  • Прізвище

  • Ім’я

  • По-батькові

  • Сума операції

Задача 2

Постановка задачі

Розробити базу даних за темою "Операційний відділ банку", передбачивши в ній декілька таблиць. Виконати нормалізацію бази даних, визначити ключові поля таблиць, встановити зв’язки між таблицями. Наповнити таблиці даними. Виконати запити до бази даних.

База даних складається з  таблиць-довідників „Тип операції”, „Тип документа” і таблиць облікового характеру „Клієнти банку”, „Рахунки клієнтів”, „Розрахункові документи”. Структура таблиць та зв’язки між ними зображені на рис. 21..

Рис.21. Схема бази даних "Операційний відділ банку"

Розробити структуру таблиць бази даних, визначивши назви полів, типи полів, первинні та вторинні ключі. Створити структуру бази даних і наповнити її даними.

Створення запитів

  1. Сформувати довідник рахунків клієнтів банку.

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

  3. Вибрати операції, які були здійснені клієнтом банку протягом останнього місяця.

  4. Вибрати операції, які були здійснені клієнтами банку на суму, яка перевищує 10 000 грн.

  5. Вибрати прихідні касові операції, які були здійснені клієнтами протягом банківського операційного дня.

  6. Сформувати відомість видатків та надходжень в касу банку за останній квартал поточного року.

  7. Визначити загальну кількість операцій, виконаних операційним відділом банку за поточний день (за поточний місяць).

  8. Визначити загальну суму операцій, виконаних операційним відділом банку за поточний день.

  9. Сформувати особовий рахунок клієнта банку.

Контрольні запитання

  1. Охарактеризуйте аналіз предметної області як перший етап проектування бази даних.

  2. Розкрити суть логічного проектування реляційної бази даних.

  3. В чому полягає фізичне проектування бази даних.