
- •Частина I. Основи баз даних Тема 1. Інформаційні системи. Технології бд.
- •1. Питання на повторення.
- •2. Вправи і задачі.
- •3. Проекти і професійні питання.
- •Словник термінів до теми 1
- •Додаток
- •2. Персонал
- •3. Об’єкти нерухомості, що здаються в оренду
- •4. Володарі нерухомості.
- •5. Клієнти/орендатори.
- •9. Інспекція орендованого об’єкта.
- •Тема 2. Архітектура бд. Життєвий цикл бази данних (жцбд)
- •1. Основні теоретичні питання
- •2. Практична частина.
- •1. Питання на повторення
- •2. Вправи і завдання
- •Словник основних термінів до теми 2.
- •Частина II. Проектування баз даних Тема 3. Принципи концептуального проектування баз даних
- •1. Питання на повторення
- •2. Вправи і задачі.
- •3. Проекти для групової роботи і професійні питання
- •Словник основних термінів до теми 3
- •Мал1. Рахунки клієнтів різних типів
- •Тема 4. Реляційна модель даних і її проектування.
- •IV. Додаток
- •1. Питання на повторення
- •1.1. Поясніть своїми словами зміст термінів:
- •2.2. Використовуючи значення приблизних даних з бд «Постачальники, деталі і проекти» (Додаток, приклад 3), скажіть, яким буде результат кожної з наступних операцій(допустима/недопустима):
- •2.3. Розгляньте наступну реляційну таблицю (заголовні букви позначають імена атрибутів, рядкові букви і цифри — значення атрибутів):
- •2.4. Розгляньте наступну реляційну таблицю (заголовні букви позначають імена атрибутів, рядкові букви і цифри — значення атрибутів):
- •2.5. Розгляньте наступну реляційну таблицю (заголовні букви позначають імена атрибутів, рядкові букви і цифри — значення атрибутів):
- •2.6. Визначіть первинні і зовнішні ключі для наступних відношень, що знаходяться в межах однієї схеми бази даних та побудуйте логічну схему:
- •3. Проекти і професійні питання
- •Словник термінів до теми 4
- •Додаток.
- •База даних постачальників, деталей і проектів (значення для прикладу)
- •Частина III. Управління реляційною базою даних Тема 5. Реляційна алгебра і реляційне числення.
- •2. Вправи і задачі
- •Словник термінів до теми 5
- •Тема 6. Мова sql
- •1. Питання на повторення
- •1.1. Поясніть своїми словами значення термінів:
- •2. Вправи і завдання
- •2.3.1. Прості запити
- •2.3.2 Узагальнюючі функції
- •2.3.4. Групування
- •2.3.5. Створення і заповнення таблиць
- •2.3.6. Додаткові засоби мови sql. Представлення.
- •Тема 7. Фізична організація бази даних
- •1. Питання на повторення
- •2. Вправи і завдання
- •3. Проекти і професійні питання
- •Частина IV. Управління оточенням бази даних Тема 8. Адміністрування бази даних і контроль
- •1. Поясніть своїми словами значення термінів:
- •Частина V. Завдання до самостійної роботи Додаток індивідуальні завдання по проектуванню бд
2.3.1. Прості запити
Виберіть з бази відомості про всі готелі.
Виберіть з бази відомості про всі готелі, розташовані в Києві.
Складіть перелік імен і адрес всіх постояльців, зареєстрованих в готелях Києва, упорядкувавши інформацію по іменах постояльців в алфавітному порядку.
Складіть список всіх двокімнатних або сімейних номерів готелів з ціною менше 400 гривень в добу, упорядкувавши дані в порядку збільшення вартості номерів.
Виберіть всі записи реєстрації постояльців, в яких не було заповнено поле Дата_виїзду.
2.3.2 Узагальнюючі функції
Скільки готелів належить компанії?
Яка середня вартість номера?
Чому дорівнює загальний добовий дохід від всіх двокімнатних номерів?
Скільки різних постояльців було зареєстровано впродовж серпня місяця?
Перерахуєте всіх постояльців, що в даний час знімають номери в готелі “Європа_Готель”.
Складіть звіт, що містить повні відомості про всі номери готелю “Європа_Готель”, з вказівкою імен постояльців всіх номерів.
Чому дорівнює загальний прибуток від постояльців, зареєстрованих в готелі “Європа_Готель”, за сьогоднішній день?
Складіть список номерів готелю “Європа_Готель”, які в даний момент вільні.
Які загальні втрати від наявності в готелі “Європа_Готель” вільних номерів?
2.3.4. Групування
Визначить кількість номерів в кожному з готелів.
Визначить кількість номерів в кожному з готелів, розташованих в Києві.
Яка середня кількість постояльців, зареєстрованих в кожному з готелів в серпні місяці?
Який тип номерів найчастіше знімається в кожному з готелів Києва?
Яка сума втрат від наявності вільних номерів в кожному з готелів за сьогоднішній день?
2.3.5. Створення і заповнення таблиць
За допомогою оператора CREATE TABLE створіть таблиці Готель, Кімната, Журнал реєстрації і Клієнт.
Введіть в кожну з таблиць декілька записів.
Збільшить вартість кожного номера на 5% .
Створіть окрему таблицю з тією ж самою структурою, що і таблиця Журнал реєстрації, призначену для зберігання архівних записів. За допомогою оператора INSERT скопіюйте в нову таблицю всі записи таблиці Журнал реєстрації, створені до 1 січня 2010 року. Видаліть всі записи таблиці Журнал реєстрації, створені до 1 січня 2010 року.
2.3.6. Додаткові засоби мови sql. Представлення.
Питання
Перерахуйте переваги і недоліки, властиві представленням.
Опишіть хід виконання процесу дозволу представлення.
Яким вимогам повинно задовольняти представлення, щоб воно могло бути оновлюваним?
Вправи
1. Використовуючи базу даних Готелі України, створіть представлення:
що містить назву готелю і імена постояльців, що поселилися в цьому готелі.
що містить рахунок на оплату для кожного з постояльців готелю “Європа_Готель”.
2. Створіть таблицю Готель, використовуючи всі необхідні засоби підтримки цілісності даних, доступні в мові SQL.
3. Створіть таблиці Кімната, Журнал реєстрації і Клієнт, використовуючи будьякі необхідні засоби підтримки цілісності даних мови SQL для реалізації наступних вимог:
а) у полі Тип повинно поміщатися одне з наступних значень: номер на одного, подвійний або сімейний;
б) значення в полі Вартість повинне знаходитися в діапазоні від 100 до 200 гривень;
в) значення в полі Кімната_No має бути цілим числом в діапазоні від 1 до 100;
д) слід унеможливити повторного заселення одного і того ж номера;
е) слід унеможливити повторної реєстрації одного і того ж постояльця до закінчення терміну поточного договору з ним.
2.4. Записати інструкцію на SQL для створення таблиці секція з наступними полями:
Код секції, Назва секції, Ціна заняття, Кількість занять в тиждень, Назва залу, Прізвище тренера.
Поле Код секції є первинним ключем таблиці секція. Значення поля Кількість занять в тиждень знаходяться в межах від 1 до 7, за умовчанням цьому полю привласнюється значення 2. Значення поля Назва секції береться із списку { аеробіка, атлетика, теніс, бокс, дзюдо, плавання, шейпінг}. Поля Код секції, Назва секції, назва залу не можуть набувати значень null.
2.5. Записати інструкцію на SQL для створення таблиці УЧАСНИКИ з наступними полями:
Код учасника, Прізвище, Ім'я, По батькові, Адреса, Учбовий заклад, Спортивний разряд.
Поле Код учасника є первинним ключем таблиці учасники. Значення поля Учбовий заклад вибирається із списку (сформувати довільний список учбових закладів). Значення поля Спортивний розряд знаходяться в межах від 1 до 6, за умовчанням цьому полю привласнюється значення 6. Поля Код учасника, Прізвище, Ім'я, По батькові не можуть приймати значень null.
2.6. Записати інструкцію на SQL для створення таблиці ВІДВІДУВАННЯ СЕКЦІЇ з наступними полями:
Код секції, Код учасника № квитанції, Дата оплати, Кількість відвідин.
Поле № квитанції є первинним ключем таблиці ВІДВІДУВАННЯ СЕКЦІЇ. Поля код секції, код учасника не можуть приймати значень NULL. Поле Код секції є зовнішнім ключем до таблиці секція, а поле Код учасника — є зовнішнім ключем до таблиці учасники (назви зв’язків визначаються довільно). Для полів Код секції і Код учасника установіть режими забезпечення цілісності, яке забороняє вилучення і оновлення відповідних батьківських сутностей.
2.7. Записати на мові SQL наступні запити до бази даних . "Студенти" [8]
База даних "Студенти"
students (STUDENT_ID, surname, name, _year, group, city, faculty)
PRIMARY KEY STUDENT_ID)
subjects (SUBJECT_ID, SUBJECT_ name, lecture, appointment, SEMESTER, _HOURS)
PRIMARY KEY SUBJECT_ID
session_results (STUDENT_ID, SUBJECT_ID, EXAM_DATE, MARK)
PRIMARY KEY STUDENT_ID, SUBJECT_ID
foreign key STUDENT_ID REFERENCES students
foreign key SUBJECT_ID REFERENCES SUBJECTS
Вивести результати екзамену з дисциплін "Експертні системи" і "Системне програмне забезпечення" студентів 3 курсу фізикоматематичного факультету, що отримали оцінки 6, 7 або 8 (за 10бальною системою), у вигляді таблиці з наступними полями: SURNAME, NAME, MARK, EXAM_DATE. Відсортувати за зростанням поля SURNAME (прізвища) (за абеткою|) і по убуванню поля EXAM_DATE (дата здачі).
Дізнатіся, чи є предмети, що читаються викладачами Івановим або Петровим у 5тому семестрі для студентів фізикоматематичного факультету, на які відведена кількість годин знаходиться в межах від 30 до 70. Результати представити у вигляді таблиці з наступними полями: SUBJECT_NAME, LECTURER, _HOURS. Відсоpтувати результати запиту за зростанням (за абеткою) поля SUBJECTS і за спаданням поля HOURS.
Дізнатися, чи є предмети, що читаються викладачами Федоровим, Сидоровим або Петровим в 3 і 4 семестрах для студентів фізикоматематичного факультету, на які відведена кількість годин знаходиться в межах менше за 50. Результати представити у вигляді таблиці з наступними полями: SUBJECT_NAME, LECTURER, hours. Відсортувати результати запиту за зростанням (за абеткою) поля SUBJECTS і за спаданням поля _HOURS.
Скласти список студентів всіх курсів фізикоматематичного факультету, що отримали на іспитах, які здавалися в літню сесію, незадовільні оцінки (<= 3 за 10балльною системою),. Результати представити у вигляді таблиці з наступними полями: SURNAME, NAME, SUBJECT_NAME, LECTURER, MARK, EXAM_DATE. Відсортувати результати запиту за спаданням поля EXAM_DATE
Скласти список студентів других курсів фізикоматематичного і економічного факультетів, що отримали 9ти і 10бальні оцінки на іспитах, які здавалися в літню сесію. Результати представити у вигляді таблиці з наступними полями: SURNAME, name, SUBJECT___NAME, LECTURER, MARK, EXAM_DATE. Відсортувати результати запиту за спаданням поля MARK.
Скласти список студентів, що навчаються на історичному, економічному або юридичному факультетах, що проживають в Києві або Одесі і отримали хоч би по будьякому предмету оцінки 8 або 9. Результати представити у вигляді таблиці з наступними полями: SURNAME, NAME, SUBJECT_NAME, MARK, EXAM_DATE, FACULTY. Відсортувати результати запиту за зростанням (за абеткою) поля FACULTY і за спаданням поля MARK.
Знайти середній бал успішності для кожного студента фізикоматематичного факультету 2, 3 і 4 курсів. Результати представити у вигляді таблиці з наступними полями: SURNAME, NAME, AVERAGE_MARK, _YEAR. Відсортувати отримані результати за зростанням (за абеткою) для полів SURNAME, name і за спаданням для поля AVERAGE_MARK
Знайти середній бал успішності для кожного студента економічного, біологічного або історичного факультетів 3 і 4 курсів. Результат представити у вигляді таблиці з наступними полями: SURNAME, NAME, AVERAGE_MARK, _YEAR. Відсортувати отримані результати за зростанням (за абеткою) для полів SURNAME, NAME і за спаданням для поля AVERAGE_MARK.
Скласти список предметів, які здавалися в зимову сесію студентами фізикоматематичного факультету 4 курсу, кількість годин на вивчення яких перевищує 60. Результати представити у вигляді таблиці з наступними полями: SUBJECT_NAME, lecturer, _hours. Відсортувати отримані результати за зростанням (за абеткою) для полів SUBJECT_NAME і за спаданням для поля _HOURS.
Скласти список предметів, які здавалися в літню сесію студентами фізикоматематичного факультету 4 курсу, кількість годин на вивчення яких більше 60, але менше 100. Результати представити у вигляді таблиці з наступними полями: SUBJECT_NAME, LECTURER, _HOURS. Відсортувати отримані результати за зростанням (за абеткою) для полів SUBJECT_NAME і за спаданням для поля _HOURS.
2.8. Дайте рішення на мові SQL до вправи 8 (8.1 – 8.47) теми 5 (База даних постачальників, деталей і проектів )
2.9 Використовуючи. вправу 8 (8.1 – 8.47) теми 5 (База даних постачальників, деталей і проектів ), створіть представлення:
що містить номери постачальників і номери деталей для постачальників і деталей, які не суміщені в одному місті.
що містить кортежі постачальників, які знаходяться в Лондоні.
У базі даних постачальників, деталей і проектів створіть представлення з атрибутами номера проекту і назви міста, що складається зі всіх проектів, для яких постачальником є постачальник S1 і використовуються деталі Р1.
Проекти і професійні питання
Напишіть дослідження, присвячене ранньому етапу розвитку SQL на фірмі IBM. Розгляньте перші комерційні реалізації SQL, створені фірмами Oracle і IBM його статус стандарту ANSI і останні реалізаціі для універсальних ЕОМ і мікрокомп'ютерів.
Напишіть критичне дослідження про стандарт ANSI для SQL 1992 року. Порівняйте цей стандарт з двоматрьома комерційними продуктами.
Детально вивчіть вбудований SQL. З'ясуйте, як він взаємодіє з одним або двома базовими мовами.
Вивчіть інформаційні схеми двох різних реляційних систем управління базами даних. Як з ними можна використовувати SQL для забезпечення користувачів інформацією?
Словние основних термінів до теми 6
DELETE Операція, що видаляє рядки з реляційної таблиці.
DISTINCT . Оператор, що виключає рядки, що повторюються.
INSERT Операція, що додає рядки
INTERSECT Операція, що створює теоретико множинний перетин двох таблиць
JOIN ON Операція, що зв'язує таблиці, якщо виконана умова
JOIN USING Операція, що зв'язує таблиці, якщо вибрані загальні стовпці мають рівні значення
UNION. Операція, що створює теоретикомножинне об'єднання двох реляційних таблиць.
UPDATE Операція, що змінює значення стовпців в рядку
Базова таблиця Містить основні або дійсні дані
Базова мова. Мова програми, в яку можуть бути занурені команди SQL.
Булеві оператори. І, АБО, НЕ.
Виразпрапор Сигналізує про початок або кінець набору SQL виразів
Декартовий добуток З'єднує кожен рядок однієї таблиці з кожним рядком іншої таблиці
ЕХСЕРТ. Оператор, що створює теоретикомножинну різницю двох реляційних таблиць..
Значення параметра за умовчанням Значення параметра, що привласнюється системою у випадку якщо користувач не вказує значення
Інформаційна схема. Схема в каталозі, що містить метадані.
Каталог. У SQL92 сукупність схем, що має ім'я.
Фраза GROUP BY. Задає угрупування рядків за спільними значеннями певного стовпця (стовпців).
Фраза SELECT Ідентифікує потрібні в запиті стовпці
Корельований підзапит. Підзапит, результат якого залежить від рядка, що розглядається зовнішнім запитом.
Курсор. Занурені засоби SQL, в яких запит SQL зберігається для подальшого використання.
Метадані Інформація, що описує базу даних
Мультимножина Може мати елементи, що повторюються
Некорельований підзапит Його результати не залежать від зовнішнього запиту
Об'єднувальна сумісність. Дві або більш реляційні таблиці володіють еквівалентними (щодо їх кількості і областей). стовпцями.
Обмежувальна умова Правило, що обмежує значення даних в базі даних
Оператор EXISTS Набуває значення «істина», якщо результуюча множина не порожня
Оператор NOT EXISTS Набуває значення «істина», якщо результуюча множина порожня
Оператори порівняння. =,<>,<,>,<=,>=.
Визначення області. Спеціальний тип даних, визначений в схемі і використовується при визначеннях стовпців.
Визначення схеми Опис бази даних для СУБД
Відкрити курсор Примушує СУБД виконати запит курсора і записати результат в курсор
Підзапит Запит усередині запиту
Представлення даних. Визначення обмеженої частини бази даних.
Простий запит Запит, що зачіпає тільки таблиці бази даних
Псевдонім Альтернативне ім'я, дане таблиці
Рекурсивний зовнішній ключ. Зовнішній ключ, що посилається на свою власну таблицю.
Символи шаблону Спеціальні символи, що заміщають невизначені рядки символів
Символьні константи. Константи, що складаються з алфавітноцифрових і спеціальних символів.
Фраза FROM Перераховує існуючі таблиці, на які посилається запит
Фраза HAVING Накладає умови на групи
Фраза WHERE Задає умову вибору рядків з вказаних таблиць
Функція множини Вбудована функція