База данных автосалона

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 13.01.2013
Размер файла 538,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

2

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

ПОСТАНОВКА ЗАДАЧИ

Задание 1

Создать базу данных, состоящую из следующих таблиц.

Справочник товаров.

Поля:

Идентификатор товара (целочисленное (4 байта), автоматическая генерация значения: начальное значение - 10, приращение - 2), первичный ключ

Код товара (тип - текстовый, постоянное кол-во символов, 15 символов), обязательное

Наименование товара (тип - текстовый, переменное кол-во символов, 25 символов), обязательное

Описание (тип текстовый Unicode, переменное кол-во символов, 1000 символов), не обязательное

Начало продаж (тип - дата и время (4 байта)), обязательное

Реестр покупок

Поля:

Идентификатор покупки (целочисленное (8 байт), автоматическая генерация значения: начальное значение - 1, приращение - 1)

Дата и время покупки (тип - дата и время (8 байт)), обязательное

Идентификатор купленного товара (тип -целочисленный (4 байта)) - ссылка на справочник товаров, обязательное

Кол-во проданного товара (тип -целочисленный (2 байта)), обязательное

Цена единицы товара (тип - денежный(4 байта)), обязательное

Скидка (тип - дробное с фиксированной точкой (2 разряда на целую часть, 2 разряда - на десятичную)) - скидка в процентах от суммы покупки, необязательное

Покупатель (тип - текстовый, переменное кол-во символов, 100 символов) - фамилия, имя и отчество покупателя, необязательное

Задание 2.

Заполните базу данных:

Введите 10 товаров

Введите 20-30 покупок. Покупки должны быть за 2007 и 2008 года. В поле покупатель должны присутствовать значения в форматах:

Фамилия

Фамилия Имя Отчество

Фамилия Имя

Фамилия И.О.

Фамилия И.

Задание 3

Напишите запрос , который выберет из реестра покупок все покупки, совершенные ранее 01.01.2008. Запрос должен вернуть все поля из реестра покупок.

Напишите запрос, который вернет покупки для определенного кода товара. Запрос должен вернуть следующие поля: Наименование товара, Покупатель, Кол-во проданного товара.

Напишите запрос, который вернёт все покупки для товаров, наименования которых содержат определённую подстроку. Запрос должен вернут следующие поля: Идентификатор покупки, Покупатель, Наименование товара, Сумма покупки (Кол-во товара * Цена ед. товара * (100% - Скидка)). Запрос оформить в виде хранимой процедуры.

Задание 4

Напишите запрос, который выводит среднюю скидку, максимальную и минимальную цену для определённого id товара.

Напишите запрос, выводящий суммы покупок и среднюю цену по кодам товара. Товары, которые ни разу не продавались, НЕ ДОЛЖНЫ присутствовать в результате запроса. Запрос оформить в виде хранимой процедуры.

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

Напишите запрос, выводящий ВСЕ товары и суммарное кол-во купленных единиц для каждого товара. Результат запроса должен содержать поля: код товара, имя товара и кол-во товара. Запрос оформить в виде хранимой процедуры.

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

Задание 5

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

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

Выполнение работы

база данные программный покупка

Задание 1.

create database mydb

use mydb

create table dbo.products(

product_id int not null identity(10,2),

product_code char(15) not null,

product_name varchar(25) not null,

product_desc nvarchar(1000) null,

product_SoS smalldatetime not null

)

alter table dbo.products

add constraint pk_products primary key (product_id)

create table dbo.purchases(

purchase_id bigint not null identity(1,1),

purchase_time datetime not null,

product_id int not null,

purchase_count smallint not null,

purchase_cost smallmoney not null,

purchase_discount decimal(4,2) null,

purchase_buyer varchar(100) null

)

alter table dbo.purchases

add constraint fk_purchases foreign key (product_id) references dbo.products(product_id)

Задание 2.

insert dbo.products(product_code, product_name,product_SoS)

values('PIZZA', 'Пица с грибами', '2005-01-01 00:00:00'),

('TEA', 'Индийский чай', '2005-01-01 00:00:00'),

('BREAD', 'Нарезной батон','2005-01-01 00:00:00'),

