- •Тема 9. Системи управління базами даних
- •9.1. Теоретичні відомості та методичні поради до вивчення теми
- •9.1.1. Основні концепції бази даних
- •9.1.2. Проектування бази даних
- •Варіант 1. Етапи проектування бази даних
- •6. Відновлення структури бази даних.
- •Варіант 2. Розробка проекту бази даних
- •9.1.3. Microsoft Access як реляційна субд
- •9.1.3.1. Визначення даних і їх збереження
- •9.1.3.2. Обробка даних
- •9.1.4. Архітектура Microsoft Access
- •9.1.5. Таблиці і поля
- •9.1.5.1. Стовпчики і рядки, поля та записи
- •9.1.5.2. Робота з вікном бази даних
- •9.1.5.3. Створення нової таблиці
- •9.1.5.4. Типи полів
- •9.1.5.5. Використання засобу «Описание»
- •9.1.5.6. Властивості поля
- •9.1.5.7. Формати полів (Format)
- •9.1.5.8. Маска введення (Input Mask)
- •9.1.5.9. Підпис поля (Caption)
- •9.1.5.10. Значення за замовчування (Default Value)
- •9.1.5.11. Умова на значення (Validation Rule) і повідомлення про помилку (Validation Text)
- •9.1.5.12. Обов’язкове поле (Required)
- •9.1.5.13. Порожні рядки (Allow Zero Lenght)
- •9.1.5.14. Індексоване поле
- •9.1.5.15. Установка індексів — первинних ключів
- •9.1.6. Модифікація структури таблиці, дії над таблицями
- •9.1.6.1. Зміна проекту бази даних
- •9.1.6.2. Дії з таблицями
- •9.1.6.3. Друк таблиці
- •9.1.6.4. Пошук даних
- •9.1.6.5. Встановлення зв’язків між таблицями
- •9.1.7. Прості запити
- •9.1.7.1. Створення та використання запиту
- •9.1.7.2. Задання умов у запитах
- •9.1.7.3. Створення запитів для проведення статистичних розрахунків
- •9.1.7.4. Узагальнюючі запити для груп записів
- •9.1.7.5. Обчислювальні (розрахункові) поля в запиті
- •9.1.8. Реляційна модель даних
- •9.1.8.1. Відношення
- •9.1.8.2. Домени та атрибути
- •9.1.8.3. Ключі
- •9.1.8.4. Реляційна модель даних «Постачальники-деталі»
- •9.1.9. Реляційна алгебра
- •9.1.10. Структурована мова запитів (sql)
- •9.1.11. Застосування форм
- •9.1.11.1. Стандартна панель інструментів вікна режиму форми
- •9.1.11.2. Заголовок, ділянка даних і ділянка приміток
- •9.1.11.3. Створення простої форми для введення даних
- •9.1.11.4. Розробка форм вручну
- •9.1.12. Створення звітів
- •9.1.12.1. Автоматичне створення звіту
- •9.1.12.2. Створення звітів за допомогою майстра звітів
- •9.2. Контрольні запитання та теми для обговорення
- •9.3. Завдання для самостійної роботи
- •9.3.1. Проектування баз даних та робота з ними
- •Завдання 2
- •Завдання 6
- •Завдання 7
- •Завдання 8
- •9.3.2. Використання структурованої мови запитів (sql)
- •9.4. Завдання для перевірки знань
- •9.5. Основні терміни та визначення
9.3.2. Використання структурованої мови запитів (sql)
Усі вправи в цьому розділі ґрунтуються на моделі даних, яка визначається так:
DOMAIN |
S# |
CHARACTER (5) |
DOMAIN |
SNAME |
CHARACTER (20) |
DOMAIN |
STATUS |
NUMERIC (3) |
DOMAIN |
CITY |
CHARACTER (15) |
DOMAIN |
P# |
CHARACTER (5) |
DOMAIN |
PNAME |
CHARACTER (20) |
DOMAIN |
COLOR |
CHARACTER (6) |
DOMAIN |
WEIGHT |
NUMERIC (4) |
DOMAIN |
J# |
CHARACTER (5) |
DOMAIN |
JNAME |
CHARACTER (20) |
DOMAIN |
QTY |
NUMERIC (5) |
RELATION S (S#, SNAME, STATUS, CITY) KEY (S#)
RELATION P (P#, PNAME, COLOR, WEIGHT, CITY) KEY (P#)
REATIONS j (j#, jname, city) key (j#)
RELATION SPJ (S#, P#, J#, QTY) KEY (S#, P#, J#)
Припускається, що в цих відношеннях є невідомий користувачеві порядок. Суть кортежу відношення SPJ така: заданий постачальник (S#) поставляє задану деталь (P#) для заданого проекту (J#) в заданій кількості. Приклади деяких значень даних наведені нижче у таблицях. Самостійне розв’язання цих вправ дасть можливість зрозуміти, як правильно будувати запити мовою SQL. Вправи розташовані в порядку зростання складності. Всі виконувати не обов’язково, але розв’язувати потрібно доти, доки не стане зрозумілим механізм побудови запитів мовою SQL.
S
S# |
SNAME |
STATUS |
CITY |
S1 |
Smith |
20 |
London |
S2 |
Jones |
10 |
Paris |
S3 |
Blake |
30 |
Paris |
S4 |
Clark |
20 |
London |
S5 |
Adams |
30 |
Athens |
P
P# |
PNAME |
COLOR |
WEIGHT |
P1 |
Nut |
Red |
12 |
P2 |
Bolt |
Green |
17 |
P3 |
Screw |
Blue |
17 |
P4 |
Screw |
Red |
14 |
P5 |
Cam |
Blue |
12 |
P6 |
Cog |
Red |
19 |
J
J# |
JNAME |
CITY |
J1 |
Sorter |
Paris |
J2 |
Panch |
Rome |
J3 |
Reader |
Athens |
J4 |
Console |
Athens |
J5 |
Collator |
London |
J6 |
Terminal |
Oslo |
J7 |
Tape |
London |
SPJ
S# |
P# |
J# |
QTY |
S1 |
P1 |
J1 |
200 |
S1 |
P1 |
J4 |
700 |
S2 |
P3 |
J1 |
400 |
S2 |
P3 |
J2 |
200 |
S2 |
P3 |
J3 |
200 |
S2 |
P3 |
J4 |
500 |
S2 |
P3 |
J5 |
600 |
S2 |
P3 |
J6 |
400 |
S2 |
P3 |
J7 |
800 |
S2 |
P5 |
J2 |
100 |
S3 |
P3 |
J1 |
200 |
S3 |
P4 |
J2 |
500 |
S4 |
P6 |
J3 |
300 |
S4 |
P6 |
J7 |
300 |
S5 |
P2 |
J2 |
200 |
S5 |
P2 |
J4 |
100 |
S5 |
P5 |
J5 |
500 |
S5 |
P5 |
J7 |
100 |
S5 |
P6 |
J2 |
200 |
S5 |
P1 |
J4 |
1000 |
S5 |
P3 |
J4 |
1200 |
S5 |
P4 |
J4 |
800 |
S5 |
P5 |
J4 |
400 |
S5 |
P6 |
J4 |
500 |
Вправа 1. Одержати повні відомості про всі проекти.
Вправа 2. Одержати повні відомості про всі проекти у Лондоні.
Вправа 3. Одержати номер деталі, для якої немає іншої деталі, що має менше значення ваги.
Вправа 4. Одержати значення S# для постачальників, які виконують поставки для проекту J1.
Вправа 5. Одержати значення S# для постачальників, які постачають для проекту J1 деталь P1.
Вправа 6. Одержати назви проектів (JNAME), для яких виконує поставки постачальник S1.
Вправа 7. Одержати назви кольорів (COLOR) для деталей, які постачає постачальник S1.
Вправа 8. Одержати номери постачальників (S#), які постачають деталі для проектів J1 i J2.
Вправа 9. Одержати значення S# для постачальників, які постачають для проекту J1 червону (RED) деталь.
Вправа 10. Одержати значення P# для деталей, які постачаються для будь-якого проекту в Лондоні.
Вправа 11. Одержати значення S# для постачальників, які постачають для проектів у Лондоні та Парижі червону (RED) деталь.
Вправа 12. Одержати значення P# для деталей, що постачаються для будь-якого проекту постачальником, який перебуває у цьому ж місті.
Вправа 13. Одержати значення P# для деталей, що постачаються для будь-якого проекту в Лондоні постачальниками, які перебувають у Лондоні.
Вправа 14. Одержати значення J# для проектів, що постачаються щонайменше одним постачальником, який перебуває не в цьому самому місті.
Вправа 15. Одержати значення J# для проектів, для яких не постачається жодної червоної деталі постачальником з Лондона.
Вправа 16. Одержати значення S# для постачальників, які постачають щонайменше одну деталь, що надходить хоча б від одного постачальника, який постачає хоча б одну червону деталь.
Вправа 17. Одержати значення J# для проектів, що використовують щонайменше одну деталь, яку можна одержати від постачальника S1.
Вправа 18. Одержати всі пари значень міст (CITY) таких, що постачальник у першому місті постачає проект у другому місті.
Вправа 19. Одержати всі триплети (CITY, P#, CITY) таких, що постачальник у першому місті постачає певну деталь для проекту в другому місті.
Вправа 20. Повторити вправу 19, але не робити вибірки триплетів, у яких два значення CITY збігаються.
Вправа 21. Одержати значення S# для постачальників, які постачають одну й ту саму деталь для всіх проектів.
Вправа 22. Одержати значення J# для проектів, які постачаються повністю постачальником S1.
Вправа 23. Одержати значення номерів тих деталей (P#), які постачаються для всіх проектів у Лондоні.
Вправа 24. Одержати значення J# для проектів, що використовують лише деталі, які постачаються постачальником S1.
Вправа 25. Одержати значення J# для проектів, що використовують лише ті деталі, що надходять від постачальника S1.
Вправа 26. Одержати значення J# для проектів, що постачаються постачальником S1 усіма деталями, які S1 постачає.
Вправа 27. Одержати значення J# для проектів, що одержують щонайменше кілька деталей від постачальника S1.
Вправа 28. Одержати значення J# для проектів, що постачаються всіма постачальниками червоної деталі.
Вправа 29. Змінити назву проекту J6 на «VIDEO».
Вправа 30. Змінити колір усіх червоних деталей на оранжевий.
Вправа 31. Зробити всі необхідні зміни для випадку, коли певна кількість деталей P1, що постачаються для проекту J1 постачальником S1, має тепер постачатися постачальником S2.