Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
БД Курсовая работа.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
897.92 Кб
Скачать

Министерство образования и науки Российской Федерации

Новосибирский Государственный Технический Университет

Курсовая работа

по дисциплине

«Базы данных»

Студент:

Вариант:

Белич В.Ю.

3

Группа:

ЗФ-322

Преподаватель:

Трошина Г.В.

Новосибирск

2017

Оглавление

1. Задание 2

2. Графическое представление связей между таблицами 5

3. Структуры таблиц баз данных 6

4. Содержание таблиц баз данных 7

5. Руководство пользователя 10

6. Тексты запросов и примеры работы 14

6.1. Для каждого вида товара выдать список постоянных клиентов, отсортированный: 14

по дате приобретения 14

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

по стоимости 15

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

6.3. Найти самый дорогой вид товара, самый старый по году, найти товары с ценой свыше 2000 р. (и любая другая сумма, т.е. предусмотреть ввод цены с клавиатуры) 17

самый дорогой 17

самый старый по году 17

товары с ценой свыше 2000 р. 17

произвольный ввод цены 18

6.4. Найти объем продаж заданного товара 19

за квартал 19

за год 19

за этот же период среднюю цену 19

за этот же период самую дорогую 20

за этот же период самую дешевую вещь 20

6.5. Найти товары, поставляемые заданным поставщиком (выбор поставщика), чья дата продажи находится в заданных пределах (ввод интервала) 21

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

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

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

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

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

6.11. Найти весь товар, чья стоимость выше, чем средняя стоимость товара заданного производителя 23

6.12. Найти товар, который лучше всего раскупают, указать параметры (стоимость, производитель и т.д.) 24

7. Анализ результатов и выводы 25

Список использованной литературы 26

  1. Задание

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

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

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

    • По дате приобретения

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

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

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

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

  • Найти объем продаж заданного товара за квартал, за год - за этот же период: среднюю цену, самую дорогую, самую дешевую вещь.

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

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

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

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

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

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

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

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

  1. Графическое представление связей между таблицами

  1. Структуры таблиц баз данных

CREATE TABLE zf322_belich.authors (

id serial NOT NULL,

name varchar(100) NOT NULL,

CONSTRAINT pk_authors PRIMARY KEY ( id ) );

CREATE TABLE zf322_belich.clients (

id serial NOT NULL,

name varchar(100) NOT NULL,

CONSTRAINT pk_clients PRIMARY KEY ( id ) );

CREATE TABLE zf322_belich.orders (

id serial NOT NULL,

created date NOT NULL,

clients integer NOT NULL,

CONSTRAINT pk_orders PRIMARY KEY ( id ),

CONSTRAINT fk_orders FOREIGN KEY ( clients ) REFERENCES zf322_belich.clients( id ) );

CREATE TABLE zf322_belich.places (

id serial NOT NULL,

name varchar(100) NOT NULL,

CONSTRAINT pk_places PRIMARY KEY ( id ) );

CREATE TABLE zf322_belich.sources (

id serial NOT NULL,

name varchar(100) NOT NULL,

address varchar(100) NOT NULL,

CONSTRAINT pk_source PRIMARY KEY ( id ) );

CREATE TABLE zf322_belich.types (

id serial NOT NULL,

name varchar(100) ,

CONSTRAINT pk_types PRIMARY KEY ( id ) );

CREATE TABLE zf322_belich.products (

id serial NOT NULL,

types integer NOT NULL,

name varchar(100) NOT NULL,

created date NOT NULL,

price numeric(10,2) NOT NULL,

author integer NOT NULL,

places integer NOT NULL,

sources integer NOT NULL,

CONSTRAINT pk_products PRIMARY KEY ( id ),

CONSTRAINT fk_products_types FOREIGN KEY ( types ) REFERENCES zf322_belich.types( id ) ,

CONSTRAINT fk_products_places FOREIGN KEY ( places ) REFERENCES zf322_belich.places( id ) ,

CONSTRAINT fk_products FOREIGN KEY ( author ) REFERENCES zf322_belich.authors( id ) ,

CONSTRAINT fk_products_0 FOREIGN KEY ( sources ) REFERENCES zf322_belich.sources( id ) );

CREATE TABLE zf322_belich.orders_to_products (

id serial NOT NULL,

products integer NOT NULL,

orders integer NOT NULL,

CONSTRAINT pk_orders_to_products PRIMARY KEY ( id ),

CONSTRAINT fk_orders_to_products FOREIGN KEY ( products ) REFERENCES zf322_belich.products( id ) ,

CONSTRAINT fk_orders_to_products_0 FOREIGN KEY ( orders ) REFERENCES zf322_belich.orders( id ) );

Запросы для создания ролей в БД.

CREATE ROLE r_user WITH LOGIN password '123qwe';

GRANT

SELECT

ON TABLE zf322_belich.products, zf322_belich.types, zf322_belich.sources, zf322_belich.places, zf322_belich.authors, zf322_belich.orders_to_products, zf322_belich.orders, zf322_belich.clients

TO r_user;

GRANT CONNECT ON DATABASE zf322_belich TO r_user;

GRANT USAGE ON SCHEMA zf322_belich TO r_user;

CREATE ROLE r_operator WITH LOGIN password '123qwe';

GRANT

SELECT, UPDATE, DELETE, INSERT

ON TABLE zf322_belich.products, zf322_belich.types, zf322_belich.sources, zf322_belich.places, zf322_belich.authors, zf322_belich.orders_to_products, zf322_belich.orders, zf322_belich.clients

TO r_operator;

GRANT CONNECT ON DATABASE zf322_belich TO r_operator;

GRANT USAGE ON SCHEMA zf322_belich TO r_operator;

GRANT ALL privileges ON ALL SEQUENCES IN SCHEMA zf322_belich TO r_operator;

CREATE ROLE r_admin WITH LOGIN password '123qwe';

GRANT ALL privileges ON DATABASE zf322_belich TO r_admin;

GRANT ALL privileges ON ALL TABLES IN SCHEMA zf322_belich TO r_admin;

GRANT USAGE ON SCHEMA zf322_belich TO r_admin;

GRANT ALL privileges ON ALL SEQUENCES IN SCHEMA zf322_belich TO r_admin;