('WATER', 'Вода в бутылке','2005-01-01 00:00:00'),

('POTATO', 'Картошка', '2005-01-01 00:00:00'),

('CHOCOLATE', 'Шоколадный батончик','2005-01-01 00:00:00'),

('DOUGHNUTS', 'Пончики', '2005-01-01 00:00:00'),

('SHAMPOO', 'Шампунь', '2005-01-01 00:00:00'),

('JUICE', 'Апельсиновый сок', '2005-01-01 00:00:00'),

('DVD', 'DVD фильм', '2005-01-01 00:00:00')

select * from dbo.products

insert dbo.purchases(purchase_time, product_id, purchase_count, purchase_cost, purchase_discount,purchase_buyer )

values('2007-12-12 12:30:00', 12, 1, 50.00, 3.50 ,'Дунаев А.'),

('2007-13-12 8:30:00', 16, 1, 30.50, NULL,'Поташев Д. А.'),

('2007-14-12 21:20:00', 10, 2, 49.75, NULL,'Анисимов'),

('2007-15-12 12:15:00', 18, 1, 60.40, 2, 'Анисимов Алексей'),

('2007-16-12 18:45:00', 14, 1, 21.50, 1,'Поташев Дмитрий Александрович'),

('2007-17-12 8:45:00', 16, 1, 30.50, NULL,'Поташев Дмитрий'),

('2007-18-12 19:11:00', 18, 2, 60.40, 3,'Разина А.'),

('2007-19-12 20:00:00', 26, 2, 14.88, NULL,NULL),

('2007-20-12 20:00:00', 26, 8, 14.88, NULL,NULL),

('2007-21-12 8:00:00', 16, 1, 30.50, 2,'Поташев Д.'),

('2007-22-12 14:15:00', 12, 1, 50.00, NULL,'Дунаев А. Н.'),

('2007-23-12 16:45:00', 12, 2, 50.00, 3.75,'Дунаев Александр'),

('2007-24-12 20:00:00', 10, 2, 49.75, NULL,'Разина Анастасия'),

('2007-25-12 14:59:00', 10, 2, 49.75, NULL,'Поташев Д.'),

('2007-26-12 12:31:00', 16, 1, 30.20, 7.25,'Дунаев А. Н.'),

('2007-27-12 12:31:00', 18, 3, 60.32, 3.50,'Путинцев А.'),

('2007-30-12 16:00:00', 10, 20, 49.75, 5,'Поташев Д. А.'),

('2007-30-12 16:00:00', 14, 2, 21.50, 5,'Поташев Д. А.'),

('2007-30-12 16:00:00', 12, 4, 50.00, 5,'Поташев Д. А.'),

('2007-30-12 16:00:00', 18, 4, 60.40, 5,'Поташев Д. А.'),

('2007-30-12 16:00:00', 16, 2, 30.50, 5,'Поташев Д. А.'),

('2008-02-01 7:22:00', 22, 1, 115.50, NULL,'Поташев Д. А.'),

('2008-03-01 20:00:00', 26, 8, 14.88, NULL,'Поташев Д. А.'),

('2008-04-01 12:30:00', 24, 1, 32.17, NULL,'Поташев Д. А.'),

('2008-05-01 12:30:00', 28, 1, 99.99, NULL,'Дунаев А. Н.')

Результат:

Задание 3

1) select * from dbo.purchases

where purchase_time < '2008-01-01'

Результат:

2) select pr.product_name, p.purchase_buyer, p.purchase_count

from dbo.products as pr

join dbo.purchases as p

on pr.product_id = p.product_id

where pr.product_code = 'PIZZA'

Результат:

3) if exists (select * from dbo.sysobjects

where id = object_id(N'find_purchases_masked') and objectproperty(id, N'IsProcedure') = 1

)

drop procedure find_purchases_masked

go

create procedure find_purchases_masked @mask varchar(25)

as

select pr.product_id, p.purchase_buyer, pr.product_name,

case when p.purchase_discount is null then p.purchase_count * p.purchase_cost

else p.purchase_count * p.purchase_cost * ( (100-p.purchase_discount) / 100)

