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

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

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

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

Добавлен: 11.12.2023

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

Скачиваний: 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 $$BEGINRETURN QUERY SELECT cameras.id, firm.name, model.name, cameras.cost, countries.name, cameras.date_out, cameras.date_sell, supp.nameFROM cameras, firm, model, countries, suppWHERE cameras.model_id = model.id AND cameras.sup_id = supp.id AND cameras.country = countries.id AND model.firm_id = firm.idORDER 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 $$BEGINRETURN QUERY SELECT cameras.id, firm.name, model.name, cameras.cost, countries.name, cameras.date_out, cameras.date_sell, supp.nameFROM cameras, firm, model, countries, suppWHERE cameras.model_id = model.id AND cameras.sup_id = supp.id AND cameras.country = countries.id AND model.firm_id = firm.idORDER 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 $$BEGINRETURN QUERY SELECT cameras.id, firm.name, model.name, cameras.cost, countries.name, cameras.date_out, cameras.date_sell, supp.nameFROM cameras, firm, model, countries, suppWHERE cameras.model_id = model.id AND cameras.sup_id = supp.id AND cameras.country = countries.id AND model.firm_id = firm.idORDER 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 $$BEGINRETURN QUERY SELECT cameras.id, firm.name, model.name, cameras.cost, countries.name, cameras.date_out, cameras.date_sell, supp.nameFROM cameras, firm, model, countries, suppWHERE cameras.model_id = model.id AND cameras.sup_id = supp.id AND cameras.country = countries.id AND model.firm_id = firm.idORDER 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 $$BEGINRETURN QUERYSELECT cameras.id, firm.name, model.name, cameras.costFROM cameras, firm, modelWHERE 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 $$BEGINRETURN QUERYSELECT camera.id, firm.name, model.name, cameras.costFROM cameras, firm, modelWHERE 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 $$BEGINRETURN QUERYSELECT 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.nameFROM cameras, firm, model, countries, suppWHERE 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.nameFROM cameras, firm, model, countries, suppWHERE 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.nameFROM cameras, firm, model, countries, suppWHERE 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.nameFROM cameras, firm, model, countries, suppWHERE 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 QUERYSELECT (SELECT COUNT(*) from cameras WHERE cameras.date_sell BETWEEN $1 AND $2)::real/(SELECT COUNT(*) from cameras);END;$$ LANGUAGE plpgsql;Рис.16. Результат выполнения функции task7.

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