Студопедия КАТЕГОРИИ: АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Организация процессов обработки данных в БД ⇐ ПредыдущаяСтр 4 из 4
Прежде чем переходить к созданию запросов к БД, необходимо сначала заполнить все таблицы информацией. Текст инструкции на языке Transact-SQL для ввода данных в каждую из созданных таблиц по одной записи представлен ниже, остальные записи вносились аналогичным образом.
INSERTINTO[Opt_firm].[dbo].[Kategoria]([nazvanie_kat]) VALUES ('Антифризы') \ GO INSERTINTO[Opt_firm].[dbo].[Otdel]([nazvanie_otd]) VALUES('Отдел выписки товаров') GO INSERTINTO[Opt_firm].[dbo].[Operator]([FIO],[dolgnost],[adress],[tel],[ID_otd]) VALUES ('Горячева Оксана Александровна', 'Оператор выписки товаров', 'г. Киров, ул. Физкультурников, д. 33, кв. 67', '8-922-909-30-03',1) GO INSERTINTO[Opt_firm].[dbo].[Napravlenie]([nazvanie_napr], [ID_op]) VALUES ('Киров', 8) GO INSERTINTO[Opt_firm].[dbo].[Pokupatel]([naimenovanie],[INN],[adress],[tel],[kontact]) VALUES ('Атлашкин Антон Игоревич ИП', '434268651990', '610027, г. Киров, ул. КарлаЛибкнехта, д.133, кв.46', '8-922-660-78-81', '') GO INSERTINTO[Opt_firm].[dbo].[Prodazha]([num_dog],[data_dog],[summa_dog],[ID_pkp]) VALUES ('3594','26.12.2016', 152900, 1) GO INSERTINTO[Opt_firm].[dbo].[Tovar]([articul],[nazvanie],[ed_izm],[ves],[kol],[price],[ID_kat]) VALUES ('5631','Антигравий BODY-550 черный Проф. 1000 мл', 'шт.', 1, 116, 367, 2) GO INSERTINTO[Opt_firm].[dbo].[Otgruzka]([num_UPD],[data_UPD],[sum_ves],[cost],[ID_prd],[ID_op]) VALUES ('5985','01.03.2017', 489, 14757, 7, 7) GO INSERTINTO[Opt_firm].[dbo].[UPD]([ID_tvr],[ID_otgr],[kol_tvr],[ves_tvr],[cost_tvr]) VALUES (20, 8, 33, 165, 2145) GO
Скриншоты заполненных таблиц представлены в Приложении 2. Ниже представлены тексты различных запросов, которые были сформулированы на языке Transact-SQLс помощью условий, с применением сортировки, с ограничением числа выводимых записей, с использованием внутренних, внешних, перекрестных соединений и объединений, а также с использованием агрегатных функций, группировкой записей и применением подзапросов. Запрос 1. Выбрать первые 10 товаров, стоимость которых ниже 200 р., отсортировать их по возрастанию цены. Текстзапроса: SELECTTOP(10)articul,nazvanie,ed_izm,ves,price FROMTovar WHEREprice< 200 ORDERBYpriceASC GO
Запрос 2. Выбрать все отгрузки по договору №3378 от 20.12.2016 г. с указаниемданных договора и ФИО оператора, осуществлявшего отгрузку,отсортировать по номеру УПД. Текст запроса: SELECTdbo.Otgruzka.num_UPDASНомер_УПД,dbo.Otgruzka.data_UPDASДата_УПД,dbo.Otgruzka.costASСумма_УПД,dbo.Prodazha.num_dogASНомер_договора,dbo.Prodazha.data_dogASДата_договора,dbo.Prodazha.summa_dogASСумма_договора,dbo.Operator.FIOASОператор FROMdbo.OperatorINNERJOIN dbo.OtgruzkaONdbo.Operator.ID_op=dbo.Otgruzka.ID_opINNERJOIN dbo.ProdazhaONdbo.Otgruzka.ID_prd=dbo.Prodazha.ID_prd WHERE (dbo.Prodazha.num_dog='3378')AND(dbo.Prodazha.data_dog='20.12.2016') ORDERBYНомер_УПД
3. Вывести всех покупателей, номера договоров, номера и сумму УПД по которым провели отгрузку 06.03.2017 года по каждому оператору. Текст запроса: SELECTdbo.Pokupatel.naimenovanieASПокупатель,dbo.Pokupatel.INNASИНН, dbo.Prodazha.num_dogASНомер_договора,dbo.Otgruzka.num_UPDASНомер_УПД,dbo.Otgruzka.costASСумма_УПД, dbo.Operator.FIOASОператор FROMdbo.OperatorINNERJOIN dbo.OtgruzkaONdbo.Operator.ID_op=dbo.Otgruzka.ID_opINNERJOIN dbo.ProdazhaONdbo.Otgruzka.ID_prd=dbo.Prodazha.ID_prdINNERJOIN dbo.PokupatelONdbo.Prodazha.ID_pkp=dbo.Pokupatel.ID_pkp WHERE (dbo.Otgruzka.data_UPD='06.03.2017')
4. Вывести список товаров с указанием количества, веса и суммы, а также номера УПД и даты отгрузки, которые были отгружены оператором Сидоровой Ольгой Юрьевной за период с 04.03.2017 г. по 06.03.2017 г. Текст запроса: SELECTdbo.Tovar.articulASАртикул,dbo.Tovar.nazvanieASНазвание,dbo.UPD.kol_tvrASКоличество, dbo.UPD.ves_tvrASВес,dbo.UPD.cost_tvrASСтоимость,dbo.Otgruzka.num_UPDASНомер_УПД, dbo.Otgruzka.data_UPDASДата_УПД,dbo.Operator.FIOASОператор FROM dbo.TovarINNERJOIN dbo.UPDONdbo.Tovar.ID_tvr=dbo.UPD.ID_tvrINNERJOIN dbo.OtgruzkaONdbo.UPD.ID_otgr=dbo.Otgruzka.ID_otgrINNERJOIN dbo.OperatorONdbo.Otgruzka.ID_op=dbo.Operator.ID_op WHERE ((dbo.Otgruzka.data_UPD>='04.03.2017')AND(dbo.Otgruzka.data_UPD<='06.03.2017'))AND(dbo.Operator.ID_op= 7)
5. Вывести по каждому покупателю количество проведенных отгрузок и их сумму за период с 02.03.2017 г. по 05.03.2017 г. Текст запроса: SELECTDISTINCTdbo.Pokupatel.naimenovanieASПокупатель,dbo.Pokupatel.INNASИНН,COUNT(dbo.Otgruzka.ID_otgr)OVER (PARTITIONBYdbo.Pokupatel.ID_pkp)ASКоличество_отгрузок, SUM(dbo.Otgruzka.cost)OVER (PARTITIONBYdbo.Pokupatel.ID_pkp)ASСумма_отгрузок FROMdbo.OtgruzkaINNERJOIN dbo.ProdazhaONdbo.Otgruzka.ID_prd=dbo.Prodazha.ID_prdINNERJOIN dbo.PokupatelONdbo.Prodazha.ID_pkp=dbo.Pokupatel.ID_pkp WHERE (dbo.Otgruzka.data_UPD>='02.03.2017')AND(dbo.Otgruzka.data_UPD<='05.03.2017')
6. Вывести по каждому отгруженному 01.03.2017 г. товару общее количество, суммарный вес и стоимость, отсортировать по категориям товара. Текст запроса: SELECTDISTINCTdbo.Kategoria.nazvanie_kat,dbo.Tovar.articul,dbo.Tovar.nazvanie, SUM(dbo.UPD.kol_tvr)OVER (PARTITIONBYdbo.Tovar.ID_tvr)ASКоличество, SUM(dbo.UPD.ves_tvr)OVER (PARTITIONBYdbo.Tovar.ID_tvr)ASВес, SUM(dbo.UPD.cost_tvr)OVER (PARTITIONBYdbo.Tovar.ID_tvr)ASСумма FROMdbo.TovarINNERJOIN dbo.UPDONdbo.Tovar.ID_tvr=dbo.UPD.ID_tvrINNERJOIN dbo.OtgruzkaONdbo.UPD.ID_otgr=dbo.Otgruzka.ID_otgrINNERJOIN dbo.KategoriaONdbo.Tovar.ID_kat=dbo.Kategoria.ID_kat WHEREdbo.Otgruzka.data_UPD='02.03.2017' ORDERBYdbo.Kategoria.nazvanie_kat
Хранимой процедуройназывается объект базы данных, представляющий собой набор SQL-инструкций, который компилируется один раз и хранится на сервере. Ниже представлены тексты запросов разработанных хранимых процедур. Хранимая процедура 1: вывод остатков товаров на складе. Текст создания хранимой процедуры: CREATEPROCEDUREOstatki AS BEGIN SELECTdbo.Kategoria.nazvanie_katASКатегория, dbo.Tovar.articulASАртикул, dbo.Tovar.nazvanieASНазвание, dbo.Tovar.ed_izmASЕд_изм, dbo.Tovar.vesASВес_ед, dbo.Tovar.kolASКоличество_на_складе, dbo.Tovar.priceASЦена_за_ед FROMdbo.TovarINNERJOIN dbo.KategoriaONdbo.Tovar.ID_kat=dbo.Kategoria.ID_kat END GO
2. Хранимая процедура на сумму отгрузок по договору. Текст создания хранимой процедуры: CREATEPROCEDUREOtgruzka_po_dogovoru @nomer_dogovoraVARCHAR(12) AS BEGIN SELECTDISTINCTdbo.Prodazha.num_dogASНомер_договора, dbo.Prodazha.data_dogASДата_договора, dbo.Prodazha.summa_dogASСумма_договора, SUM(dbo.Otgruzka.cost)OVER (PARTITIONBYdbo.Otgruzka.ID_prd)ASСумма_отгрузок FROMdbo.OtgruzkaINNERJOIN dbo.ProdazhaONdbo.Otgruzka.ID_prd=dbo.Prodazha.ID_prd WHEREdbo.Prodazha.num_dog=@nomer_dogovora; END GO Представлением (view) называют объект базы данных, являющийся результатом выполнения запроса к базе данных, определенного с помощью оператора SELECT, в момент обращения к представлению. Представления иногда называют «виртуальными таблицами» и используюттакие конструкции для выборки данных, содержащихся в одной или более таблицах базы данных. Ниже представлены тексты запросов на создание представлений. 1. Представление, выводящее информацию по покупателям и их договорам. Текст запроса: SELECTdbo.Pokupatel.naimenovanieASПокупатель,dbo.Pokupatel.INNASИНН,dbo.Pokupatel.adressASАдрес,dbo.Pokupatel.telASТелефон, dbo.Pokupatel.kontactASКонтактное_лицо,dbo.Prodazha.num_dogASНомер_договора,dbo.Prodazha.data_dogASДата_договора,dbo.Prodazha.summa_dogASСумма_договора FROMdbo.PokupatelINNERJOIN dbo.ProdazhaONdbo.Pokupatel.ID_pkp=dbo.Prodazha.ID_pkp
2. Представление, выводящее информацию по договорам, отгрузкам и операторам. Текст запроса: SELECTTOP (100)dbo.Prodazha.num_dogASНомер_договора,dbo.Prodazha.data_dogASДата_договора, dbo.Prodazha.summa_dogASСумма_договора,dbo.Otgruzka.num_UPDASНомер_УПД,dbo.Otgruzka.data_UPDASДата_УПД, dbo.Otgruzka.costASСумма_УПД,dbo.Otdel.nazvanie_otdASОтдел,dbo.Operator.FIOASОператор, dbo.Operator.dolgnostASДолжность,dbo.Operator.telASТелефон FROMdbo.OperatorINNERJOIN dbo.OtdelONdbo.Operator.ID_otd=dbo.Otdel.ID_otdINNERJOIN dbo.OtgruzkaONdbo.Operator.ID_op=dbo.Otgruzka.ID_opINNERJOIN dbo.ProdazhaONdbo.Otgruzka.ID_prd=dbo.Prodazha.ID_prd ORDERBYdbo.Prodazha.num_dog
Триггер (trigger) - это хранимая процедура особого типа, которую пользователь не вызывает непосредственно, а исполнение которой обусловлено действием по модификации данных: добавлением INSERT, удалением DELETE строки в заданной таблице, или изменением UPDATE данных в определённом столбце заданной таблицы. Ниже представлены тексты SQL-конструкций на создание триггеров. 1. Триггер, обновляющий остаток товара на складе в таблице «Tovar» послеотгрузки. Текст конструкции на создание триггера: CREATETRIGGERUpdate_Tovar ONdbo.UPD AFTERINSERT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SETNOCOUNTON;
declare@tov_count_oldinteger declare@tov_count_newinteger declare@tov_count_otgrinteger declare@idinteger declare@id_tovinteger SET@id=@@IDENTITY SET@id_tov=(SELECTdbo.UPD.ID_tvrFROMdbo.UPDWHEREID_upd=@id) SET@tov_count_old=(SELECTdbo.Tovar.kolFROMdbo.TovarWHEREdbo.Tovar.ID_tvr=@id_tov) SET@tov_count_otgr=(SELECTdbo.UPD.kol_tvrFROMdbo.UPDWHEREID_upd=@id) SET@tov_count_new=@tov_count_old-@tov_count_otgr UPDATEdbo.Tovar SETdbo.Tovar.kol=@tov_count_new WHEREdbo.Tovar.ID_tvr=@id_tov END GO
2. Триггер,осуществляющий логгирование изменений в таблице «Otgruzka». Для разработки триггера, который будет фиксировать дату добавления и общее количество записей в таблице «Otgruzka», необходимо создать новую таблицу, код создания таблицы приведен ниже. CREATETABLEAudit_Otgruzka( IDintegerIDENTITY(1,1)NOTNULL, opervarchar(15)NOTNULL, record_countintegerNOTNULL, date_chdatetimeNULL, CONSTRAINT[PK_Audit_Otgruzka]PRIMARYKEYCLUSTERED ( [ID]ASC )WITH (IGNORE_DUP_KEY=OFF) ) GO
Текст конструкции на создание триггера: CREATETRIGGERlog_OtgruzkaONdbo.Otgruzka forINSERT AS BEGIN SETNOCOUNTon declare@record_cntinteger SET@record_cnt=(SELECTCOUNT(*)FROMdbo.Otgruzka); INSERTINTOAudit_Otgruzka(oper,record_count,date_ch) VALUES ('insert',@record_cnt,GETDATE()) END GO
Тестирование созданной БД В данном разделе приведены результаты работы запросов, представлений, хранимых процедур и триггеров, тексты которых были разработаны в пункте 2.4данной работы. Результаты выполнения запросов 1 - 5 представлены на рис. 6-10 соответственно. Рис. 6. Результат выполнения запроса 1
Рис. 7. Результат выполнения запроса 2
Рис. 8 - Результат выполнения запроса. Рис. 9 - Результат выполнения запроса. Рис. 10 - Результат выполнения запроса.
Рис. 11 - Результат выполнения запроса.
Результаты выполнения хранимых процедур представлены на рис. 12 - 13. Рис. 12. Результат выполнения хранимой процедуры 1 Рис. 13 - Результат выполнения хранимой процедуры с параметром. Результаты загрузки представлений представлены на рис. 14 - 15.
Рис. 14.Результат выполнения представления 1 Рис. 15 - Результат выполнения представления. Результат выполнения триггера 1 представлены на рис. 16, 17, 18.
Рис.16.Таблица «Tovar» до изменения
Рис. 17.Внесение данных в таблицу «UPD»
Рис. 18.Таблица «Tovar» после изменения
Как видно из рисунков, после добавления позиции по товару с ID_tvr=2 в количестве 10 шт. в таблицу «UPD», значение столбца «kol»таблицы «Tovar»по данной записи уменьшилось на 10. Результат выполнения триггера 2 представлен на рис. 19, 20, 21.
Рис.19.Таблица «Audit_Otgruzka» до изменения
Рис. 20. Внесение данных в таблицу «Otgruzka»
Рис. 21. Таблица «Audit_Otgruzka» после изменения
Вывод по второй главе Таким образом, ЗАКЛЮЧЕНИЕ
В результате работы над данной курсовой работой были изучены основные теоретические аспекты проектирования и разработки баз данных, а именно: дано формальное описание предметной области, изучены основные принципы нормализации таблиц БД до третьей нормальной формы и принципы обеспечения целостности данных. На основе полученных данных был разработан проект базы данных отдела выписки товаров оптовой фирмы: разработаны проекты таблиц и связей между ними с учетом принципов нормализации, назначены первичные и вторичные ключи согласно связей и ограничений. Практическая часть курсовой работы была посвящена физической реализации базы данных отдела выписки товаров в программной среде ManagementStudioв СУБД MicrosoftSQLServer 2008: создана сама база данных и ее таблицыс учетом приведенных ограничений, проведено заполнение этих таблиц данными, на языке Transact-SQLразработаны различные запросы, представления, хранимые процедуры и триггеры. Таким образом, поставленная цель курсовой работы достигнута. Все задачи, необходимые для достижения цели, решены.
БИБЛИОГРАФИЧЕСКИЙ СПИСОК 1. Гайдамакин Н. А. Автоматизированные информационные системы, базы и банки данных. Вводный курс: Учебное пособие. / Н.А. Гадамакин. - М.: Гелиос АРВ, 2002. - 368 с. 2. Зрюмов Е. А., Базы данных для инженеров: учебное пособие. Алт. гос. техн. ун-т им. И. И. Ползунова / Е.А. Зрюмов, А. Г. Зрюмова. – Барнаул: Изд-во АлтГТУ, 2010. – 131 с. 3. Кузин А. В. Базы данных: учебное пособие. 5-е изд. / А. В. Кузин. - М.: Академия, 2012. - 317 с. 4. Петров В. Н. Информационные системы / В.Н. Петров. - СПб.: Питер, 2002. - 688 с. 5. Петров Г.А. Базы данных: учебное пособие /Г.А. Петров, С.В. Тихов, В.П. Яковлев, СПбГТУ РП. - СПб. 2015. – 74 с. 6. Ульман Джеффри Д., Основы реляционных баз данных / Д. Ульман, Д. Уидом. - М.: Лори, 2006. - 384 с. 7. Хомоненко А.Д. Базы данных:учебник для высших учебных заведений / Под ред. проф. А.Д. Хомоненко. - СПб.: КОРОНА принт, 2004. - 736 с. 8. Codd. E. F. A Relational Model of Data for Large Shared Data Banks // Commun. ACM.- 26, N 1.- 1970.- 377-387с.
Приложение 1 Диаграмма БД в СУБД MSSQL-Server
Приложение 2
Заполненные таблицы БД
Рис. 1. Таблица «Operator»
Рис. 2 Таблица «Otdel».
Рис. 3 - Таблица «Napravlenie».
Рис. 4 - Таблица «Pokupatel».
Рис. 5 - Таблица «Tovar». Рис. 6 - Таблица «Kategoria».
Рис. 7 - Таблица «Prodazha».
Рис. 8 - Таблица «Otgruzka». Рис. 9 - Таблица «UPD». |
||
Последнее изменение этой страницы: 2018-04-12; просмотров: 329. stydopedya.ru не претендует на авторское право материалов, которые вылажены, но предоставляет бесплатный доступ к ним. В случае нарушения авторского права или персональных данных напишите сюда... |