end as [Total cost]

from dbo.products as pr

join dbo.purchases as p

on pr.product_id = p.product_id

where pr.product_name like '%'+@mask+'%'

go

Результат:

execute find_purchases_masked @mask = 'ин'

Задание 4.

1) select SUM(p.purchase_discount) / COUNT(*) as Average_discount,

MIN(p.purchase_cost)

as min_cost,

max(p.purchase_cost)

as max_cost

from dbo.purchases as p

where product_id = 18

Результат:

2) if exists (select * from dbo.sysobjects

where id = object_id(N'find_purchases') and objectproperty(id, N'IsProcedure') = 1

)

drop procedure find_purchases

go

create procedure find_purchases

as

select pr.product_code as code,

sum(case when p.purchase_discount is null then p.purchase_count * p.purchase_cost

else p.purchase_count * p.purchase_cost * ( (100-p.purchase_discount) / 100)

end) as [Total Cost],

avg(p.purchase_cost) as Avg_cost

from dbo.purchases as p join

dbo.products as pr on pr.product_id = p.product_id group by pr.product_code;

go

Результат:

execute find_purchases

3) if exists (select * from dbo.sysobjects

where id = object_id(N'selled_products') and objectproperty(id, N'IsProcedure') = 1

)

drop procedure selled_products

go

create procedure selled_products

@count int

as

select pr.product_code as code,

pr.product_name as NAME,

COUNT(*) as [count],

max(p.purchase_cost)

as max_cost,

min(p.purchase_cost)

as min_cost

from dbo.products as pr

join dbo.purchases as p

on pr.product_id = p.product_id

group by pr.product_code, pr.product_name

having COUNT(*) > @count

go

Результат:

execute selled_products @count = 2

4) if exists (select * from dbo.sysobjects

where id = object_id(N'number_of_sold') and objectproperty(id, N'IsProcedure') = 1

)

drop procedure number_of_sold

go

create procedure number_of_sold

as

select pr.product_code as code,

pr.product_name as NAME,

sum(p.purchase_count) as number

from dbo.products as pr join

dbo.purchases as p

on pr.product_id = p.product_id

group by pr.product_code,pr.product_id, pr.product_name

go

Результат:

execute number_of_sold

5) if exists (select * from dbo.sysobjects

where id = object_id(N'best_buyer') and objectproperty(id, N'IsProcedure') = 1

)

drop procedure best_buyer

go

create procedure best_buyer @b datetime, @e datetime

as

select top 1

case

when charindex(' ', p.purchase_buyer)=0 then p.purchase_buyer

else substring(p.purchase_buyer,0, charindex(' ', p.purchase_buyer))

end as [Покупатель],

SUM(case when p.purchase_discount is null then p.purchase_count * p.purchase_cost

else p.purchase_count * p.purchase_cost * ( (100-p.purchase_discount) / 100)

end) as [Total Spent]

from dbo.purchases as p

where p.purchase_time >= @b and p.purchase_time <= @e

group by p.purchase_buyer, (case

when charindex(' ', p.purchase_buyer)=0 then p.purchase_buyer

else substring(p.purchase_buyer,0, charindex(' ', p.purchase_buyer))

end)

order by [Total Spent] desc

go

Результат:

execute best_buyer @b = '2007-20-12', @e = '2008-20-12'

Задание 5.

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

DROP FUNCTION IsYearLeap

GO

CREATE FUNCTION IsYearLeap

(

@year int

)

RETURNS INT

AS

BEGIN

RETURN CASE WHEN ((@year % 4 = 0) AND (@year % 100 != 0)) OR (@year % 400 = 0) THEN 1 ELSE 0 END

END

GO

DROP FUNCTION GetMaxDaysInMonth

GO

CREATE FUNCTION GetMaxDaysInMonth

(

@month int,

@year int

)

RETURNS INT

AS

BEGIN

RETURN CASE WHEN @month IS NULL THEN 31

WHEN @month IN (1, 3, 5, 7, 8, 10, 12) THEN 31

WHEN @month IN (4, 6, 9, 11) THEN 30

