- •1. Пояснення до тексту пояснювальної записки
- •1. Постановка задачі до курсової роботи
- •2. Теоретична частина (короткий опис візуальних та програмних засобів PostfreSql)
- •1.2. Поради щодо складання тексту пояснювальної записки
- •2. Варіанти задач курсової роботи
- •Варіант 2 Реалізація продукції хлібозаводу
- •Варіант 3 Нафтогазоносні родовища України
- •Варіант 4 Розміри газонафтоносних родовищ України
- •Варіант 5 Газосховища України
- •Варіант 6 Нафтобази України
- •Варіант 7 Транспортування газу по території України
- •Варіант 8 Забезпеченість України паливно-мастильними матеріалами
- •Варіант 9 Видобування нафти на Україні
- •Варіант 10 Запаси нафти на родовищах України
- •Варіант 11 Зміни запасів нафти в родовищах України
- •Варіант 12 Гiдрохiмiчний стан поверхневих вод
- •Варіант 13 Реалізація продукції хлібозаводу
- •Варіант 14 Облік відвідування занять студентами вузу
- •Варіант 15 Газосховища України
- •Варіант 16 Вміст нафтопродуктів у нафтобазах України
- •Варіант 17 Забезпеченість паливно-мастильними матеріалами
- •Варіант 18 Добовий видобуток нафти на Україні
- •Варіант 19 Кадровий облік працівників фірми
- •Варіант 20 Дані про туристичну фірму (даний варіант розглянути в прикладі)
- •Варіант 21 Продажа товарів торгівельною фірмою
- •Варіант 22 Продажа фірмою виробів із сої
- •Варіант 23 Виготовлення продукції підприємствами виробничого об’єднання
- •Варіант 24 Малий бізнес
- •Варіант 25 Книжковий магазин
- •Варіант 26 Заклади освіти
- •Варіант 27 Науково-технічна література бібліотеки
- •Напрям: код напряму, напрям;
- •Варіант 28 Транспортні підприємства
- •Варіант 29 Автомобілі
- •Варіант 30 Підприємства-банкрути
- •Завдання
- •Дата видачі завдання 02.09.2013 р.
- •Календарний план
- •1. Вступ
- •2 Коротка історія postgresql
- •2.1 Проект postgres його заснування та розробка
- •3 Основні концепції роботи з postgresql
- •3.1 Створення таблиць
- •3.1.1 Типи даних
- •3.2 Внесення даних у таблицю
- •Insert into ім’я_таблиці [(список_імен_полів)] values (значення1, значення2, …, значення n);
- •3.3 Редагування таблиць
- •Alter table ім’я_таблиці owner то новий_власник
- •3.4 Обмеження
- •Immediate – всі або конкретне обмеження перевіряються наприкінці кожної команди.
- •3.5 Послідовності
- •Drop sequence перелік_послідовностей
- •3.6 Запити
- •3.7 Об'єднання таблиць (Join)
- •3.8 Агрегатні функції
- •3.9 Курсори sql
- •4 Основні елементи мови plpgsql
- •4.1 Структура мови, функції користувача
- •4.2 Розгалуження, цикли, масиви
- •4.3 Курсори
- •5. Практична частина Завдання в-20
- •5.1 Завдання 1
- •Результати виконання:
- •5.2 Завдання 2
- •Розв'язок задачі
- •Задача 8.
- •Розв'язок задачі
- •Результати запиту:
- •5.4 Завдання 4
- •Розв'язок задачі
- •Результат задачі
- •Задача 6,9
- •Розв’язок задачі
- •Результат задачі:
- •6. Висновки
- •7. Список використаної літератури
- •Рекомендована література
5.1 Завдання 1
Спроектувати та утворити базу даних Turyst для автоматизації послуг фірми “Сьорфінг” на основі таблиці А20 додатка А, яка містить такі дані про фірму “Сьорфінг”:
найменування маршруту;
кількість днів;
дата початку маршруту;
поточна кількість проданих путівок, шт;
умови проживання;
умови харчування;
ціна за одну путівку, у. о.;
початкова кількість путівок, шт.
Розв’язок
--Створення таблиці маршрут
CREATE TABLE marshrut (nom INTEGER, name CHARACTER(40), kil_d FLOAT, kil_p INTEGER, k_u_p INTEGER, k_u_h INTEGER, cina FLOAT);
--Створення таблиці облік реалізації
CREATE TABLE oblik_realizaciy (nom INTEGER, data DATE, kil_p_p INTEGER);
--Створення таблиці проживання
CREATE TABLE prozgyvannya (k_u_p INTEGER, u_p CHARACTER (80));
--Створення таблиці харчування
CREATE TABLE harchuvannya (k_u_h INTEGER, u_h CHARACTER(80));
-- Додаємо обмеження до таблиць
ALTER TABLE marshrut ADD PRIMARY KEY (nom) ;
ALTER TABLE oblik_realizaciy ADD FOREIGN KEY (nom) REFERENCES marshrut(nom);
ALTER TABLE marshrut ADD PRIMARY KEY (k_u_p);
ALTER TABLE marshrut ADD PRIMARY KEY (k_u_h);
ALTER TABLE prozgyvannya ADD CONSTRAINT cs_marshrut FOREIGN KEY (k_u_p) REFERENCES marshrut(k_u_p);
ALTER TABLE harchuvannya ADD CONSTRAINT cs_marshrut FOREIGN KEY (k_u_h) REFERENCES marshrut(k_u_h);
ALTER TABLE marshrut ADD CONSTRAINT cs_marshrut CHECK (kil_p>0);
ALTER TABLE marshrut ADD CONSTRAINT cs_marshrut CHECK (kil_d>0);
ALTER TABLE marshrut ADD CONSTRAINT cs_marshrut CHECK (cina>0);
ALTER TABLE oblik_realizaciy ADD CONSTRAINT cs_oblik_realizaciy CHECK (kil_p_p>5);
-- Створення послідовності setnom і додавання обмеження DEFAULT до поля nom таблиці marshrut, використовуючи дану послідовність:
CREATE SEQUENCE setnom minvalue 0;
ALTER TABLE marshrut ALTER nom SET DEFAULT nextval('setnom');
Результати виконання:
5.2 Завдання 2
Підготувати і занести в таблиці контрольні дані, відредагувати, якщо потрібно
Розв'язок задачі
-- Вставляємо контрольні дані в таблицю ‘Маршрут’
INSERT INTO marshrut VALUES(1, 'Івано-Франківськ-Яремче', 2.5, 20, 1, 2, 230);
INSERT INTO marshrut VALUES(2, 'Київ-Прага', 10, 10, 1, 2, 850.5);
INSERT INTO marshrut VALUES(3, 'Львів-Одеса', 7, 15, 1, 2, 400);
INSERT INTO marshrut VALUES(4, 'Київ-Лондон', 25, 10, 1, 2, 4000);
INSERT INTO marshrut VALUES(5, 'Івано-Франківськ-Крим', 7, 40, 1, 2, 680);
-- Вставляємо контрольні дані в таблицю ‘Облік реалізації’
INSERT INTO oblik_realizaciy VALUES(1, '20.10.2012', 20);
INSERT INTO oblik_realizaciy VALUES(2, '16.12.2012', 9);
INSERT INTO oblik_realizaciy VALUES(3, '5.11.2012', 12);
INSERT INTO oblik_realizaciy VALUES(4, '5.05.2012', 8);
INSERT INTO oblik_realizaciy VALUES(5, '18.12.2011', 37);
INSERT INTO oblik_realizaciy VALUES(1, '10.10.2012', 14);
INSERT INTO oblik_realizaciy VALUES(1, '22.06.2011', 19);
INSERT INTO oblik_realizaciy VALUES(3, '05.10.2009', 14);
INSERT INTO oblik_realizaciy VALUES(2, '02.09.2012', 10);
INSERT INTO oblik_realizaciy VALUES(3, '06.01.2013', 18);
INSERT INTO oblik_realizaciy VALUES(1, '11.02.2012', 10);
INSERT INTO oblik_realizaciy VALUES(4, '10.12.2012', 8);
INSERT INTO oblik_realizaciy VALUES(5, '10.12.2012', 37);
-- Вставляємо контрольні дані в таблицю ‘Проживання’
INSERT INTO prozgyvannya VALUES(1, '3* готелі');
INSERT INTO prozgyvannya VALUES(1, '3* і 5* готелі');
INSERT INTO prozgyvannya VALUES(1, '2* і 3* готелі');
-- Вставляємо контрольні дані в таблицю ‘Харчування’
INSERT INTO harchuvannya VALUES(2, '3-разове харчування');
INSERT INTO harchuvannya VALUES(2, 'сніданок');
INSERT INTO harchuvannya VALUES(2, 'без харчування');
-- Редагуємо контрольні дані в таблиці ‘Облік реалізації’
UPDATE oblik_realizaciy SET kil_p_p = 10 WHERE nom = 4;
UPDATE oblik_realizaciy SET kil_p_p = 39 WHERE nom = 5;
-- Редагуємо контрольні дані в таблиці‘Проживання’
UPDATE prozgyvannya SET k_u_p = 2 WHERE u_p = '3* готелі';
UPDATE prozgyvannya SET k_u_p = 3 WHERE u_p = '3* і 5* готелі';
-- Редагуємо контрольні дані в таблиці‘Харчування’
UPDATE harchuvannya SET k_u_h = 4 WHERE u_h = '3-разове харчування';
UPDATE harchuvannya SET k_u_h = 5 WHERE u_h = 'сніданок';
UPDATE harchuvannya SET k_u_h = 6 WHERE u_h = 'без харчування';
-- Редагуємо контрольні дані в таблиці‘Маршрут’
UPDATE marshrut SET k_u_p = 1 WHERE nom = 1;
UPDATE marshrut SET k_u_p = 2 WHERE nom = 2;
UPDATE marshrut SET k_u_p = 3 WHERE nom = 3;
UPDATE marshrut SET k_u_p = 1 WHERE nom = 4;
UPDATE marshrut SET k_u_p = 3 WHERE nom = 5;
UPDATE marshrut SET k_u_h = 4 WHERE nom = 1;
UPDATE marshrut SET k_u_h = 5 WHERE nom = 2;
UPDATE marshrut SET k_u_h = 6 WHERE nom = 3;
UPDATE marshrut SET k_u_h = 5 WHERE nom = 4;
UPDATE marshrut SET k_u_h = 4 WHERE nom = 5;
UPDATE marshrut SET cina = 980 WHERE nom = 4;
Результати виконання завдання
5.3 Завдання 3
Виготовити запити, де відібрати дані для звітів.
--При виготовленні запиту, використовуємо JOIN для об’єднання таблиць
SELECT * FROM oblik_realizaciy
INNER JOIN marshrut ON marshrut.nom=oblik_realizaciy.nom
INNER JOIN prozgyvannya ON marshrut.k_u_p=prozgyvannya.k_u_p
INNER JOIN harchuvannya ON marshrut.k_u_h=harchuvannya.k_u_h;
Результати запиту
Задача 5.
Утворити запит про помісячну сумарну виручку за путівки в поточному році. Виручка за путівки дорівнює її ціні, помноженій на кількість проданих.
Розв'язок задачі
SELECT name, sum(marshrut.cina*oblik_realizaciy.kil_p_p),
extract (month FROM data) AS mis, extract (year FROM data) AS rik FROM oblik_realizaciy
INNER JOIN marshrut ON (marshrut.nom=oblik_realizaciy.nom)
WHERE extract (year FROM data)=extract (year FROM current_date)
GROUP BY name, mis, rik
ORDER BY name;
Результати запиту
Задача 7.
Виготовити запити для перегляду вмісту таблиць з даними та доповнення БД відомостями про нові маршрути і редагування кількості проданих путівок.
Розв'язок задачі
SELECT *FROM marshrut;
SELECT *FROM oblik_realizaciy;
SELECT *FROM prozgyvannya;
SELECT *FROM harchuvannya;
SELECT name, kil_p_p
FROM marshrut, oblik_realizaciy
WHERE oblik_realizaciy.nom=marshrut.nom AND oblik_realizaciy.nom=4;
SELECT name, kil_p_p
FROM marshrut, oblik_realizaciy
WHERE oblik_realizaciy.nom=marshrut.nom AND oblik_realizaciy.nom=5;
