- •Курсовой проект на тему
- •Дисциплина
- •Введение
- •1. Постановка задачи
- •1.1 Описание предметной области
- •1.2 Функциональные требования
- •2.3. Фрагмент бд "Учет отправленных писем"
- •2.4.Используемая субд
- •2.Физическая модель
- •2.1. Фрагмент бд "Учет водоисточников"
- •2.2. Фрагмент бд "Учет неисправностей"
- •3.Обеспечение целостности бд
- •4. Создание таблиц и ограничений.
- •5.Хранимые процедуры
- •6. Выходные формы
- •7. Обеспечение безопасности
- •8. Оптимизация
- •9. Тестирование
- •Заключение
- •Библиографический список
- •Приложение 6 – создание ограничений на таблицы
- •Приложение 7 –процедуры добавления
- •Приложение 8 – процедуры обновления
- •Приложение 9 – процедуры удаления
- •Приложение 10 – триггеры
- •Приложение 11 – отчетные формы
- •Приложение 12 – безопасность Роли
- •Праванароли
- •Пользователи
- •Добавлениепользователейкролям
- •Приложение 13 – оптимизация
- •Приложение 14 – тестирование
8. Оптимизация
Несмотря на то, что пользователей у системы немного, это не понижает требования к ее быстродействию.
Первоначально анализ оптимизации проводился на уровне запросов, было выяснено, что в первую очередь надо связывать сущности, у которых меньше строк и больше критериев для соединения, и далее по возрастанию, тогда результирующий набор строк будет формироваться быстрее. Кроме того, по возможности стоит проанализировать все вводимые данные и на их основе сформировать ограничения CHECK. При реализации процедур и функций по возможности стоит избегать сильной вложенности одних процедур в другие, это замедляет поиск. Триггеры стоит использовать только в крайних случаях, потому что они сильно нагружают систему.
Для того, чтобы поиск по данным и запросы осуществлялись быстрее были введены такие объекты базы данных, как индексы.
Индекс – особый объект БД, создаваемый с целью увеличения производительности поиска данных. По умолчанию в СУБД Microsoft SQL Server создаются кластеризованные индексы. Помимо кластеризованных, в данном курсовом проекте были использованы некластеризованные индексы, которые накладывались на внешние ключи.
Примерыиндексов (приложение 13):
CREATE UNIQUE INDEX UniqueStreet
ON Street (NameStreet ASC)
CREATE NONCLUSTERED INDEX OrganizationIDTypeOfOrganization
ON Organization (IDTypeOfOrganization ASC)
CREATE UNIQUE INDEX UniqueNameOrganization
ONOrganization (NameOrganizationASC)
9. Тестирование
Для проверки корректности физической модели и правильности реализованных процедур и функций в хранилище данных были введены тестовые данные для каждой из имеющихся сущностей.
Процедура тестирования заключалась в том, что с помощью скрипта создавалась новая база данных. Далее создавались все декларативные ограничения, накладываемые на эти таблицы. После создавались хранимые процедуры вставки, обновления и удаления; хранимые процедуры и функции, необходимые для формирования отчетом; триггеры; индексы; матрица доступа. Далее запускались тестовые данные для таблиц, затем вызывались функции формирования отчетов (приложение 14).
EXEC PStreetInsert 'Стахановская'
EXEC PStreetInsert 'Савина'
EXEC PStreetInsert 'Заводская'
EXEC PStreetInsert 'Кирова'
EXEC PStreetInsert 'Лесозаводская'
EXEC PStreetInsert 'Школьная'
EXEC PStreetInsert 'Почтовая'
EXEC PStreetInsert 'Северная'
EXEC PToOrganozationInsert 'балансосодержащая'
EXEC PToOrganozationInsert 'обслуживающая'
EXEC POrganizationInsert 'МУП "Сыктывкарский Водоканал"',NULL,1
EXEC POrganizationInsert '"СпецАвтоХозяйство"',NULL,2
EXEC POrganizationInsert 'ТСЖ "Лесозаводское"',NULL,2
EXEC POrganizationInsert 'ТСЖ "Северная-61"',NULL,2
EXEC PWaterSourceInsert 'ПГ-93','40', 1, 1
EXEC PWaterSourceInsert 'ПГ-6','7', 2, 2
EXEC PWaterSourceInsert 'ПГ-14','68', 3, 1
EXEC PWaterSourceInsert 'ПГ-5','79-а', 4, 2
EXEC PWaterSourceInsert 'ПГ-41','61', 8, 4
EXEC PWaterSourceInsert 'ПГ-97','2/5', 6, 3
EXEC PWaterSourceInsert 'ПВ-300','69', 2, 1
EXEC PHydrantInsert 1,250,1
EXEC PHydrantInsert 0,200,2
EXEC PHydrantInsert 0,100,3
EXEC PHydrantInsert 0,150,4
EXEC PHydrantInsert 0,150,5
EXEC PHydrantInsert 0,200,6
EXEC PPondInsert 300,7
EXEC PInspectionInsert '23-06-2011',1
EXEC PInspectionInsert '26-07-2011',1
EXEC PInspectionInsert '28-08-2011',1
EXEC PInspectionInsert '10-09-2011',1
EXEC PInspectionInsert '13-10-2011',1
EXEC PInspectionInsert '18-11-2011',1
EXEC PInspectionInsert '19-12-2011',1
EXEC PInspectionInsert '25-08-2011',2
EXEC PInspectionInsert '26-09-2011',2
EXEC PInspectionInsert '30-10-2011',2
EXEC PInspectionInsert '5-11-2011',2
EXEC PInspectionInsert '13-11-2011',2
EXEC PInspectionInsert '25-11-2011',2
EXEC PDefectInsert 'исправен', 0, 1,1
EXEC PDefectInsert 'исправен', 0, 1,1
EXEC PDefectInsert 'поломан кран', 10, 1,1
EXEC PDefectInsert 'исправен', 0, 1,1
EXEC PDefectInsert 'исправен', 0, 1,1
EXEC PDefectInsert 'исправен', 0, 1,1
EXEC PDefectInsert 'поломан кран', 10, 0,1
EXEC PDefectInsert 'исправен', 0, 1,2
EXEC PDefectInsert 'исправен', 0, 1,2
EXEC PDefectInsert 'нет конуса', 4, 1,2
EXEC PDefectInsert 'не очищен', 5, 1,2
EXEC PDefectInsert 'исправен', 0, 1,2
EXEC PDefectInsert 'исправен', 0, 1,2
EXEC PDefectUpdate 'поломан кран', 10, 0,1,3
EXEC PDefectDelete 4
EXEC PInspectionDelete 8
EXEC PInspectionUpdate '10-12-2011',2,12
EXEC PLetterInsert '29-08-2011',NULL,'10-09-2011','в организацию',1,3
EXEC PLetterInsert '30-10-2011',NULL,'5-11-2011','в организацию',2,9
EXEC PLetterInsert '6-11-2011',NULL,'13-11-2011','в организацию',2,10
EXEC PLetterInsert '21-12-2011',NULL,'05-01-2012','в организацию',1,13
EXEC PTestDefectInsert 1,1,NULL
EXEC PTestDefectInsert 2,2,NULL
EXEC PTestDefectInsert 3,3,1
EXEC PTestDefectInsert 5,4,NULL
EXEC PTestDefectInsert 6,5,NULL
EXEC PTestDefectInsert 7,6,NULL
EXEC PTestDefectInsert 8,7,NULL
EXEC PTestDefectInsert 9,9,2
EXEC PTestDefectInsert 10,10,3
EXEC PTestDefectInsert 11,11,NULL
EXEC PTestDefectInsert 12,12,NULL
EXEC PTestDefectInsert 13,13,4
EXEC PPlanProverki '21-01-2012'
EXEC PLetterToOrganization 1