WHEN @month = 2 THEN CASE WHEN (@year IS NULL) OR (dbo.IsYearLeap(@year) <> 0)

THEN 29 ELSE 28

END

ELSE 0

END

END

GO

1) create procedure max_purchase @code char(15), @year int, @month int, @maxcost smallmoney output

as

CREATE TABLE #tempTable

(

p_day INT ,

p_sum SMALLMONEY

);

insert into #tempTable

select DAY(p.purchase_time) as p_day,

(sum(case when p.purchase_discount is null then p.purchase_count * p.purchase_cost

else p.purchase_count * p.purchase_cost * ( (100-p.purchase_discount) / 100)

end)) as p_sum

from dbo.purchases as p join

dbo.products pr on p.product_id = pr.product_id

where pr.product_code = @code and year(p.purchase_time) = @year and month(p.purchase_time) = @month

group by DAY(p.purchase_time)

declare @to int = dbo.GetMaxDaysInMonth(@month, @year)

declare @counter int = 1

while @counter <= @to

begin

if not exists(select * from #tempTable where p_day = @counter)

begin

insert into #tempTable (p_day, p_sum) values (@counter, 0)

end

set @counter = @counter + 1

end

select * from #tempTable order by p_day

select @maxcost = max(case when p.purchase_discount is null then p.purchase_count * p.purchase_cost

else p.purchase_count * p.purchase_cost * ( (100-p.purchase_discount) / 100)

end) from dbo.purchases as p

join

dbo.products pr on p.product_id = pr.product_id

where pr.product_code = @code and year(p.purchase_time) = @year and month(p.purchase_time) = @month

group by DAY(p.purchase_time)

go

Результат:

declare @var smallmoney

execute max_purchase @code = 'PIZZA', @year = 2007, @month = 12 ,@maxcost = @var output

select @var

2) drop procedure purchases_incr

go

create procedure purchases_incr @code char(15), @year int, @month int

as

CREATE TABLE #tempTable

(

p_day INT ,

p_count int

);

insert into #tempTable

select DAY(p.purchase_time) as p_day,

sum(p.purchase_count) as p_count

from dbo.purchases as p join

dbo.products pr on p.product_id = pr.product_id

where pr.product_code = @code and year(p.purchase_time) = @year and month(p.purchase_time) = @month

group by DAY(p.purchase_time)

declare @to int = dbo.GetMaxDaysInMonth(@month, @year)

declare @counter int = 1

while @counter <= @to

begin

