
- •М. Харків 2014р.
- •Реферат
- •Реферат
- •Перелік позначень та скорочень
- •1 Основні проблеми розробки сучасних баз даних. Постановка задачі курсової роботи
- •1.1 Актуальність розробки баз даних, основні поняття та визначення
- •1.2 Аналіз наданої предметної області
- •1.2.1 Система бізнес-правил
- •1.2.2 Глосарій проекту
- •1.3 Постановка задачі дослідження
- •2 Моделювання даних предметної області
- •2.1 Розробка концептуальної моделі даних
- •2.2 Проектування логічної моделі бази даних
- •2.3 Аналіз бізнес-логіки обробки даних у предметній області та визначення основних типів запитів у системі
- •3 Реалізація моделі бази даних "бібліотеки" у mysql 5.5. Інструментальні засоби
- •3.1 Мотивований вибір скбд для реалізації проекту
- •3.2 Реалізація бази даних
- •3.3 Результати, одержані при роботі з бд
- •3.3.1 Розробка уявлень для відображення результатів вибірки
- •3.3.2 Проектування збережених процедур
- •3.3.3 Розробка механізмів управління даними в базі за допомогою тригерів
- •Висновки
- •Список інформаційних джерел
- •Додаток а
- •Додаток б
2.3 Аналіз бізнес-логіки обробки даних у предметній області та визначення основних типів запитів у системі
Для роботи з базою даних використовуються запити. Запит (query) – це засіб вибору необхідної інформації з бази даних. Питання, сформований по відношенню до бази даних, і є запит. Застосовуються два типи запитів: за зразком Query by example (QBE) і структурований мова запитів – Structured Query Language (SQL). QBE – засіб для відшукання необхідної інформації в базі даних. Він формується не на спеціальній мові, а шляхом заповнення бланка запиту у вікні Конструктора запитів. SQL-запити – це запити, які складаються (програмістами) з послідовності SQL-інструкцій. Ці інструкції задають, що треба зробити з вхідним набором даних для генерації вихідного набору. Всі запити Access будує на основі SQL-запитів, щоб подивитися їх, необхідно в активному вікні проектування запиту виконати команду Вид / SQL [23].
Існує кілька типів запитів: на вибірку, на оновлення, на додавання, на видалення, перехресний запит, створення таблиць. Найбільш поширеним є запит на вибірку. Запити на вибірку використовуються для відбору потрібної користувачу інформації, що міститься в таблицях. Вони створюються тільки для пов'язаних таблиць. Існують такі види запитів
- на вибірку;
- на додавання;
- на видалення.
- вкладений;
- прилучений;
MySQL дозволяє включати один запит до складу іншого. Вкладені запити називають також підлеглими. Вкладений запит у складі запиту SELECT поміщається в круглі дужки. Спочатку виконується вкладений запит, a потім отримані результати використовуються при обробці головного запиту. Оператор внутрішнього сполучення INNER JOIN з'єднує дві таблиці. Порядок таблиць для оператора неважливий, оскільки оператор симетричний. У випадку з left join з головної таблиці будуть вибрані всі записи, навіть якщо в присоединяемой таблиці немає збігів, тобто умова condition не враховує приєднувану праву табліцу.Right join відображає всі рядки задовольняють правій частині умови condition, навіть якщо вони не мають відповідності у головній лівої таблиці
В ході виконання КП було реалізовано ряд запитів.
Запит, що виконує вибірку читача на ім’я Ігор.
SELECT * FROM reader WHERE first_Name_reader LIKE 'Ігор';
Запит що виконує збірку книг замовлених читачем з ім’ям Ігор
SELECT Name_book FROM book WHERE Printed_matter_id IN
(SELECT Printed_matter_id FROM orderr WHERE reader_id IN
(SELECT reader_id FROM reader WHERE first_Name_reader LIKE 'Ігор')
);
Запит, що змінює імя всіх людей з фамілією Шураєв на Олег
UPDATE reader
SET first_Name_reader = 'Олег'
WHERE last_Name_reader='Шураєв'
Запит, змінює назву книги з назвою Бульба на повну назву – Тарас Бульба.
UPDATE book
SET Name_book = 'Тарас Бульба'
WHERE Name_book = 'Бульба'
Даний запит виконує видалення усіх читачів з ім’ям Арес .
DELETE FROM reader
WHERE first_Name_reader LIKE '%Арес'
Запит, що видаляє книгу з назвою Тарас Бульба з бібліотеки.
DELETE FROM book
WHERE Name_book LIKE '%Тарас Бульба'
Запит, що виконує вибірку книг і їх жанрів.
SELECT
`genre`.`Name_genre`,
`book`.`Name_book`
FROM
`book`
LEFT OUTER JOIN `genre` ON (`book`.`Genre_id` = `genre`.`Genre_id`)
GROUP BY
`genre`.`Name_genre`,
`book`.`Name_book`
Запит, що виконує вибірку книг з інформацією про їх авторів, жанр та серію.
SELECT
`genre`.`Name_genre`,
`book`.`Name_book`,
`series`.`Name_series`,
`series`.`Number`,
`author`.`first_Name`,
`author`.`last_Name`
FROM
`series`
INNER JOIN `book` ON (`series`.`Series_id` = `book`.`Series_id`)
INNER JOIN `genre` ON (`book`.`Genre_id` = `genre`.`Genre_id`)
INNER JOIN `author` ON (`book`.`Author_id` = `author`.`Author_id`)
GROUP BY
`genre`.`Name_genre`,
`book`.`Name_book`,
`series`.`Name_series`,
`series`.`Number`,
`author`.`first_Name`,
`author`.`last_Name`
Запит який здійснює вибірку читачів замовивши книгу з автором на імя Дмитро.
SELECT first_Name_reader,last_Name_reader FROM reader WHERE Reader_id IN
(SELECT Printed_matter_id FROM orderr WHERE Printed_matter_id IN
(SELECT Book_id FROM book WHERE author_id IN
(SELECT Author_id FROM author WHERE first_Name = 'Дмитро')
)
)