Файл: Отчет По Курсовой работе По дисциплине Базы данных Тема Фотоаппараты.docx
Добавлен: 11.12.2023
Просмотров: 35
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ»
Кафедра вычислительной техники
Отчет
По Курсовой работе
По дисциплине: «Базы данных»
Тема: «Фотоаппараты»
Факультет: АВТФ
Группа: АВТ-043
Студент: Логутов Р.Ю.
Преподаватель: Трошина Г.В.
Новосибирск 2022.
Оглавление
1.Введение 3
2.Задание 4
6
2 Ход работы 6
Руководство пользователя (описание функций) 32
Вывод 35
Список использованных источников 36
-
Введение
Актуальность:
Любая современная организация не может обойтись без базы данных. Это учебные заведения, банки, магазины, заводы, любые предприятия и государственные учреждения. Они используют их для перевода данных в электронный вид и объединения данных, а также оперативного доступа к ним. Это позволяет экономить время и средства на затраты.
Конечно, снижение времени является лишь побочным эффектом автоматизации. Самая главная задача развития информационных технологий в совсем другом - в приобретении той или иной организацией исключительно новых качеств, придающих ей существенную конкурентоспособность. А это дорогого стоит.
К тому же, сейчас установка и управление базы данных не является таким уж и трудным процессом, как это было десятилетие назад. Когда проектирование и управление базами данных были не автоматизированы. Система управления базой данных позволяет создавать базу данных
, обновляя в ней хранимую информацию, обеспечивая оперативный доступ к ней для просмотра и поиска информации.
Цель:
Реализовать базу данных «Фотоаппараты» с использованием СУБД PostgreSQL и процедурного языка pgplsql, и сделать различные выборки по этой базе.
-
Задание
Основная база данных «Фотоаппараты». Предусмотреть: ввод данных, редактирование, просмотр данных. Реализовать следующие типы запросов с использованием нескольких таблиц.
-
Для каждого фотоаппарата указать сведения о нем (наименование, дату выпуска, поставщик, цена и другие функции). -
Для каждого фотоаппарата выдать список, отсортированный:-
По дате выпуска -
В алфавитном порядке -
По стоимости -
По дате продажи
-
-
Найти самый дорогой фотоаппарат, самый дешевый, среднюю стоимость. -
Найти фотоаппараты с ценой в заданных пределах (предусмотреть ввод цены с клавиатуры). -
Найти все фотоаппараты заданного производителя (выбор). -
Найти все фотоаппараты с заданной датой выпуска (ввод даты). -
Найти все фотоаппараты, чья стоимость находится в заданных пределах (ввод интервала) для заданного производителя (выбор). -
Найти долю фотоаппаратов, проданных за определенный период (ввод периода) от общего времени продажи. -
Найти самую популярную модель фотоаппарата (продано наибольшее количеств). -
Найти все фотоаппараты, поступившие от заданного поставщика (выбор поставщика), чья стоимость больше, чем средняя стоимость заданного фотоаппарата (ввод марки фотоаппарата), поступившего из заданной страны (ввод наименования страны). -
Найти долю дешевых фотоаппаратов (чья стоимость меньше заданной, ввод стоимости), поступивших от заданного поставщика (выбор поставщика) из заданной страны (выбор страны) и в целом. -
Найти количество бракованных фотоаппаратов, поступивших из заданной страны (выбор страны) для заданного поставщика (выбор поставщика) за определенный промежуток времени (ввод интервала). -
Найти среднюю стоимость фотоаппаратов, проданных за определенный промежуток времени (ввод интервала). -
Найти все фотоаппараты, чья стоимость выше, чем средняя стоимость фотоаппаратов заданного производителя (выбор производителя). -
Найти виды запасных частей, поступающих для ремонта фотоаппаратов, отсортировать по наименованиям, по стоимости, по поставщику. -
Найти поставщиков заданного вида запасных частей (выбор) для заданного вида фотоаппаратов (выбор модели).
Рис.1. UML диаграмма БД.
2 Ход работы
-
Создание базы данных в среде postgresql:
create database photo;
-
Создание необходимых таблиц и их заполнение:
create table countries(id serial primary key, name char(50));
Рис.2. Таблица стран.
create table firm(id serial primary key, name char(50));
Рис.3. Таблица фирм.
create table supp( id serial primary key, name char(50));
Рис.4. Таблица поставщиков.
create table cameras(id serial primary key, model_id int references model(id), sup_id int references supp(id), country int references countries(id), date_out date, date_sell date, cost int, damaged boolean);
Рис.5. Таблица камер.
create table parts(id serial primary key, model_id int references model(id), sup_id int references supp(id), type part_type, cost int);
Рис.5. Таблица запасных частей.
-
Выполнение заданий:
-
Для каждого фотоаппарата выдать список, отсортированный:
По дате выпуска
CREATE OR REPLACE FUNCTION by_out() RETURNS TABLE (id integer, firm char(50), name char(50), cost int, country char(50), date_out date, date_sell date, supplyer char(50))
AS $$
BEGIN
RETURN QUERY SELECT cameras.id, firm.name, model.name, cameras.cost, countries.name, cameras.date_out, cameras.date_sell, supp.name
FROM cameras, firm, model, countries, supp
WHERE cameras.model_id = model.id AND cameras.sup_id = supp.id AND cameras.country = countries.id AND model.firm_id = firm.id
ORDER BY cameras.date_out;
END;
$$ LANGUAGE plpgsql;
Рис.6. Результат выполнения функции by_out().
В алфавитном порядке
CREATE OR REPLACE FUNCTION by_supname() RETURNS TABLE (id integer, firm char(50), name char(50), cost int, country char(50), date_out date, date_sell date, supplyer char(50))
AS $$
BEGIN
RETURN QUERY SELECT cameras.id, firm.name, model.name, cameras.cost, countries.name, cameras.date_out, cameras.date_sell, supp.name
FROM cameras, firm, model, countries, supp
WHERE cameras.model_id = model.id AND cameras.sup_id = supp.id AND cameras.country = countries.id AND model.firm_id = firm.id
ORDER BY supp.name;
END;
$$ LANGUAGE plpgsql;
Рис.7. Результат выполнения функции by_supname().
По стоимости
CREATE OR REPLACE FUNCTION by_cost() RETURNS TABLE (id integer, firm char(50), name char(50), cost int, country char(50), date_out date, date_sell date, supplyer char(50))
AS $$
BEGIN
RETURN QUERY SELECT cameras.id, firm.name, model.name, cameras.cost, countries.name, cameras.date_out, cameras.date_sell, supp.name
FROM cameras, firm, model, countries, supp
WHERE cameras.model_id = model.id AND cameras.sup_id = supp.id AND cameras.country = countries.id AND model.firm_id = firm.id
ORDER BY cameras.cost;
END;
$$ LANGUAGE plpgsql;
Рис.8. Результат выполнения функции by_cost().
По дате продажи
CREATE OR REPLACE FUNCTION by_sell() RETURNS TABLE (id integer, firm char(50), name char(50), cost int, country char(50), date_out date, date_sell date, supplyer char(50))
AS $$
BEGIN
RETURN QUERY SELECT cameras.id, firm.name, model.name, cameras.cost, countries.name, cameras.date_out, cameras.date_sell, supp.name
FROM cameras, firm, model, countries, supp
WHERE cameras.model_id = model.id AND cameras.sup_id = supp.id AND cameras.country = countries.id AND model.firm_id = firm.id
ORDER BY cameras.date_sell;
END;
$$ LANGUAGE plpgsql;
Рис.9. Результат выполнения функции by_sell().
-
Найти самый дорогой фотоаппарат, самый дешевый, среднюю стоимость
CREATE FUNCTION max_price() RETURNS TABLE (id integer, firm char(50), model char(50), cost integer)
AS $$
BEGIN
RETURN QUERY
SELECT cameras.id, firm.name, model.name, cameras.cost
FROM cameras, firm, model
WHERE cameras.model_id = model.id AND model.firm_id = firm.id AND cameras.cost = (SELECT MAX(cameras.cost) from cameras);
END;
$$ LANGUAGE plpgsql;
Рис.10. Результат выполнения функции max_pricel().
CREATE FUNCTION min_price() RETURNS TABLE (id integer, firm char(50), model char(50), cost integer)
AS $$
BEGIN
RETURN QUERY
SELECT camera.id, firm.name, model.name, cameras.cost
FROM cameras, firm, model
WHERE cameras.model_id = model.id AND model.firm_id = firm.id AND cameras.cost = (SELECT MIN(cameras.cost) from cameras);
END;
$$ LANGUAGE plpgsql;
Рис.11. Результат выполнения функции min_pricel().
CREATE OR REPLACE FUNCTION avg_price() RETURNS TABLE (average_cost numeric)
AS $$
BEGIN
RETURN QUERY
SELECT AVG(cameras.cost) from cameras;
END;
$$ LANGUAGE plpgsql;
Рис.12. Результат выполнения функции avg_pricel().
-
Найти фотоаппараты с ценой в заданных пределах (предусмотреть ввод цены с клавиатуры)
CREATE FUNCTION task3(integer, integer) RETURNS TABLE (id integer, firm char(50), name char(50), cost int, country char(50),
date_out date, date_sell date, supplyer char(50))
AS $$
BEGIN
RETURN QUERY
SELECT cameras.id, firm.name, model.name, cameras.cost, countries.name, cameras.date_out, cameras.date_sell, supp.name
FROM cameras, firm, model, countries, supp
WHERE cameras.model_id = model.id AND cameras.sup_id = supp.id AND cameras.country = countries.id AND model.firm_id =
firm.id AND cameras.cost BETWEEN $1 AND $2;
END;
$$ LANGUAGE plpgsql;
Рис.12. Результат выполнения функции task3.
-
Найти все фотоаппараты заданного производителя (выбор).
CREATE FUNCTION task4(char) RETURNS TABLE (id integer, firm char(50), name char(50), cost int, country char(50),
date_out date, date_sell date, supplyer char(50))
AS $$
BEGIN
RETURN QUERY
SELECT cameras.id, firm.name, model.name, cameras.cost, countries.name, cameras.date_out, cameras.date_sell, supp.name
FROM cameras, firm, model, countries, supp
WHERE cameras.model_id = model.id AND cameras.sup_id = supp.id AND cameras.country = countries.id AND model.firm_id =
firm.id AND firm.name = $1;
END;
$$ LANGUAGE plpgsql;
Рис.13. Результат выполнения функции task4.
-
Найти все фотоаппараты, с заданной датой выпуска (ввод даты).
CREATE FUNCTION task5(date) RETURNS TABLE (id integer, firm char(50), name char(50), cost int, country char(50),
date_out date, date_sell date, supplyer char(50))
AS $$
BEGIN
RETURN QUERY
SELECT cameras.id, firm.name, model.name, cameras.cost, countries.name, cameras.date_out, cameras.date_sell, supp.name
FROM cameras, firm, model, countries, supp
WHERE cameras.model_id = model.id AND cameras.sup_id = supp.id AND cameras.country = countries.id AND model.firm_id =
firm.id AND cameras.date_out = $1;
END;
$$ LANGUAGE plpgsql;
Рис.14. Результат выполнения функции task5.
-
Найти все фотоаппараты, чья стоимость находится в заданных пределах (ввод интервала) для заданного производителя (выбор).
CREATE FUNCTION task6(integer, integer, char) RETURNS TABLE (id integer, firm char(50), name char(50), cost int, country char(50),
date_out date, date_sell date, supplyer char(50))
AS $$
BEGIN
RETURN QUERY
SELECT cameras.id, firm.name, model.name, cameras.cost, countries.name, cameras.date_out, cameras.date_sell, supp.name
FROM cameras, firm, model, countries, supp
WHERE cameras.model_id = model.id AND cameras.sup_id = supp.id AND cameras.country = countries.id AND model.firm_id =
firm.id AND cameras.cost BETWEEN $1 AND $2 AND firm.name = $3;
END;
$$ LANGUAGE plpgsql;
Рис.15. Результат выполнения функции task6.
-
Найти долю фотоаппаратов, проданных за определенный период (ввод периода) от общего времени продажи
CREATE OR REPLACE FUNCTION task7(date, date) RETURNS TABLE(part float)
AS $$
BEGIN
RETURN QUERY
SELECT (SELECT COUNT(*) from cameras
WHERE cameras.date_sell BETWEEN $1 AND $2)::real
/
(SELECT COUNT(*) from cameras);
END;
$$ LANGUAGE plpgsql;
Рис.16. Результат выполнения функции task7.
-
Найти самую популярную модель фотоаппарата (продано наибольшее количество)