Файл: Отчет По Курсовой работе По дисциплине Базы данных Тема Фотоаппараты.docx

ВУЗ: Не указан

Категория: Отчет по практике

Дисциплина: Не указана

Добавлен: 11.12.2023

Просмотров: 35

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ

УНИВЕРСИТЕТ»


Кафедра вычислительной техники




Отчет

По Курсовой работе

По дисциплине: «Базы данных»

Тема: «Фотоаппараты»
Факультет: АВТФ

Группа: АВТ-043

Студент: Логутов Р.Ю.

Преподаватель: Трошина Г.В.

Новосибирск 2022.

Оглавление

1.Введение 3

2.Задание 4

6

2 Ход работы 6

Руководство пользователя (описание функций) 32

Вывод 35

Список использованных источников 36


  1. Введение



Актуальность:

Любая современная организация не может обойтись без базы данных. Это учебные заведения, банки, магазины, заводы, любые предприятия и государственные учреждения. Они используют их для перевода данных в электронный вид и объединения данных, а также оперативного доступа к ним. Это позволяет экономить время и средства на затраты.

Конечно, снижение времени является лишь побочным эффектом автоматизации. Самая главная задача развития информационных технологий в совсем другом - в приобретении той или иной организацией исключительно новых качеств, придающих ей существенную конкурентоспособность. А это дорогого стоит.

К тому же, сейчас установка и управление базы данных не является таким уж и трудным процессом, как это было десятилетие назад. Когда проектирование и управление базами данных были не автоматизированы. Система управления базой данных позволяет создавать базу данных
, обновляя в ней хранимую информацию, обеспечивая оперативный доступ к ней для просмотра и поиска информации.

Цель:

Реализовать базу данных «Фотоаппараты» с использованием СУБД PostgreSQL и процедурного языка pgplsql, и сделать различные выборки по этой базе.

  1. Задание



Основная база данных «Фотоаппараты». Предусмотреть: ввод данных, редактирование, просмотр данных. Реализовать следующие типы запросов с использованием нескольких таблиц.

  • Для каждого фотоаппарата указать сведения о нем (наименование, дату выпуска, поставщик, цена и другие функции).

  • Для каждого фотоаппарата выдать список, отсортированный:

    • По дате выпуска

    • В алфавитном порядке

    • По стоимости

    • По дате продажи

  • Найти самый дорогой фотоаппарат, самый дешевый, среднюю стоимость.

  • Найти фотоаппараты с ценой в заданных пределах (предусмотреть ввод цены с клавиатуры).

  • Найти все фотоаппараты заданного производителя (выбор).

  • Найти все фотоаппараты с заданной датой выпуска (ввод даты).

  • Найти все фотоаппараты, чья стоимость находится в заданных пределах (ввод интервала) для заданного производителя (выбор).

  • Найти долю фотоаппаратов, проданных за определенный период (ввод периода) от общего времени продажи.

  • Найти самую популярную модель фотоаппарата (продано наибольшее количеств).

  • Найти все фотоаппараты, поступившие от заданного поставщика (выбор поставщика), чья стоимость больше, чем средняя стоимость заданного фотоаппарата (ввод марки фотоаппарата), поступившего из заданной страны (ввод наименования страны).

  • Найти долю дешевых фотоаппаратов (чья стоимость меньше заданной, ввод стоимости), поступивших от заданного поставщика (выбор поставщика) из заданной страны (выбор страны) и в целом.

  • Найти количество бракованных фотоаппаратов, поступивших из заданной страны (выбор страны) для заданного поставщика (выбор поставщика) за определенный промежуток времени (ввод интервала).

  • Найти среднюю стоимость фотоаппаратов, проданных за определенный промежуток времени (ввод интервала).

  • Найти все фотоаппараты, чья стоимость выше, чем средняя стоимость фотоаппаратов заданного производителя (выбор производителя).

  • Найти виды запасных частей, поступающих для ремонта фотоаппаратов, отсортировать по наименованиям, по стоимости, по поставщику.

  • Найти поставщиков заданного вида запасных частей (выбор) для заданного вида фотоаппаратов (выбор модели).


Рис.1. UML диаграмма БД.


2 Ход работы


  1. Создание базы данных в среде postgresql:

create database photo;

  1. Создание необходимых таблиц и их заполнение:

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. Таблица запасных частей.


  1. Выполнение заданий:

  1. Для каждого фотоаппарата выдать список, отсортированный:

По дате выпуска

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().

  1. Найти самый дорогой фотоаппарат, самый дешевый, среднюю стоимость

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().

  1. Найти фотоаппараты с ценой в заданных пределах (предусмотреть ввод цены с клавиатуры)

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.

  1. Найти все фотоаппараты заданного производителя (выбор).

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.

  1. Найти все фотоаппараты, с заданной датой выпуска (ввод даты).

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.

  1. Найти все фотоаппараты, чья стоимость находится в заданных пределах (ввод интервала) для заданного производителя (выбор).

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.


  1. Найти долю фотоаппаратов, проданных за определенный период (ввод периода) от общего времени продажи

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.

  1. Найти самую популярную модель фотоаппарата (продано наибольшее количество)