- •Постановка задачі
- •1.1 Актуальність задачі
- •1.2 Функції та задачі що вирішуються
- •Проектування бази даних
- •2.1 Створення інформаційної моделі бази даних
- •Нормалізація відношень бази даних.
- •2.3 Формалізація зв’язків між відношеннями.
- •2.4 Створення sql-запитів для побудови таблиць бази даних
- •2.5 Створення sql-запитів для маніпулювання даними, згідно з функціями потенціальних користувачів інформаційної системи.
- •2.5.1 Тригери
- •2.5.2 Представлення
- •2.5.3 Функції
- •2.5.4 Запити
- •2.6 Створення користувача
- •Висновки
- •Перелік посилань
- •Додаток а (код програми)
2.5.3 Функції
Абитуриенты из региона() – приймає на вхід назву регіону, повертає данні про студенців з цього регіону
Код функції
CREATE OR REPLACE FUNCTION public."Абитуриенты из региона"(text)
RETURNS SETOF "Абитуриент" AS
$BODY$
SELECT А.* FROM "Абитуриент" А
INNER JOIN "Место проживания" М ON М."Код" = А."Место проживания"
WHERE М."Территория" = $1;
$BODY$
LANGUAGE sql;
Абитуриенты на специальность() - приймає на вхід назву спеціальності, повертає данні про студенців на цій спеціальності
Код функції
CREATE OR REPLACE FUNCTION public."Абитуриенты на специальность"(text)
RETURNS SETOF "Абитуриент" AS
$BODY$
SELECT * FROM "Абитуриент" WHERE "Специальность" IN (SELECT "Код" FROM "Специальность" WHERE "Название" = $1)
ORDER BY "Фамилия";
$BODY$
LANGUAGE sql
Предметы по специальности() - приймає на вхід назву спеціальності, повертає данні про предмети на цій спеціальності
Код функції
CREATE OR REPLACE FUNCTION public."Предметы по специальности"(IN text)
RETURNS TABLE("Код предмета" integer, "Название" text) AS
$BODY$
SELECT "Предм_Код", "Предм_Название" FROM "Предметы для специальностей" WHERE "Спец_Название" = $1;
$BODY$
LANGUAGE sql
2.5.4 Запити
-
Запит додає новий запис до таблиці «Место проживания»
INSERT INTO "Место проживания"("Индекс", "Территория", "Населенный пункт", "Улица", "Номер дома", "Телефон")
VALUES(657855, 'Киевская область', 'Киев', 'Андреувский спуск', 1, '4564354');
-
Запит з некорректними диними що оброблюється тригером
INSERT INTO "Место проживания"("Индекс", "Территория", "Населенный пункт", "Улица", "Номер дома", "Телефон")
VALUES(657855, 'Киевская область', 'Киев', 'Андреувский спуск', 1, '45654');
Вивід консолі
-
Запит що виводить данні з представлення «10 лучших абитуриентов»
SELECT * FROM "Льготники";
-
Запит виводить суму балів ЗНО усіх абітурієнтів
SELECT А."Фамилия", А."Имя", SUM(О."Оценка") AS "Сумма балов" FROM "Абитуриент" А
INNER JOIN "Оценка ЗНО" О ON О."Абитуриент" = А."Рег. номер"
GROUP BY А."Фамилия", А."Имя";
-
Запит повертає усіх абітурієнтів з певного регіону використовуючи функцію «Абитуриенты из региона»
SELECT * FROM "Абитуриенты из региона"(CAST('Одеcская область' AS text));
-
Запит повертає кількість абітурієнтів з кожного регіону
SELECT "Территория", COUNT("Код") AS "Количество абитуриентов" FROM "Место проживания"
GROUP BY "Территория";
-
Запит виводить дані з представлення «Предметы для специальностей»
SELECT * FROM "Предметы для специальностей";
-
Запит виводить абітурієнтів, що мають якісь нагороди
SELECT "Имя", "Фамилия" FROM "Абитуриент"
WHERE "Наличие наград" = TRUE;
-
Запит додає нову оцінку за ЗНО
INSERT INTO "Оценка ЗНО"("Предмет", "Оценка", "Абитуриент") VALUES(22, 80, 3);
-
Запит виводить інформацію про абітурієнтів на спеціальності
SELECT * FROM "Абитуриент"
WHERE "Специальность" IN (
SELECT "Код" FROM "Специальность" WHERE "Название" = 'Прикладная математика')
ORDER BY "Фамилия";