if not exists(select * from #tempTable where p_day = @counter)

begin

insert into #tempTable (p_day, p_count) values (@counter, 0)

end

set @counter = @counter + 1

end

select p_day, (select SUM(tt.p_count) from #tempTable tt where tt.p_day <= t.p_day) from #tempTable t order by p_day

return 0

go

Результат

Размещено на Allbest.ru

...

Подобные документы

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

    дипломная работа [225,0 K], добавлен 18.05.2013

  • Разработка базы данных с информацией о сотрудниках, товарах, со справочником типов товаров средствами системы управления базами данных MySQL с помощью SQL-запросов. Разработка инфологической модели предметной области. Структура таблиц, полей базы данных.

    контрольная работа [648,7 K], добавлен 13.04.2012

  • Программные продукты, используемые при проектировании базы данных. Разработка базы данных "Библиотека" с использование программного проекта Microsoft SQL Server. Создание таблиц, триггеров, пользователей, репликации, запросов, функций, процедур.

    курсовая работа [897,6 K], добавлен 21.11.2011

  • Разработка базы данных для автоматизации учета и хранения сведений о заявках от работодателей. Проектирование приложения в СУБД Access. Описание запросов, отчетов и представлений данных. Интерфейс, условия выполнения и тестирование программного продукта.

    курсовая работа [3,7 M], добавлен 05.04.2012

  • Создание базы данных для хранения и обработки информации городской телефонной станции. Состав программного продукта. Практические аспекты лицензирования Access. Инфологическое моделирование системы. Определение логической структуры реляционной базы.

    курсовая работа [295,1 K], добавлен 16.12.2013

  • Разработка базы данных "Поставка и реализация продуктов питания". Применение базы данных. Цель инфологического проектирования. Выборка информации при помощи запросов. Подпрограммы, работающие на сервере и управляющие процессами обработки информации.

    курсовая работа [326,0 K], добавлен 28.06.2011

  • Особенности проектирования программы на языке С++ для обработки данных из таблиц базы данных. Основные функции программы, создание концептуальной модели базы данных и диаграммы классов, разработка интерфейса пользователя и запросов к базе данных.

    курсовая работа [2,1 M], добавлен 08.06.2012

  • Проведение исследования стандартов и основ проектирования базы данных. Особенность создания запросов на языке SQL. Функциональные требования, предъявляемые к программе Microsoft SQL Server. Анализ заполнения таблиц. Создание процедур и запросов.

    курсовая работа [2,7 M], добавлен 19.03.2021

  • Построение информационно-логической модели базы данных. Корректировка данных средствами запросов. Проектирование алгоритмов обработки данных. Реализация пользовательского интерфейса средствами форм. Разработка запросов для корректировки и выборки данных.

    курсовая работа [680,9 K], добавлен 19.10.2010

  • Проектирование базы данных, предназначенной для ввода, хранения и обработки информации по продажам сотовых телефонов. Список таблиц и свойств полей таблиц. Описание созданных запросов, отчётов и форм. Руководство пользователя, условия применения данных.

    курсовая работа [1,9 M], добавлен 14.05.2014

  • Определение базы данных и банков данных. Компоненты банка данных. Основные требования к технологии интегрированного хранения и обработки данных. Система управления и модели организации доступа к базам данных. Разработка приложений и администрирование.

    презентация [17,1 K], добавлен 19.08.2013

  • Исследование значения информации и информационных услуг в современном мире. Изучение истории хранения и обработки информации. Проектирование инфологической модели базы данных. Реляционная модель баз данных. Домены и отношения. Реляционное исчисление.

    курсовая работа [47,9 K], добавлен 13.07.2015

  • База данных для ЗАО "ФК "Зенит", предназначенная для хранения и обработки данных о работниках клуба, его бюджете и результатах участия в соревнованиях. Разработка предварительных отношений и пользовательского интерфейса. Структура таблиц базы данных.

    курсовая работа [4,4 M], добавлен 10.12.2011

  • Использование баз данных менеджерами автосалонов для повышения качества и скорости обслуживания клиентов. Создание запросов на добавление, удаление, обновление данных. Запросы перекрестный, на выборку. Кнопочная форма базы данных с практичным интерфейсом.

    курсовая работа [1,6 M], добавлен 10.02.2014

  • Проведение системного анализа предметной области и разработка проекта по созданию базы данных для хранения информации о перевозках пассажиров и грузов. Обоснование выбора системы управления базой данных и разработка прикладного программного обеспечения.

    курсовая работа [1,1 M], добавлен 18.07.2014

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

    курсовая работа [501,7 K], добавлен 02.12.2014

  • Системы управления базами данных и их использование для решения задач автоматизации предприятия. Разработка информационного и программного обеспечения для автоматизации хранения и обработки информации при организации работы агропромышленного предприятия.

    курсовая работа [607,1 K], добавлен 07.05.2011

  • Разработка и программная реализация сайта и базы данных, наполнение базы данных тестовой информацией о товарах. Инструментальные средства создания сайта. Организация тестирования сайта, модуль визуализации интерфейса. Создание запросов в базе данных SQL.

    курсовая работа [1,4 M], добавлен 24.12.2012

  • Разработка программного продукта "ИС Автотранспорт". Автоматизация функционирования автопарка и временного склада товаров, учета заявок клиентов и заполнения путевых листов. Реляционная модель базы данных. Описание функционирования программного продукта.

    дипломная работа [1,8 M], добавлен 14.03.2017

  • Основные понятия базы данных. Разработка сложной формы для обработки данных. Модели организации данных. Архитектура Microsoft Access. Реляционные связи между таблицами баз данных. Проектирование базы данных. Модификация данных с помощью запросов действий.

    лабораторная работа [345,5 K], добавлен 20.12.2011

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.