Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой СУБД Вьюгин А.А 4.docx
Скачиваний:
2
Добавлен:
20.09.2019
Размер:
2.45 Mб
Скачать

8.Оптимизация

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

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

Для того, чтобы поиск по данным и запросы осуществлялись быстрее были введены такие объекты базы данных, как индексы.

Индекс – особый объект БД, создаваемый с целью увеличения производительности поиска данных. По умолчанию в СУБД Microsoft SQL Server создаются кластеризованные индексы. Помимо кластеризованных, в данном курсовом проекте были использованы некластеризованные индексы, которые накладывались на внешние ключи, и индексы с ограничением на уникальность.

Примеры индексов (см. приложение 10)

--TypeOfApplication

CREATE UNIQUE INDEX UniqueTypeOfApplicationIndex

ON TypeOfApplication(TypeOfApp ASC)

--Defect

CREATE UNIQUE INDEX UniqueDefectIndex

ON Defect(TypeOfDefect ASC)

--Elevators

CREATENONCLUSTEREDINDEXElevatortsIDStreet

ONElevators(IDStreetASC)

CREATEUNIQUEINDEXUniqueElevatorsIndex

ONElevators(Building,Door,PersonalNumberASC)

9.Тестирование

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

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

EXECPStreetINSERT

'Мороозова'

EXECPStreetINSERT

'Лесозаводская'

EXECPStreetINSERT

'Бабушкина'

EXECPElectricianINSERT

'Пупкин Петр Сергеевич','4','Аварийный электромеханик','03.11.1977'

EXECPElectricianINSERT

'Сидоров Сергей Михайлович','1','Основной электромеханик','12.01.1968'

EXECPElectricianINSERT

'Кузнецов Анатолий Александрович','3','Аварийный электромеханик','10.08.1972'

EXECPElectricianINSERT

'Худяев Иосив Абрамовичу','4','Основной электромеханик','24.09.1972'

EXECPDefectINSERT

'Застревание'

EXECPDefectINSERT

'Изношен трос'

EXECPDefectINSERT

'Поломка приводной цепи'

EXECPDefectINSERT

'Поломка буфера'

EXECPElevatorsINSERT

'333','175','3',3

EXECPElevatorsINSERT

'2','111','1',4

EXECPElevatorsINSERT

'6','45','1',5

EXECPElevatorsINSERT

'19','74','2',6

EXECPTypeOfApplicationINSERT

'Поломка'

EXECPTypeOfApplicationINSERT

'Застревание'

EXECPTypeOfApplicationINSERT

'Техосмотр'

EXECPRequestINSERT

'не открывается лифт','01.08.2011 11:10:00:00',0,1,1

EXECPRequestINSERT

'не работает свет','05.07.2011 09:00:00:00',0,4,1

EXECPRequestINSERT

'Технический осмотр','20.01.2012 16:45:00:00',0,5,3

EXECPRequestINSERT

'застрял человек','09.05.2012 14:40:00:00',1,6,2

EXECPOrdersINSERT

'01.08.2011 15:30:00:00',3,13

EXECPOrdersINSERT

'05.07.2011 012:00:00:00',4,14

EXECPOrdersINSERT

'20.01.2012 17:00:00:00',5,15

EXECPOrdersINSERT

'09.05.2012 14:50:00:00',6,16

EXECPDefectsINSERT

6,1

EXECPDefectsINSERT

5,2

EXECPDefectsINSERT

8,3

EXECPDefectsINSERT

7,4

EXECPDefectsINSERT

4,5

EXECPDefectsINSERT

3,6

Вывод отчетов

SELECT*FROMprintall

SELECT*FROMprint1El

SELECT*FROMPrintPodr('05.07.2011 012:00:00:00','Основной электромеханик')

SELECT*FROMPrintElevator(6)