Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсач / Наволоцкий_1302_v2.docx
Скачиваний:
2
Добавлен:
27.12.2025
Размер:
2.47 Mб
Скачать

6.2. Представления (Views)

Представления используются для упрощения доступа к данным и формирования отчетов [5]. В проекте реализованы запросы различной сложности:

  1. Сводный отчет — [Stock].[v_FullComponentReport] Реализует классическое соединение (INNER JOIN) четырех таблиц для отображения полной информации о компоненте с расшифровкой всех справочных полей (производитель, категория, корпус).

  2. Инженерный фильтр — [Stock].[v_ActiveComponentsSpiceready] Предоставляет выборку только активных компонентов, имеющих математическую модель SPICE. Используется для быстрой фильтрации данных в инженерных подсистемах.

  3. Аналитическое представление — [Stock].[v_CategoryAnalytics] Демонстрирует использование продвинутых конструкций SQL. Запрос построен с применением обобщенных табличных выражений (CTE) для предварительной агрегации данных. Также используется предложение HAVING для пост-фильтрации сгруппированных данных и вычисления процента активных компонентов внутри каждой категории.

6.3. Хранимые процедуры и подсистема xml

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

Управление транзакциями и обработка ошибок. В процедурах модификации данных (usp_CreateComponent, usp_ImportComponentsFromXML) реализован механизм явного управления транзакциями:

  • Все операции выполняются внутри блока BEGIN TRANSACTION ... COMMIT.

  • Используется конструкция BEGIN TRY ... BEGIN CATCH для перехвата ошибок. В случае возникновения сбоя (например, нарушение уникальности или разрыв соединения) выполняется автоматический откат транзакции (ROLLBACK), что гарантирует атомарность операций: данные либо сохраняются полностью, либо не сохраняются вовсе.

Поиск и фильтрация. Процедура [Stock].[usp_SearchComponents] реализует логику динамической фильтрации. Использование параметров по умолчанию (NULL) позволяет использовать одну процедуру для различных сценариев поиска: по артикулу, по производителю или комбинированно. Также процедура генерирует временную метку выполнения запроса «на лету» средствами функции GETDATE().

Интеграция с внешними системами (XML). Для обмена данными реализованы процедуры импорта и экспорта [8]:

  • Экспорт (usp_ExportReportToXML): Использует конструкцию FOR XML PATH для преобразования реляционных табличных данных в иерархический XML-формат.

  • Импорт (usp_ImportComponentsFromXML): Выполняет разбор входящего XML-документа с помощью метода .nodes(). Процедура автоматически сопоставляет текстовые названия из файла с числовыми идентификаторами справочников (Look-up), обеспечивая корректную загрузку данных даже из внешних источников, не знающих о внутренней структуре ID базы данных.

На рисунке 3 показан получившийся xml-файл в среде ms service

Рисунок 3 – Получившийся xml-документ

Этот документ можно открыть в ms excel и удобно просматривать таблицу.

Сконвертированный xml-файл, открытый через ms excel показан на рисунке 4.

Рисунок 4 – сконвертированный xml-файл, открытый через ms excel

Соседние файлы в папке курсач