asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web...

131
Министерство образования и науки РФ Федеральное государственное бюджетное образовательное учреждение высшего образования Уфимский государственный авиационный технический университет ЛАБОРАТОРНЫЙ ПРАКТИКУМ ПО УЧЕБНОЙ ДИСЦИПЛИНЕ РАСПРЕДЕЛЕННАЯ ОБРАБОТКА ИНФОРМАЦИИ В АВТОМАТИЗИРОВАННЫХ СИСТЕМАХ 1

Transcript of asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web...

Page 1: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Министерство образования и науки РФФедеральное государственное бюджетное образовательное

учреждение высшего образованияУфимский государственный авиационный технический

университет

ЛАБОРАТОРНЫЙ ПРАКТИКУМ ПО УЧЕБНОЙ ДИСЦИПЛИНЕ

РАСПРЕДЕЛЕННАЯ ОБРАБОТКА ИНФОРМАЦИИ В АВТОМАТИЗИРОВАННЫХ СИСТЕМАХ

Уфа 2017

1

Page 2: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Составители: ______________ Р.Р. Еникеев

Рассмотрено на заседании кафедры Автоматизированных систем управления

« 23 » января 2016 г. (протокол № 5 )Заведующий кафедрой

___________ д.т.н., профессор В.В.Антонов

Рассмотрено на заседании научно-методического Совета по специальности 09.05.01 «Применение и эксплуатация

автоматизированных систем специального назначения»« 17» января 2017г. (протокол № 12 )

Председатель научно-методического Совета ____________ д.т.н., профессор В.Ю.Арьков

1

Page 3: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Министерство образования и науки Российской ФедерацииФедеральное государственное бюджетное образовательное

учреждение высшего образованияУфимский государственный авиационный технический университет

ОБРАБОТКА РАСПРЕДЕЛЕННОЙ ИНФОРМАЦИИ

НА ОСНОВЕ XML И DB2. СОЗДАНИЕ И ВЕДЕНИЕ XML-ДАННЫХ

Лабораторный практикумпо дисциплине «Распределенная обработка

информации в автоматизированных системах»

Уфа 20172

Page 4: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Министерство образования и науки Российской ФедерацииФедеральное государственное бюджетное образовательное

учреждение высшего образованияУфимский государственный авиационный технический университет

Кафедра автоматизированных систем управления

ОБРАБОТКА РАСПРЕДЕЛЕННОЙ ИНФОРМАЦИИ

НА ОСНОВЕ XML И DB2. СОЗДАНИЕ И ВЕДЕНИЕ XML-ДАННЫХ

Лабораторный практикумпо дисциплине «Распределенная обработка

информации в автоматизированных системах»

Уфа 20173

Page 5: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Составители: Р. Р. Еникеев, Г. В. Старцев, Г. Р. Шакирова, А. М. Шамсиева

УДК 681.3.06 (07)ББК 32.973-018.2 (я7)

Обработка распределенной информации на основе XML и DB2. Создание и ведение XML-данных: лабораторный практикум по дисциплине "Распределенная обработка информации в автоматизированных системах" для специальности 09.05.01 – Применение и эксплуатация автоматизированных систем специального назначения/ Уфимск. гос. авиац. техн. ун-т; Сост.: Р. Р. Еникеев, Г. В. Старцев, Г. Р. Шакирова, А. М. Шамсиева. – Уфа, 2017. – 47 с.

Рассматриваются основные принципы применения технологии PureXML для создания, ведения и поиска XML-данных в СУБД IBM DB2 – от создания, хранения, ведения и индексирования XML-данных до программирования XML-ориентированных запросов для получения иерархий данных и атомарных значений. Пособие предназначено для студентов специальности 09.05.01 «Применение и эксплуатация автоматизированных систем специального назначения» с целью закрепления навыков, полученных при изучении курса «Распределенная обработка информации в автоматизированных системах».

Ил. 32. Библиогр.: 8 назв.

Рецензенты: канд. техн. наук, доц. А. Н. Набатов, канд. техн. наук, доц. Н. И. Федорова

© Уфимский государственныйавиационный технический университет, 2011

4

Page 6: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

СОДЕРЖАНИЕ

Введение 2Вводные замечания 4

Лабораторная работа 1 XML-документы. создание, валидация и загрузка в DB2

1. Цель работы 62. Задачи 83. Теоретическая часть 84. Описание программного комплекса 125. Методика выполнения работы 126. Задание на лабораторную работу 357. Контрольные вопросы 358. Содержание и оформление отчета 35

Лабораторная работа 2. XML-данные в DB2. модификация, удаление, индексация

1. Цель работы 352. Задачи 363. Теоретическая часть 364. Методика выполнения работы 395. Задание на лабораторную работу 466. Контрольные вопросы 467. Содержание и оформление отчета 46Список литературы 47

Page 7: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

ВВЕДЕНИЕВ настоящее время распределенная обработка данных является

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

Одной из таких технологий является XML. Расширенный язык разметки (eXtensible Markup Language, XML) широко распространен как платформо-независимый формат представления данных. Применяется для обмена информацией между различными слабосвязанными системами. XML все больше используется в приложениях уровня предприятия для моделирования частично структурированных и неструктурированных данных. Внешним представлением сообщений на реляционном языке является набор двухмерных таблиц. Внешним представлением сообщений на языке XML является набор реальных документов (и электронных, и бумажных), визуализация которых происходит при помощи универсального браузера.

В настоящее время XML становится обязательным элементом структур хранения данных. XML-документ является информационным объектом и экземпляром одного из классов, содержащихся в XML-ориентированной базы данных (БД). XML-ориентированные БД используют в качестве модели данных XML-модель данных. XML-ориентированные БД обеспечивают существенно более высокую скорость выполнения транзакций, в том числе через интернет, что обусловлено меньшими затратами на преобразование данных и эффективным способом управления памятью. Также XML-ориентированные БД характеризуются высокой скоростью разработки приложений, что обусловлено унификацией данных, методами их обработки и способом их представления.

Page 8: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Существуют методы хранения XML-данных: реляционные БД; прирожденные (native) XML-БД.

Прирожденная XML БД основана на использовании внутреннего представления XML в отличие от XML-надстроек над существующими реляционными БД, в которых реализована XML-надстройка в соответствии со стандартом доступа SQL-2003.

DB2 — семейство систем управления реляционными базами данных, выпускаемых корпорацией IBM. IBM DB2 является мощной СУБД, которая имеет эффективную и надежную платформу, для построения приложений. Современные версии DB2 обеспечивают расширенную поддержку использования данных в формате XML, в том числе операции с отдельными элементами документов XML. Поддержка XML в DB2 предлагает эффективные и универсальные возможности для управления вашими данными XML (XML-данные хранятся и запрашиваются в их собственном иерархическом формате).

Page 9: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

ВВОДНЫЕ ЗАМЕЧАНИЯВ курсе лабораторных работ в качестве сквозного примера

рассматривается база данных «Labs». Она представлена единственной таблицей «Student_progress» (успеваемость студентов) с четырьмя столбцами. Структура таблицы и типы данных ее столбцов приведены в таблице 1:

Таблица 1Student_progress

ID STUDENT SUBJECT RESULTint xml xml xml

В каждый из XML-столбцов загружается свой XML-документ. Для хранения документов следует предварительно создать следующую структуру директорий: общая папка Labs → в ней – три вложенных директории: STUDENTS (для XML-файлов о студентах), SUBJECTS (для XML-файлов о дисциплинах), RESULTS (для XML-файлов об успеваемости). Нотация предполагает представление XML-элементов в виде прямоугольников с закругленными углами.

Концептуальные схемы XML-документов представлены на рис. В1.

Page 10: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок В1 – Концептуальные схемы XML-документов(для методики выполнения работы)

В рамках лабораторных работ студенты должны ориентироваться на XML-документы, описывающие порядок закупки компьютерного оборудования. Для этого должны быть введены две XML-структуры, схемы которых представлены на рис. В2. Первая структура представлена элементом Equipment (оборудование), описывающим такие реквизиты оборудования, как идентификатор (eqID), название (eqName), параметры (Parameter) и производителя (Production). Последние два реквизита имеют сложную структуру и представлены дочерними элементами Name и Value (название и значение параметра оборудования) и Name и Status (название и статус изготовителя).

Вторая XML-структура показывает итерации покупки оборудования из первой структуры. Каждая итерация задается элементом Item внутри корневого элемента Purchase (покупка) и характеризуется идентификатором (элемент ID), датой (элемент Date), количеством (элемент Quantity), ценой за единицу (элемент Price per Unit), покупателем (элемент Client с дочерними элементами Name и Contacts).

Рисунок В2 – Концептуальные схемы XML-документов(для задания на лабораторные работы)

Для выполнения заданий рекомендуется создать структуру вложенных директорий по аналогии с такой структурой в методике

Page 11: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

выполнения заданий. Аналогичным образом база данных должна быть представлена таблицей Sales с идентифицирующим полем ID и двумя XML-полями Equipment и Purchase.

Лабораторная работа № 1, 2XML-ДОКУМЕНТЫ.

СОЗДАНИЕ, ВАЛИДАЦИЯ И ЗАГРУЗКА В DB2

1. Цель работыЦелью работы является изучение принципов создания XML-

документов, их загрузки и использования в СУБД IBM DB2.

2. Задачи Задачами лабораторной работы являются овладение навыками

создания XML-документов с использованием стандартных текстовых и специфических XML-редакторов и разработки XML-ориентирован-ных баз данных в СУБД DB2.

3. Теоретическая частьXML – аббревиатура от «Extensible Markup Language»

(расширяемый язык разметки). XML основан на хорошо известной разметке XML, однако не является заменой ей. Вообще говоря, XML и HTML создавались с разными целями: XML используется для описания данных, а HTML – для их визуализации.

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

Расширяемость XML означает возможность введения своих собственных тегов, в отличие от HTML, где автор может использовать только те теги, которые определены в стандарте HTML (например, <p> или <h1…>). Здесь теги – это слова, заключенные в угловые скобки, с помощью которых выполняется разметка.

XML позволяет автору определить собственные теги и собственную структуру документа. Например, в следующем фрагменте

<Student><FIO>Иванов И. И.</FIO>

</Student> теги Student и FIO придуманы разработчиком и нигде предварительно не регламентированы, а во фрагменте

Page 12: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

<body> <h1>Студент Иванов И. И.</h1></body>

все теги представлены в строгом соответствии со стандартом HTML.Корректный XML-документ. Важной особенностью XML

является чувствительность к регистру, т. е. <Student> и <student> – это разные теги. На этом факте основано понятие корректного XML-документа.

Каждый XML-документы обязательно должен быть корректным. Корректный XML-документ должен соответствовать следующим требованиям:

1) наличие единственного корневого элемента, включающего в себя все остальные элементы документа;

2) сбалансированности открывающих и закрывающих тегов, т. е. после каждого открывающего тега должен присутствовать соответствующий закрывающий тег;

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

Корректность XML-документа гарантирует, что он может быть успешно обработан XML-анализатором. Проверить корректность документа можно простым браузером – на экране будет показана либо иерархическая XML-структуры, либо обнаруженные ошибки.

Структура XML-документов. Структура XML-документа является иерархической, или древовидной. Типовой XML-документ начинается с инструкции по обработке, сигнализирующей XML-обработчику, что это XML-документ:

<?xml version="1.0"?>Далее следует корневой элемент (является обязательным),

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

Валидация. Свобода в выборе структуры XML-иерархии вынуждает разработчиков вводить специальные правила,

Page 13: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

описывающие, что допустимо в такой структуре, а что – нет. С этой целью «основатели» XML корпорация W3C ввели так называемые схемы XML-документа.

Схема XML-документа – это модель, отделенная от самого документа, в которой заданы его структурные и параметрические ограничения. Она определяет, что должно и чего не должно быть в документе.

XML-документ называется валидным, если он полностью соответствует заданной XML-схеме, т. е. все его элементы и атрибуты находятся «на своих местах», а значения данных удовлетворяют всем приведенным ограничениям.

Наибольшее распространение получила одна из схем – XML Schema XSD. XSD Schema – это корректный XML-документ, инструкции которого принадлежат пространству имен «http://www.w3c. org/2001/XMLSchema-instance» с префиксом xsd.

Здесь пространство имен – это уникально именованное множество, которому могут принадлежать имена элементов и атрибутов XML-документа, а его префикс – это краткое обозначение пространства имен в пределах документа, вводимое для того, чтобы не записывать громоздкий URL с каждым именем XML-элемента или атрибута.

Корневым элементом схемы является элемент «schema» с объявленным пространством имен. Описание элементов задается элементом «element», в котором атрибут «name» определяет название элемента. Как правило, большинство элементов относятся к так называемому сложному типу, потому что содержат либо дочерние элементы, либо атрибуты, либо все сразу. Декларирование каждого такого элемента нужно сопроводить конструкцией complexType, помещаемой между открывающим и закрывающим тегами элемента «element». В более простых случаях элементы содержат только простой текст. Это элементы простого типа, для которых, как правило, не требуется конструкции complexType.

Если элемент сложного типа содержит дочерние элементы, то необходима еще одна декларация – элемент sequence, внутри которого размещается описание всех дочерних элементов.

Для простых элементов важно указать, к какому типу данных должно относиться их содержимое. Например, если данные являются текстовыми, то используется тип string. Все типы данных, как и

Page 14: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

элементы схемы, относятся к XSD-пространству имен и должны сопровождаться соответствующим префиксом (xsd).

Механизмы создания XML. Документ в XML-формате – это обычный текстовый документ. Поэтому для его создания можно использовать обычный текстовый редактор, например, «Блокнот». Главное – помнить о правилах корректного XML-документа и отслеживать все открывающие и закрывающие теги.

Проще всего работать с XML-данным в визуальных редакторах. Большинство из них поддерживают пользователя в процессе работы. Например, система IntelliSense постоянно выдает подсказки, что особенно удобно при программировании схем XML-документа. Все открывающие теги элементов закрываются автоматически, а значения атрибутов автоматически обрамляются кавычками или апострофами. Ярким примером таких редакторов является Eclipse.

DB2 – семейство программных продуктов в области управления информацией компании IBM. Чаще всего, ссылаясь на DB2, имеют в виду реляционную систему управления базами данных DB2 Universal Database (DB2 UDB), разрабатываемую и выпускаемую компанией IBM.

Система DB2 Universal Database – это система управления реляционными базами данных с полной поддержкой Web, которая обеспечивает организацию информационных хранилищ данных и обработку транзакций. Она может быть установлена как на карманных и однопроцессорных компьютерах, так и разворачиваться на кластерах компьютеров, способна работать с мультимедийными средствами информации, обеспечивая поддержку изображений, аудиороликов, видеоклипов и текстовой информации.

PureXML. Система DB2 позволяет осуществлять хранение, запросы и обработку XML-данных в иерархической структуре, не жертвуя ради этого традиционными возможностями СУБД, такими как управление транзакциями, безопасность, оптимизация запросов и т. п.

DB2 содержит обширную поддержку XML как главного типа данных. Такая «настоящая» (pure) поддержка XML включает в себя новые методы хранения для эффективного управления иерархическими структурами, присущими XML-документам, новую технологию индексирования, для ускорения извлечения фрагментов

Page 15: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

XML-документов, новые возможности для проверки XML-данных и для управления изменениями XML-схем, поддержка нового языка запросов (включая полную поддержку XQuery, а также новые усовершенствования SQL/XML), новые методы оптимизации запросов, интеграцию с популярными интерфейсами прикладного программирования (API) и расширения популярных утилит для работы с базами данных.

В DB2 коллекции XML-документов записываются в таблицы, содержащие один или несколько столбцов, соответствующих новому типу данных XML. Это позволяет пользователям применять знакомые им инструкции языка определения данных SQL (data definition language, DDL) для создания объектов базы, в которых будут храниться XML-данные.

После создания таблиц пользователи могут выполнять инструкции INSERT или использовать команду DB2 IMPORT для добавления данных в таблицы. Поскольку DB2 представляет собой «двуязычный» продукт, пользователи могут проводить поиск по XML-данным и традиционным SQL-типам данных, используя SQL и XQuery.

4. Описание программного комплексаЛабораторные работы выполняются в текстовом редакторе

Notepad++, инструментальном пакете Eclipse Helios, которые представляют собой программу для создания и редактирования XML-документов. Все операции с базами данных ведутся на уровне СУБД IBM DB2 Express C.

5. Методика выполнения работы

5.1 Создание XML-документов в текстовом редакторе1. Создать новый документ sb1.xml и открыть его в текстовом

редакторе (например, в Блокноте или Notepad++).2. Ввести XML-инструкцию по обработке

<?xml version="1.0" encoding="UTF-8"?>Здесь указание на инструкцию по обработке задается символами ? в начале и конце конструкции, используемая версия XML задается атрибутом version, а кодировка XML-документа – атрибутом encoding.

3. Ввести открывающий тег элемента Subjects: <Subjects>.

Page 16: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

4. Ввести открывающий и закрывающий теги дочернего (по отношению к Subjects) элемента subjID (код предмета): <subjID> </subjID>.

5. Ввести значение кода предмета – текстовый узел элемента subjID. Для этого между открывающим и закрывающим тегами subjID ввести текст: sb1.

6. Аналогичным образом создать элементы: name (название предмета), hours (количество часов, отводимое на изучение предмета), chair (кафедра, на которой читается учебный курс по предмету). Для каждого из элементов ввести собственное значение:

<name>Базы данных</name><hours>80</hours><chair>АСУ</chair>

7. Ввести закрывающий тег элемента Subjects: </Subjects> (рис. 1.1).

Рисунок 1.1 – Интерфейс редактора Notepad++

8. Сохранить документ9. Аналогичным образом создать документы sb2…sb5.xml,

содержащие данные еще о четырех предметах.10. Проверить корректность документа с помощью браузера

Internet Explorer (рис. 1.2).

Page 17: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.2 – XML-документ в окне браузера Internet Explorer

5.2. Создание XML-документов в среде Eclipse Helios (визуальный режим)1. Выполнить среду Eclipse Helios:

Локальный диск D | директория Eclipse | файл eclipse.exe ► на экране появится стартовая форма Eclipse (рис. 1.3)

Page 18: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.3 – Интерфейс редактора Eclipse Helios2. Создать новый проект

File | New | Project… ► Select a Wizard | выбрать папку General → Project; кнопка Next ► Project | Project Name ← Labs; кнопка Finish ►Labs – Eclipse (экранная форма приведена на рис. 1.4)

Рисунок 1.4 – Окно конструктора проекта

3. Создать в проекте новый XML-файл с именем s1.xml:выделить проект Labs | File | New | XML File ► New XML File | File Name ← s1.xml; кнопка Finish ► s1.xml | вкладка Design с инструкцией по обработке xml (рис. 1.5) (Node → xml, Content → version="1.0" encoding="UTF-8")

Page 19: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.5 – Задание инструкции по обработке xml

4. Создать корневой элемент Student:правая кнопка мыши | выбрать пункт контекстного меню Add After | New Element… ► New Element | Element name: Student; кнопка OK ► элемент Student в документе

5. Создать дочерний (по отношению к Student) элемент studID (код студента):

Выделить элемент Student | правая кнопка мыши; выбрать пункт контекстного меню Add Child | New Element… ► New Element | Element name: studID; кнопка OK ► элемент studID в документе (рис. 1.6)

6. Ввести значение кода студента (значение элемента studID):Выделить элемент studID | ст. Content; ввести s1

Рисунок 1.6 – Создание дочернего элемента studID

7. Аналогичным образом создать элемент rcb (record book – зачетная книжка) и ввести его значение, к примеру, 111111.

8. Создать элемент FIO, дочерний по отношению к элементу Student:

Page 20: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Выделить элемент Student | правая кнопка мыши; выбрать пункт контекстного меню Add Child | New Element… ► New Element | Element name: FIO; кнопка OK ► элемент FIO в документе

9. Создать элементы LName (фамилия), FName (имя) и MName (отчество), дочерние по отношению к FIO. Ввести значения указанных элементов, например, «Иванов», «Иван», «Иванович» соответственно.

10. Аналогичным образом создать дочерний по отношению к Student элемент Group (группа, к которой учится студент) с элементами-потомками spec (специальность), year (курс), num (номер группы). Ввести значения указанных элементов, к примеру, «ПИЭ», «5», «10».

11. Сохранить XML-документ File | Save ► документ сохранен (рис. 1.7)

Рисунок 1.7 – Результат создания XML-документа s112. Аналогичным образом создать документы s2…s5.xml,

содержащие данные еще о четырех студентах

Page 21: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

5.3. Создание XML-документов в среде Eclipse Helios (исходный код)

1. Выполнить среду Eclipse Helios:Локальный диск D | директория Eclipse | файл eclipse.exe ► Eclipse

2. Создать новый проект (если он уже создан, сразу перейти к следующему пункту)

File | New | Project… ► Select a Wizard | выбрать General → Project; кнопка Next ► Project | Project Name ← Labs; кнопка Finish ► Labs – Eclipse

3. Создать в проекте новый XML-файл с именем r1.xml:выделить проект Labs | File | New | XML File ► New XML File | File Name ← r1.xml; кнопка Finish ► r1.xml | вкладка Source с инструкцией по обработке <?xml version="1.0" encoding="UTF-8"?>

4. Ввести корневой элемент Results:Ввести открывающий тег <Results> (при вводе

закрывающей угловой скобки автоматически генерируется закрывающий тег элемента).5. Создать элемент Exam, дочерний по отношению к элементу

Results (попытка сдачи студентом заданной дисциплины):Поместить курсор между открывающим и закрывающим тегами элемента Results | ввести открывающий тег <Exam> (при вводе закрывающей угловой скобки автоматически генерируется закрывающий тег элемента).

6. Ввести дочерние (по отношению к Exam) элементы Task (номер билета), Lecturer (преподаватель), Date (дата сдачи) и Grade (оценка). Указать значения приведенных элементов: «1», «Петров», «10.01.2011» и «2».

7. Аналогичным образом создать еще один элемент Exam (вторая попытка сдачи экзамена студентом) (рис. 1.8):

<Exam><Task>5</Task><Lecturer>Петров</Lecturer>

Page 22: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

<Date>15.01.2011</Date><Grade>4</Grade>

</Exam>

Рисунок 1.8 – Результат создания XML-файла r1

8. Сохранить XML-документ File | Save ► документ сохранен

9. Аналогичным образом создать документы r2…r5.xml, содержащие данные еще о пяти вариантах успеваемости.

5.4. Создание XML-схемы документа в текстовом редакторе

Page 23: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

1. Создать новый документ Subject.xsd и открыть его в текстовом редакторе (например, в Блокноте или Notepad++)

2. Ввести XML-инструкцию по обработке<?xml version="1.0" encoding="UTF-8"?>

3. Ввести корневой элемент schema с объявлением пространства имен и префиксом xsd:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

4. Задать объявление корневого XML-элемента Subject. Для этого ввести открывающий тег элемента element с префиксом xsd:

<xsd:element name="Subject">5. Указать сложный тип элемента Subject. Для этого ввести

открывающий тег элемента complexType с префиксом xsd:<xsd:complexType>

6. Задать элемент Subject как контейнер для дочерних элементов с помощью элемента sequence. Ввести его открывающий тег с префиксом xsd:

<xsd:sequence>7. Объявить элемент subjID, допускающий текстовое

содержимое (дочерние текстовые узлы):<xsd:element name="subjID"

type="xsd:string"/> 8. Аналогичным образом объявить элементы name (название

предмета), hours (количество часов, отводимое на изучение предмета) и chair (кафедра, на которой преподают предмет).

9. Закрыть элементы sequence, complexType и element (рис. 1.9).10. Сохранить документ

Page 24: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.9 – Результат создания XML-схемы документа в текстовом редакторе

5.5. Создание XML-схемы документа в среде Eclipse Helios (визуальный режим)

1. Выполнить среду Eclipse Helios:Локальный диск D | директория Eclipse | файл eclipse.exe ► Eclipse

2. Создать новый проект (если он уже создан, сразу перейти к следующему пункту)

File | New | Project… ► Select a Wizard | выбрать General → Project; кнопка Next ► Project | Project Name ← Labs; кнопка Finish ► Labs – Eclipse

3. Создать в проекте новую XML-схему с именем Student.xsd:выделить проект Labs | File | New | Other… ► Select a wizard | выбрать XML → XML Schema; кнопка Next ► (рис. 1.10) New XML File | File Name ← Student.xsd; кнопка Finish ► Student.xsd | вкладка Design

Page 25: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.10 – Окно конструктора XML-схемы в Eclipse

4. Установить префикс для элементов схемы:вкладка Properties | кнопка Edit Namespaces… ► Edit Schema Information | (рис. 1.11)выбрать строку с http://www.w3.org/2001/XMLSchema | кнопка Edit ► New Namespace Information | Prefix ← xsd; кнопка OK (рис. 1.12)

Рисунок 1.11 – Установление префикса XML-схемы в Eclipse

Page 26: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.12 – Задание имени префикса пространства имен

5. Создать описание корневого элемента Student:Выделить блок Elements | правая кнопка мыши | выбрать из контекстного меню пункт Add Element ►(рис. 1.13)в блоке Elements появится новый объект с текстом New Element; заменить этот текст на Student ►в блоке Elements появится с текстом Student: string (рис. 1.14).

Рисунок 1.13 – Добавление корневого элемента

Page 27: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.14 – Результат описания корневого элемента

6. Указать сложный тип элемента Student:Правая кнопка на Student | выбрать из контекстного меню пункт Set Type… → New… ► New Type | установить Complex Type (рис. 1.15); установить Create as local anonymous type; кнопка OK ►(рис. 1.16) переключиться на вкладку Source и проверить наличие элемента complexType; переключиться обратно на вкладку Design

Рисунок 1.15 – Задание типа элемента

Page 28: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.16 – Выбор сложного типа элемента

Рисунок 1.17 – Результат создания XML-схемы (визуальный режим в Eclipse)

7. Создать дочерний (для Student) элемент studID (код студента):Вкладка Outline | выделить Element → Student → local type ► Design изменится на представление сложного типа (StudentType); правая кнопка мыши на этом элементе | выбрать пункт контекстного меню Add Element ► новый элемент NewElement с типом данных string; заменить текст NewElement на studID (рис. 1.18);

Page 29: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.18 – Задание имени дочернего элемента

8. Аналогичным образом задать описание элемента rcb (номер зачетной книжки).

9. Задать определение элемента FIO:Правая кнопка мыши на rcb | выбрать пункт контекстного меню Insert Element → After ► новый элемент New Element: string; переименовать этот элемент в FIO;Правая кнопка на FIO | выбрать из контекстного меню пункт Set Type… → New… ► New Type | установить Complex Type; установить Create as local anonymous type; кнопка OK ► новый тип (FIOType) на вкладка Design

10. Аналогичным образом создать описание дочерних по отношению к FIO элементов LName (фамилия), FName (имя) и MName (отчество). Определить структуру дочернего по отношению к Student элемента Group (группа, к которой учится студент) с элементами-потомками spec (специальность), year (курс), num (номер группы).

11. Сохранить XML-документ File | Save ► документ сохранен (рис. 1.19)

Page 30: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.19 – Результат создания XML-схемы в визуальном режиме в Eclipse

5.6. Создание XML-схемы документа в среде Eclipse Helios (исходный код)

1. Выполнить среду Eclipse Helios:Локальный диск D | директория Eclipse | файл eclipse.exe ► Eclipse

2. Создать новый проект (если он уже создан, сразу перейти к следующему пункту)

File | New | Project… ► Select a Wizard | выбрать General → Project; кнопка Next ► Project | Project Name ← Labs; кнопка Finish ► Labs – Eclipse

3. Создать в проекте новую XML-схему с именем Result.xsd:выделить проект Labs | File | New | Other… ► Select a wizard | выбрать XML → XML Schema; кнопка Next ► New XML File | File Name ← Result.xsd; кнопка Finish ► Result.xsd | вкладка Source (рис. 1.20)

Page 31: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.20 – Создание исходного кода XML-схемы в Eclipse

4. Установить префикс для элементов схемы:вкладка Properties | кнопка Edit Namespaces… ► Edit Schema Information | выбрать строку с http://www.w3.org/2001/XMLSchema | кнопка Edit ► New Namespace Information | Prefix ← xsd; кнопка OK

5. Создать описание корневого элемента Result. Для этого ввести открывающий тег элемента element с префиксом xsd (при вводе воспользоваться системой всплывающих подсказок IntelliSense):

<xsd:element name="Result">(при вводе закрывающей угловой скобки автоматически генерируется закрывающий тег элемента)

6. Указать сложный тип элемента Result. Для этого с помощью системы IntelliSense ввести открывающий тег элемента complexType с префиксом xsd:

<xsd:complexType>(при вводе закрывающей угловой скобки автоматически генерируется закрывающий тег элемента)

7. Задать элемент Result как контейнер для дочерних элементов с помощью элемента sequence. Ввести его открывающий тег с префиксом xsd с помощью системы IntelliSense:

<xsd:sequence>(при вводе закрывающей угловой скобки автоматически генерируется закрывающий тег элемента)

8. Объявить элемент Exam сложного типа как контейнер для дочерних элементов. Для этого ввести последовательно иерархию

<xsd:element name="Exam">

Page 32: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

<xsd:complexType><xsd:sequence></xsd:sequence>

</xsd:complexType></xsd:element>

9. Указать, что элемент Exam допускает неограниченное количество своих экземпляров в документе:

Выделить элемент Exam | вкладка Properties | установить minOccurs → 1 (должен быть как минимум один экземпляр элемента в документе); maxOccurs → unbounded ► атрибуты в коде элемента.

10. Определить дочерние элементы Exam между открывающим и закрывающим тегами элемента sequence

– Объявить элемент Task, допускающий текстовое содержимое (дочерние текстовые узлы):

<xsd:element name=" Task" type="xsd:string"/>– аналогичным образом объявить элементы Lecturer

(преподаватель), Date (дата сдачи) и Grade (оценка) (рис. 1.21).

Рисунок 1.21 – Результат создания XML-схемы (исходный код)11. Сохранить XML-документ

Page 33: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

File | Save ► документ сохранен

5.7. Создание базы данных с помощью СУБД DB21. Выполнить инструментарий Центр управления DB2:

Пуск | Программы | IBM DB2 | DB2COPY1 (по умолчанию) | Общие инструменты управления | Центр управления ► Вид Центра управления ← Расширенный; кнопка OK ► Центр управления – DB2COPY1

2. Открыть редактор команд: Центр управления – DB2COPY1 | Инструменты → Редактор команд ► Редактор команд 1 – DB2COPY1| вкладка Команды | (рис. 1.22)

Рисунок 1.22 – Интерфейс редактора команд DB2

3. Создать Unicode-базу данных с именем Labs:– ввести программный код создания базы данных

CREATE DATABASE Labs USING CODESET UTF-8 TERRITORY US

– Выполнить команды на выполнение:

Page 34: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Панель инструментов | кнопка Выполнить ►Сообщение «DB20000I Команда SQL выполнена успешно» на экране (рис. 1.23).

Рисунок 1.23 – Создание базы данных

4. В базе данных Labs создать таблицу Student_progress:– соединиться с базой данных:

Команды | ввести код: CONNECT TO Labs;– ввести программный код создания таблицы Student_progress:

Команды | CREATE TABLE Student_progress (– ввести программный код создания поля-идентификатора:

ID INTEGER PRIMARY KEY NOT NULL,– ввести программный код создания XML-полей данных о

студенте (STUDENT), о предмете (SUBJECT) и результатах (RESULT):

STUDENT XML, SUBJECT XML, RESULT XML);– Выполнить команды на выполнение:

Page 35: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Панель инструментов | кнопка Выполнить ►Сообщение «DB20000I Команда SQL выполнена успешно» на экране.

5.8. Импорт XML-данных в таблицу1. Скопировать все XML-файлы о студентах в папку Students, о

предметах – в папку Subjects, об успеваемости – в папку Results.2. Создать пустой текстовый файл с именем import.txt. Файл

разместить в той же директории, что и папки Students, Subjects и Results.

3. Ввести в текстовый файл первую строку для импорта:Открыть файл import.txt | ввести текст:1,<XDS FIL='Students/s1.xml'/>,<XDS FIL='Subjects/sb1.xml'/>,<XDS FIL='Results/r1.xml'/>

4. Перейти на следующую строку в текстовом документе (используется в качестве разделителя) и ввести все остальные строки для импорта (рис.1.24).

Рисунок 1.24 – Текстовый файл с разделителями для импорта данных

5. Перейти в редактор команд DB2.6. Ввести команду импорта данных в таблицу Student_progress:

CONNECT TO Labs;IMPORT FROM "директория с файлами\import.txt" OF DEL METHOD P (1, 2, 3, 4) INSERT INTO STUDENT_PROGRESS

Page 36: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

(ID, STUDENT, SUBJECT, "RESULT");CONNECT RESET;

7. Выполнить команды на выполнение:Панель инструментов | кнопка Выполнить ►Сообщение «DB20000I Команда SQL выполнена успешно» на экране; проверить, что в сообщении указанное число прочитанных, вставленных и принятых строк не равно нулю (рис. 1.25).

Рисунок 1.25 – Сообщение о вставке данных

5.9. Валидация XML-данных при импорте в таблицу1. Перейти в редактор команд DB2.2. Зарегистрировать схему в базе данных Labs:

CONNECT TO Labs;register xmlschema "http://labs.asu.ac.ru" from "директория с файлами\Student.xsd" asADMIN.student_schema complete; CONNECT RESET;

3. Изменить один из XML-файлов с данными о студентах так, чтобы он не соответствовал XSD-схеме. Например, изменить название элемента studID на ID.

4. Внести необходимые изменения в файл import.txt.5. Импортировать данные в таблицу Student_progress:

CONNECT TO Labs;IMPORT FROM "директория с файлами\import.txt" OF DEL METHOD P (1, 2) XMLVALIDATE USING SCHEMA

Page 37: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

ADMIN.STUDENT_SCHEMA INTO ADMIN. Student_progress (ID, STUDENT, SUBJECT, RESULT); CONNECT RESET;

5.10. Обзор XML-данных в таблице1. Выполнить инструментарий Центр управления DB2:

Пуск | Программы | IBM DB2 | DB2COPY1 (по умолчанию) | Общие инструменты управления | Центр управления ► Вид Центра управления ← Расширенный; кнопка OK ► Центр управления – DB2COPY1

2. Найти базу данных Labs:Окно объектов | Все базы данных | Labs | Таблицы | Таблицы | Найти STUDENT_PROGRESS; двойной клик мыши ► Открыть таблицу – STUDENT_PROGRESS; выделить одну из имеющихся строк; кнопка [***] ► Программа просмотра документов XML; просмотреть XML-иерархию на экране (рис. 1.26).

Рисунок 1.26 – Интерфейс просмотра таблицы

6. Задание на лабораторную работу1. Воспроизвести все решения из методики выполнения работы.2. Построить по пять XML-документов со своими XML-

данными по концептуальным моделям, приведенным во «Вводных

Page 38: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

замечаниях». Для хранения данных создать директорию с идентификатором следующего формата «НомерГруппы_первые буквы фамилий студентов подгруппы», например, «PIE510_IPC». Каждую концептуальную модель дополнить одним собственным XML-элементом (или атрибутом).

3. На основе измененных концептуальных моделей XML-документов построить две XSD-схемы и поместить их в ту же директорию.

4. В СУБД DB2 создать базу данных с тем же именем, что и директорию со всеми XML- и XSD-файлами. В базе данных создать таблицу Sales со структурой, описанной в методике выполнения.

5. На основе файла с разделителями внести в базу данных XML-данные об оборудовании и его продажах (для каждого вида оборудования – не менее двух итераций продаж). В ходе импорта данных протестировать созданные XSD-схемы. Выводимые в СУБД ошибки с помощью скриншотов сохранить в документе Word для отчета.

7. Контрольные вопросы1. Что такое XML? Чем он отличается от HTML?2. Каковы признаки корректного XML-документа?3. Что такое «валидный XML-документ»? 4. Что представляют собой схемы XML-документа?5. Что такое «pureXML»?

8. Содержание и оформление отчета Отчет должен содержать:– титульный лист, название и цель работы;– концептуальные модели XML-документов в заданной нотации;– XML-код созданных документов и XSD-схем, – текст импортируемого файла с разделителями;– SQL-код создания и заполнения базы данных и таблиц;– результаты применения XSD-схем (обнаружение ошибок);– выводы по работе.

Лабораторная работа № 2XML-ДАННЫЕ В DB2.

Page 39: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

МОДИФИКАЦИЯ, УДАЛЕНИЕ, ИНДЕКСАЦИЯ

1. Цель работыЦелью работы является изучение принципов создания,

изменения, удаления и индексирования XML-данных в СУБД IBM DB2.

2. Задачи Задачами лабораторной работы являются овладение навыками

заполнения баз данных DB2 XML-данными, изменения и удаления уже хранящихся в таблицах XML-данных, а также программирования индексов, упрощающих доступ к XML-данным.

3. Теоретическая частьУправление XML-данными. СУБД DB2 внешне не делает

различий между стандартными SQL-типами данных и той информацией, которая представлена в формате XML (но это только внешне).

Стандартные операции управления данными (в том числе и XML) принято делить на три обобщенных группы – создание, изменение (или модификация) и удаление.

В SQL такие задачи решаются с помощью группы команд DML (data manipulating language – языка обработки данных).

Ввод XML-данных. Все строки в SQL вводятся с использованием команды модификации INSERT.

В самой простой форме команда INSERT использует следующий синтаксис:

INSERT INTO Название_таблицы VALUES ( , . . .); При использовании команды INSERT программист напрямую

вводит в DB2 необработанные XML-данные. Этот способ используется обычно тогда, когда вводимые XML-данные сравнительно небольшие, поскольку при более значительных документах могут возникнуть проблемы, связанные с отслеживанием корректности XML-данных.

Модификация XML-данных. Стандартная SQL-команда, предназначенная для внесения изменений в существующие в таблице данные, называется UPDATE. Она имеет следующий синтаксис:

Page 40: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

UPDATE Название_таблицыSET поле1 = значение1, поле2 = значение2,...WHERE поле = значениеПравила выполнения этой команды применительно к XML

представлены в системной хранимой процедуре, которая называется DB2XMLFUNCTIONS.XMLUPDATE.

Независимо от того, какого рода и уровня изменения должны быть внесены в XML-поле, обновление XML-столбца производится на уровне документа, а не на уровне элемента. Программисты, выполняющие инструкцию UPDATE, должны предоставить весь документ (а не только изменяемые элементы) (в более поздних версиях DB2 изменения можно выполнять на уровне отдельных элементов и атрибутов).

Как и в любой SQL-инструкции UPDATE, сначала определяется таблица и столбец, которые нужно обновить. Поскольку целевой столбец содержит XML-данные, нужно указать в качестве нового значения правильно сформированный XML-документ.

В команде UPDATE обязательно используется функция XMLParse, которая преобразует входную строку в XML. Например, чтобы показать, что строка должна быть интерпретирована как XML-данные, следует использовать конструкцию:

xmlparse(document ' <Student><studID>s1</studID><rcb>111111</rcb><FIO><LName>Ивановский</LName><FName>Иван</FName><MName>Иванович</MName></FIO><Group><spec>ПИЭ</spec><year>5</year><num>10</num></Group></Student> ' ))

Удаление XML-данных. Стандартная SQL-команда, предназначенная для удаления строк из таблицы, называется DELETE. Она имеет следующий синтаксис

DELETE FROM название_таблицы WHERE поле = значениеВ этой команде особое значение приобретает ключевое слово

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

Page 41: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Команда DELETE может удалять только введенные строки, а не индивидуальные значения полей, так что указание конкретных полей в качестве параметров команды является необязательным или недоступным. 

Удаление строк, содержащих XML-столбцы, – процесс достаточно простой. Инструкция SQL DELETE позволяет указать (или ограничить) строки, которые нужно удалить при помощи предложения WHERE. Это предложение может включать в себя простые предикаты, идентифицирующие значения в не-XML-столбцах, или функции SQL/XML, идентифицирующие значения XML-элементов, содержащихся в XML-столбцах.

Индексирование XML-данных. В DB2 XML-индекс – это особый вид индексов, который создается для столбцов с XML-данными в таблице DB2.

XML-индексы используются для ускорения доступа к XML-данным.

Реляционные индексы обычно состоят из одного или нескольких столбцов таблицы. В отличие от них XML-индексы используют специальные шаблонные выражения (pattern expressions), которые адресуют отдельные элементы (или их группы) или атрибуты с их значениями по заданному «адресу».

Шаблонное выражение представляет собой выражение XPath, которое определяет узлы XML-документа или значения атрибутов, которые должны быть использованы в индексе. Только те XML-узлы, которые соответствуют шаблонному выражению, могут быть проиндексированы.

Например, шаблонное XML-выражение имеет вид: 'students/student[studID='1']'. В этом примере XML-шаблон индексирует все строк в таблице, которые содержат в своем XML-поле данные, удовлетворяющие следующим условиям: корневой узел – students; дочерний узел элемента students – student; значение его элемента studID равно '1'.

XML-индексы создаются стандартной SQL-командой CREATE INDEX. В отличие от реляционных индексов, каждый XML-индекс может быть ассоциирован только с одним столбцом XML-типа данных.

4. Методика выполнения работы

Page 42: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

4.1. Создание XML-документов в базе данных DB21. Выполнить инструментарий Центр управления DB2:

Пуск | Программы | IBM DB2 | DB2COPY1 (по умолчанию) | Общие инструменты управления | Центр управления ► Вид Центра управления ← Расширенный; кнопка OK ► Центр управления – DB2COPY1

2. Открыть редактор команд: Центр управления – DB2COPY1 | Инструменты → Редактор команд ► Редактор команд 1 – DB2COPY1| вкладка Команды

3. Создать новую строку в таблице Student_progress:– ввести команду вставки данных в таблицу

CONNECT TO Labs;INSERT INTO Student_progress VALUES(

– создать новое значение поля ID:10,

– создать новое значение поля STUDENT:'<Student><studID>s10</studID><rcb>777777</rcb><FIO><LName>Ларионов</LName><FName>Петр</FName><MName>Иванович</MName></FIO><Group><spec>АСОИ</spec><year>5</year><num>20</num></Group></Student>',

– создать новое значение поля SUBJECT:'<Subject><subjID>10</subjID><name>Теория систем и системный анализ</name><hours>70</hours><chair>АСУ</chair></Subject>',

– создать новое значение поля RESULT:'<Results><Exam><Task>17</Task><Lecturer>Иванов</Lecturer><Date>12.06.2011</Date><Grade>5</Grade></Exam></Results>');

– закрыть соединение с базой данныхCONNECT RESET;

– запустить запрос на выполнение (рис. 2.1)

Page 43: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 2.1 – Сообщение о выполнении вставки данных

4.2. Обновление XML-данных 1. Выполнить инструментарий Центр управления DB2:

Пуск | Программы | IBM DB2 | DB2COPY1 (по умолчанию) | Общие инструменты управления | Центр управления ► Вид Центра управления ← Расширенный; кнопка OK ► Центр управления – DB2COPY1

2. Открыть редактор команд: Центр управления – DB2COPY1 | Инструменты → Редактор команд ► Редактор команд 1 – DB2COPY1| вкладка Команды

3. Изменить фамилию студента в строке со значением поля ID, равным 1. Новое значение фамилии – Ивановский.

– установить соединение с базой данных Labs:CONNECT TO Labs;

– ввести команду изменения данных в таблице Student_progress:update Student_progress

– задать название поля, значение которого должно быть изменено:

Page 44: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

set STUDENT =(– указать, что вводимое текстовое значение должно быть

интерпретировано как XML:xmlparse(document

– ввести обновленные текстовые данные в виде строки' <Student><studID>s1</studID><rcb>111111</rcb><FIO><LName>Ивановский</LName><FName>Иван</FName><MName>Иванович</MName></FIO><Group><spec>ПИЭ</spec><year>5</year><num>10</num></Group></Student> ' ))

– указать, для каких строк должны быть изменены значения (в нашем случае это строки с ID = 1):

where ID = 1;– закрыть соединение с базой данных:

CONNECT RESET; (рис. 2.2)

Рисунок 2.2 – Сообщение об изменении данных4. Добавить еще одну попытку сдачи дисциплины «Базы

данных» студентом Ивановским (поскольку запросы – это только будущий материал, примем по умолчанию, что все эти данные находятся в строке с ID=1):

– установить соединение с базой данных Labs:CONNECT TO Labs;

Page 45: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

– ввести команду изменения данных в таблице Student_progress:update Student_progress

– указать, что должно быть изменено значение поля RESULT:set RESULT =(

– указать, что вводимое текстовое значение должно быть интерпретировано как XML:

xmlparse(document – ввести обновленные текстовые данные в виде строки

'<Results><Exam><Task>1</Task><Lecturer>Петров</Lecturer><Date>10.01.2011</Date><Grade>2</Grade></Exam><Exam><Task>5</Task><Lecturer>Петров</Lecturer><Date>15.01.2011</Date><Grade>4</Grade></Exam><Exam><Task>25</Task><Lecturer>Петров</Lecturer><Date>25.01.2011</Date><Grade>5</Grade></Exam></Results>'))

– указать, для каких строк должны быть изменены значения (в нашем случае это строки с ID = 1):

where ID = 1;– закрыть соединение с базой данных:

CONNECT RESET;5. Изменить название дисциплины «Базы данных» на «Базы

данных и знаний» (поскольку запросы – это только будущий материал, примем по умолчанию, что все эти данные находятся в строках с ID=1 и ID=4):

– установить соединение с базой данных Labs:CONNECT TO Labs;

– ввести команду изменения данных в таблице Student_progress:update Student_progress

– задать название поля, значение которого должно быть изменено:

set SUBJECT =(– указать, что вводимое текстовое значение должно быть

интерпретировано как XML:xmlparse(document

– ввести обновленные текстовые данные в виде строки' <Subject><subjID>1</subjID><name>Базы данных и знаний</name>

Page 46: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

<hours>80</hours><chair>АСУ</chair></Subject> ' ))

– указать, для каких строк должны быть изменены значения (в нашем случае это строки с ID = 1 и ID = 4):

where ID = 1 or ID = 4;– закрыть соединение с базой данных:

CONNECT RESET;

4.3. Удаление XML-данных 1. Выполнить инструментарий Центр управления DB2:

Пуск | Программы | IBM DB2 | DB2COPY1 (по умолчанию) | Общие инструменты управления | Центр управления ► Вид Центра управления ← Расширенный; кнопка OK ► Центр управления – DB2COPY1

2. Открыть редактор команд: Центр управления – DB2COPY1 | Инструменты → Редактор команд ► Редактор команд 1 – DB2COPY1| вкладка Команды

3. Удалить из таблицы Student_progress строку, в которой значение поля ID равно 5:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– ввести код удаления строки из таблицы Student_progress:delete from Student_progress

– указать, какие строки должны быть удалены (в нашем случае это строки с ID = 5):

where ID = 5;– закрыть соединение с базой данных:

CONNECT RESET; – запустить запрос на выполнение (рис. 2.3).

Page 47: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 2.3 – Сообщение об удалении данных

4.4. Программирование XML-индексов1. Выполнить инструментарий Центр управления DB2:

Пуск | Программы | IBM DB2 | DB2COPY1 (по умолчанию) | Общие инструменты управления | Центр управления ► Вид Центра управления ← Расширенный; кнопка OK ► Центр управления – DB2COPY1

2. Открыть редактор команд: Центр управления – DB2COPY1 | Инструменты → Редактор команд ► Редактор команд 1 – DB2COPY1| вкладка Команды

3. Создать индекс на основании значения элемента rcb столбца Student таблицы Student_progress:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– ввести код создания индексаCREATE INDEX RCB ON Student_progress (STUDENT) GENERATE KEY USING XMLPATTERN '/Student/rcb' AS SQL VARCHAR(10);

– закрыть соединение с базой данных:CONNECT RESET;

– запустить запрос на выполнение (рис. 2.4).

Page 48: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 2.4 – Сообщение о создании индекса

4. Создать индекс на основании значения элемента name столбца Subject таблицы Student_progress:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– ввести код создания индексаCREATE INDEX NAME ON Student_progress(SUBJECT) GENERATE KEY USING XMLPATTERN '/Subject/Name' AS SQL VARCHAR(25);

– закрыть соединение с базой данных:CONNECT RESET;

5. Создать индекс на основании значения элемента date столбца Result таблицы Student_progress:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– ввести код создания индексаCREATE INDEX DATE ON Student_progress (RESULT) GENERATE KEY USING XMLPATTERN '/Result/Exam/Date' AS SQL DATE;

– закрыть соединение с базой данных:CONNECT RESET;

Page 49: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

5. Задание на лабораторную работу1. Воспроизвести все решения из методики выполнения работы.2. Внести по пять новых строк с XML-данными в свою базу

данных и ее таблицу Sales. 3. Изменить пять любых строк с XML-данными из своей базы

данных и ее таблицы Sales.4. Удалить из таблицы Sales все строки, внесенные на первой

лабораторной работе.5. Создать три XML-индекса на основе данных из таблицы Sales.

6. Контрольные вопросы1. Что такое DML? Какие команды он включает в себя?2. Как внести XML-данные в таблицу DB2?3. Как изменить XML-данные в таблице DB2?4. Как удалить XML-данные из таблицы DB2?5. Что такое «индекс»? Чем отличаются реляционные индексы

от XML-индексов?6. Что такое «шаблонное выражение»?7. Какой командой создается XML-индекс?

7. Содержание и оформление отчета Отчет должен содержать:– титульный лист, название и цель работы;– SQL-код внесения в таблицу XML-данных;– SQL-код изменения в таблице XML-данных;– SQL-код удаления из таблицы XML-данных;– SQL-код создания XML-индексов;– выводы по работе.

Page 50: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

СПИСОК ЛИТЕРАТУРЫ1. Документация DB2 Express-C [официальный сайт IBM].

URL:http://publib.boulder.ibm.com/infocenter/db2luw/v9r72. Книга серии IBM RedBooks о DB2 и XML [официальный сайт

IBM]. URL: http://www.ibm.com/developerworks/ru/ library/db2xml-intro

3. Миронов В. В., Юсупова Н. И. XML-технологии в базах данных: Учеб. пособие. Уфа: УГАТУ, 2004. 182 с.

4. Спецификация XML на W3C. URL: http://www.w3.org/TR/2000/REC-xml-20001006

5. Филиппов В.А., Щукин Б.А., Богатырева Л.В. Многозначные СУБД и XML базы данных. – М.: Ленанд, 2008. – 144 с.

6. Хантер Д. XML. Базовый курс. – 4-е изд. – М.: Диалектика. – 1344 с.

7. Академический каталог учебных курсов IBM. URL:http :// www . ibm . com / ru / software / info / students / courseware /

8. Страница Академической инициативы IBM в УГАТУ на портале кафедры АСУ. URL: http://10.61.2.63/asu/p_ibm.php

Page 51: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Министерство образования и науки Российской ФедерацииФедеральное государственное бюджетное образовательное

учреждение высшего образованияУфимский государственный авиационный технический университет

ОБРАБОТКА РАСПРЕДЕЛЕННОЙ ИНФОРМАЦИИ

НА ОСНОВЕ XML И DB2.SQL- И XQUERY ЗАПРОСЫ К XML-ДАННЫМ

Лабораторный практикумпо дисциплине «Распределенная обработка информации в

автоматизированных системах»

Уфа 2017

Page 52: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Министерство образования и науки Российской ФедерацииФедеральное государственное бюджетное образовательное

учреждение высшего образованияУфимский государственный авиационный технический университет

Кафедра автоматизированных систем управления

ОБРАБОТКА РАСПРЕДЕЛЕННОЙ ИНФОРМАЦИИ

НА ОСНОВЕ XML И DB2.SQL- И XQUERY ЗАПРОСЫ К XML-ДАННЫМ

Лабораторный практикумпо дисциплине «Распределенная обработка информации в

автоматизированных системах»

Уфа 2017

Page 53: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Составители: Р. Р. Еникеев, Г. В. Старцев, Г. Р. Шакирова, А. М. Шамсиева

УДК 681.3.06 (07)ББК 32.973-018.2 (я7)

Обработка распределенной информации на основе XML и DB2. SQL- и XQuery запросы к XML-данным: лабораторный практикум по дисциплине "Распределенная обработка информации в автоматизированных системах" для специальности 09.05.01 – Применение и эксплуатация автоматизированных систем специального назначения/ Уфимск. гос. авиац. техн. ун-т; Сост.: Р. Р. Еникеев, Г. В. Старцев, Г. Р. Шакирова, А. М. Шамсиева. – Уфа, 2017. – 46 с.

Рассматриваются основные принципы применения технологии PureXML для создания, ведения и поиска XML-данных в СУБД IBM DB2 – от создания, хранения, ведения и индексирования XML-данных до программирования XML-ориентированных запросов для получения иерархий данных и атомарных значений. Пособие предназначено для студентов специальности 09.05.01 «Применение и эксплуатация автоматизированных систем специального назначения» с целью закрепления навыков, полученных при изучении курса «Распределенная обработка информации в автоматизированных системах».

Ил. 29. Библиогр.: 9 назв.

Рецензенты: канд. техн. наук, доц. А. Н. Набатов, канд. техн. наук, доц. Н. И. Федорова

© Уфимский государственныйавиационный технический университет, 2017

Page 54: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

СОДЕРЖАНИЕ

Введение 4Вводные замечания 5

Лабораторная работа 3 Запросы к XML-данным в DB2. Использование языка SQL

1. Цель работы 72. Задачи 73. Теоретическая часть 74. Методика выполнения работы 115. Задание на лабораторную работу 286. Контрольные вопросы 297. Содержание и оформление отчета 29

Лабораторная работа 4Запросы к XML-данным в DB2. Использование языка XQUERY

1. Цель работы 302. Задачи 303. Теоретическая часть 304. Методика выполнения работы 335. Задание на лабораторную работу 446. Контрольные вопросы 457. Содержание и оформление отчета 45Список литературы 46

Page 55: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

ВВЕДЕНИЕВ настоящее время обработка информации представляет собой

сложный трудоемкий процесс. Сложность его тем более возрастает, чем больше новых форматов представления данных разрабатывается. Особой популярностью среди этих форматов пользуется XML: он широко применяется как для представления данных, так и для их сопровождения. Например, многие конфигурационные файлы представляют собой документы в формате XML, что упрощает их программную и аппаратную обработку. Это возможно, в первую очередь, благодаря возможностям самого формата XML.

Немаловажную роль при этом играет задача обращения к XML-данным, запросов к ним. В этой связи отчетливо прослеживаются две тенденции. Одна из них связана с направленной адаптацией традиционного языка реляционных запросов SQL под особенности XML-архитектуры. На уровне реляционных СУБД (например, DB2) ярким представителем этого направления является SQL/XML.

Вторая тенденция определяет XML как самостоятельный формат и апеллирует в пользу разработки собственного XML-языка запросов. Последние веяния нашли отражение на двух уровнях. Во-первых, это предложенная консорциумом W3C адресация XPath, которая рассматривает XML как дерево, по элементам которого (ветвям, листьям и т. д.) можно свободно перемещаться. XPath в силу своей стандартизованности (W3C) поддерживается большинством языков и технологий программирования (это еще один плюс в его пользу). Второе направление XML-ориентированных языков представлено комбинацией реляционного SQL и XML-направленного XPath, которая нашла свое отражение в новом языке, получившем название XQuery (XML Query). Этот язык приобретает все большую популярность, и производители программного обеспечения всячески стараются привлечь его поддержку в свои продукты.

В этой связи специалисты в области обработки информации обязательно должны иметь навык работы с подобными языками программирования запросов. В данном издании рассматриваются особенности применения каждого из них на уровне реляционной СУБД IBM DB2.

Page 56: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

ВВОДНЫЕ ЗАМЕЧАНИЯВ курсе лабораторных работ в качестве сквозного примера

рассматривается база данных «Labs». Она представлена единственной таблицей «Student_progress» (успеваемость студентов) с четырьмя столбцами. Структура таблицы и типы данных ее столбцов приведены в таблице 1:

Таблица 1Student_progress

ID STUDENT SUBJECT RESULTint xml xml xml

В каждый из XML-столбцов загружается свой XML-документ. Для хранения документов следует предварительно создать следующую структуру директорий: общая папка Labs → в ней – три вложенных директории: STUDENTS (для XML-файлов о студентах), SUBJECTS (для XML-файлов о дисциплинах), RESULTS (для XML-файлов об успеваемости). Нотация предполагает представление XML-элементов в виде прямоугольников с закругленными углами.

Концептуальные схемы XML-документов представлены на рис. В1.

Page 57: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок В1 – Концептуальные схемы XML-документов(для методики выполнения работы)

В рамках лабораторных работ студенты должны ориентироваться на XML-документы, описывающие порядок закупки компьютерного оборудования. Для этого должны быть введены две XML-структуры, схемы которых представлены на рис. В2. Первая структура представлена элементом Equipment (оборудование), описывающим такие реквизиты оборудования, как идентификатор (eqID), название (eqName), параметры (Parameter) и производителя (Production).

Вторая XML-структура показывает итерации покупки оборудования из первой структуры. Каждая итерация задается элементом Item внутри корневого элемента Purchase (покупка) и характеризуется идентификатором (элемент ID), датой (элемент Date), количеством (элемент Quantity), ценой за единицу (элемент Price per Unit), покупателем (элемент Client с дочерними элементами Name и Contacts).

Рисунок В2 – Концептуальные схемы XML-документов(для задания на лабораторные работы)

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

Page 58: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

быть представлена таблицей Sales с идентифицирующим полем ID и двумя XML-полями Equipment и Purchase.

Лабораторные работы выполняются на уровне СУБД IBM DB2 Express C, позволяющей выполнение операций создания и управления XML-данными.

Лабораторная работа № 3ЗАПРОСЫ К XML-ДАННЫМ В DB2.

ИСПОЛЬЗОВАНИЕ ЯЗЫКА SQL (SQL-ONLY)

1. Цель работыЦелью работы является изучение принципов

программирования SQL-ориентированных запросов в СУБД IBM DB2.

2. Задачи Задачами лабораторной работы являются овладение навыками

программирования запросов на языке SQL для получения XML-данных, использования возможностей СУБД DB2 для создания и выполнения таких запросов, а также интерпретации полученного результата.

3. Теоретическая частьЗапросы к XML в реляционных СУБД. Важнейшим

элементом работы с данными (независимо от того, в каком формате они представлены) является организация запросов к ним для получения искомого результата. В случае с XML результат представляет собой, как правило, XML-иерархию (в отличие от реляционных данных, когда результат, как и источник данных, – это плоские двумерные таблицы). Такая XML-иерархия может иметь разный уровень вложенности – от практически полного «копирования» всего документа (при обращении к самому XML-документу или его корневому элементу) до представления его отдельных узлов. В последнем случае можно даже скрыть от пользователя «XML-природу» данных – достаточно показать просто содержимое текстового узла, что, по определению, просто текст, не обрамленный никакими тегами.

Важнейшей проблемой при работе с XML-данными в реляционных СУБД является доступ к ним. К счастью,

Page 59: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

большинство реляционных СУБД адаптируют свой диалект языка SQL к нуждам XML. Не является исключением и СУБД DB2.

SQL (Structured Query Language – структурированный язык запросов) ориентирован на операции с данными, представленными в виде взаимосвязанных таблиц. Особенность предложений этого языка состоит в том, что они ориентированы в большей степени на конечный результат обработки данных, чем на процедуру этой обработки. SQL сам определяет, где находятся данные, какие индексы и даже наиболее эффективные последовательности операций следует использовать для их получения: не надо указывать эти детали в запросе к базе данных.

Реализация в SQL операций, ориентированных на табличное представление данных, сосредоточена в небольшом (порядка 30) наборе команд для выполнения запросов.

В языке SQL существуют:– предложения определения данных (определение баз данных,

а также определение и уничтожение таблиц и индексов);– запросы на выбор данных (предложение SELECT);– предложения модификации данных (добавление, удаление и

изменение данных);– предложения управления данными (предоставление и

отмена привилегий на доступ к данным, управление транзакциями и другие). Кроме того, он предоставляет возможность выполнять в этих предложениях:

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

– упорядочение строк и (или) столбцов при выводе содержимого таблиц на печать или экран дисплея;

– создание представлений (виртуальных таблиц), позволяющих пользователям иметь свой взгляд на данные без увеличения их объема в базе данных;

– запоминание выводимого по запросу содержимого таблицы, нескольких таблиц или представления в другой таблице (реляционная операция присваивания).

– агрегирование данных: группирование данных и применение к этим группам таких операций, как среднее, сумма, максимум, минимум, число элементов и т. п.

Page 60: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

XPath (полное название – XML Path Language – язык путей в XML) – это язык, ориентированный на навигацию в XML-документе, т. е. целенаправленное перемещение к необходимым данным. В отличие от SQL, XPath – это прерогатива XML-обработки, язык не может быть применен к каким-либо другим типам данных (даже иерархическим, хотя XML, по сути, тоже иерархия).

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

Элементарной единицей пути адресации является шаг. В выражениях пути шаги отделяются друг от друга символом «/». Например, путь

Student/FIO/Famначинает поиск с узла элемента Student. Далее курсор поиска перемещается к его дочернему элементу FIO, далее – к следующему дочернему элементу Fam, который и является искомым результатом.

Важным элементом XPath-выражений являются предикаты. Это условия отбора элементов, во многом напоминающие конструкцию WHERE в SQL. Предикаты так же представляют собой XPath-выражения и используют концепцию пути и шага. Предикаты в XPath-выражениях отделяются от основного кода символами «[» и «]». Например, следующее XPath-выражение адресует только такие элементы студент, в которых значение элемента spec равно 'ПИЭ':

Student[Group/spec="ПИЭ"]SQL/XML. К сожалению, есть много такого, что нельзя

сделать при помощи одного SQL. Обычные инструкции SQL позволят получать XML-документы целиком, но не позволят указывать в запросах предикаты XML и получать фрагменты XML-документов и конкретные значения их элементов.

Иными словами, с помощью SQL невозможно проецировать, ограничивать, соединять, агрегировать и упорядочивать фрагменты XML-документов. Например, нельзя получить только фамилии всех студентов специальности «ПИЭ» или названия всех предметов, которые сдавал студент с фамилией «Иванов». Для формулировки таких запросов нужно будет использовать SQL с XML-расширениями (SQL/XML), XQuery или их комбинацию.

Page 61: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Как показывает само название, SQL/XML предназначен для того, чтобы служить мостом между мирами SQL и XML. Он создавался как часть процесса стандартизации SQL, и сейчас включает в себя спецификации для встраивания выражений XQuery и XPath в инструкции SQL. XPath представляет собой язык для навигации в XML-документах для поиска элементов и атрибутов. XQuery включает в себя поддержку XPath.

Важно отметить, что в выражениях XQuery (и XPath) учитывается регистр. Это особенно важно в DB2, где все названия (таблиц, полей, индексов и т. д.) автоматически преобразуются в верхний регистр.

SQL/XML в DB2. Система DB2 9 включает более 15 функций SQL/XML, которые позволяют вести поиск данных в XML-документах, преобразовывать реляционные данные в XML, XML – в реляционные данные и выполнять другие полезные задачи. Рассмотрим типовые задачи, которые решаются с помощью этого языка.

«Ограничение» выборки результатов на основе значений XML-элементов. SQL-программисты часто пишут запросы, которые ограничивают выборку строк из СУБД определенным условием. Но что, если нам нужно ограничить поиск условием, применимым к данным в XML-столбце? Функция XMLExists из SQL/XML предлагает способ решения этой задачи.

Функция XMLExists позволяет перейти к элементу в XML-документе и проверить выполнение указанного условия. Если указать эту функцию в составе предложения WHERE, то XMLExists ограничит выборку результатов только теми строками, которые содержат XML-документ с указанным значением XML-элемента (иными словами, теми, где указанное значение будет истинным). В качестве входного параметра функция принимает выражение XPath.

«Проецирование» значений XML-элементов. Другая задача связана с необходимостью отобразить (спроецировать) XML-значения в возвращаемый набор данных. Иными словами, нужно получить одно или несколько значений элементов из XML-документов.

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

Page 62: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

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

Функция XMLTable генерирует таблицу из данных, хранящихся в XML-столбцах, и она очень полезна, поскольку программисты могут получить «реляционное» представление XML-данных. Как и функции XMLExists и XMLQuery, функция XMLTable заставляет DB2 выполнить навигацию по иерархии XML-документа, чтобы найти искомые данные.

4. Методика выполнения работы1. Выполнить инструментарий Центр управления DB2:

Пуск | Программы | IBM DB2 | DB2COPY1 (по умолчанию) | Общие инструменты управления | Центр управления ►Вид Центра управления ← Расширенный; кнопка OK ►Центр управления – DB2COPY1

2. Открыть редактор команд:Центр управления – DB2COPY1 | Инструменты → Редактор команд ►Редактор команд 1 – DB2COPY1| вкладка Команды (рис. 1.1)

Page 63: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.1 – Интерфейс редактора команд DB2

3. Извлечь все содержимое таблицы Student_progress, включая XML-данные:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– ввести код запроса:SELECT * FROM Student_progress;

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» (рис. 1.2).

Page 64: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.2 – Результат выполнения запроса к таблице Student_progress

4. Извлечь из таблицы Student_progress данные по строкам, в которых значение поля ID равно 1:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– ввести код запроса:SELECT * FROM Student_progress WHERE ID = 1;

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» и просмотреть результаты запроса (рис. 1.3).

Page 65: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.3 – Результат выполнения запроса к таблице Student_progress (значение ID = 1)

5. Извлечь из таблицы Student_progress данные по строкам, в которых значение поля ID больше 0, но меньше 4:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– ввести код запроса:SELECT * FROM Student_progressWHERE ID BETWEEN 1 AND 3;

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» и просмотреть результаты запроса (рис. 1.4).

Page 66: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.4 – Результат выполнения запроса к таблице Student_progress (значение ID < 4)

6. Извлечь из таблицы Student_progress данные об успеваемости студента по фамилии «Иванов» (значение XML-элемента LName равно "Иванов"):

– установить соединение с базой данных Labs:CONNECT TO Labs;

– извлечь данные из таблицы Student_progress:SELECT * FROM Student_progress

– указать условие фильтрации строк: наличие XML-элемента LName со значением «Иванов»:

WHERE XMLEXISTS ('$stud/Student/FIO[LName="Иванов"]'PASSING Student_progress.student AS "stud");

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» и просмотреть результаты запроса (рис. 1.5).

Page 67: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.5 – Результат выполнения запроса к таблице Student_progress (успеваемость студента Иванова)

7. Извлечь из таблицы Student_progress данные о результатах сдачи студентом Ивановым дисциплины «Базы данных»:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– извлечь значение поля Result из таблицы Student_progress:SELECT RESULT FROM Student_progress

– указать условие фильтрации строк: наличие в поле Student XML-элемента LName со значением «Иванов»:

WHERE XMLEXISTS('$stud/Student/FIO[LName="Иванов"]'PASSING Student_progress.student AS "stud")

и наличие в поле Subject XML-элемента name со значением «Базы данных»:

AND XMLEXISTS('$subj/Subject[name="Базы данных"]'PASSING Student_progress.subject AS "subj");

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» и просмотреть результаты запроса (рис. 1.6).

Page 68: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.6 – Результат выполнения запроса к таблице Student_progress (оценка студента Иванова по «Базам данных»)

8. Извлечь из таблицы Student_progress данные о студентах, которые сдали дисциплину «Базы данных» с первого раза:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– извлечь значение поля STUDENT из таблицы Student_progress:

SELECT STUDENT FROM Student_progress– указать условие фильтрации строк: наличие в поле Subject

XML-элемента name со значением «Базы данных»:WHERE XMLEXISTS('$subj/Subject[name="Базы

данных"]'PASSING Student_progress.subject AS "subj")

и количество попыток сдачи (число XML-элементов Exam в поле Result) равно 1:

AND XMLEXISTS('$res/Results[count(Exam) = 1]'PASSING Student_progress.result AS "res");

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» и просмотреть результаты запроса (рис. 1.7).

Page 69: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.7 – Результат выполнения запроса к таблице Student_progress

(студенты, которые сдали «Базы данных» с первого раза)

9. Извлечь из таблицы Student_progress ФИО всех студентов (источник – поле Student, XML-элемент FIO):

– установить соединение с базой данных Labs:CONNECT TO Labs;

– ввести код запроса:SELECT XMLQUERY('$stud/Student/FIO'PASSING student AS "stud")FROM Student_progress;

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» и просмотреть результаты запроса (рис. 1.8).

Page 70: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.8 – Результат выполнения запроса к таблице Student_progress (ФИО всех студентов в XML)

10. Извлечь из таблицы Student_progress оценку, которую получил студент Иванов по дисциплине «Базы данных» (если попыток было несколько, то извлечь данные той из них, которая находится в иерархии последней):

– установить соединение с базой данных Labs:CONNECT TO Labs;

– извлечь значение XML-элемента Grade последнего в иерархии элемента Exam поля Result из таблицы Student_progress:

SELECT XMLQUERY('$res/Results/Exam[position()=last()]/Grade' PASSING result AS "res") FROM Student_progress

– указать условие фильтрации строк: наличие в поле Student XML-элемента LName со значением «Иванов»:

WHERE XMLEXISTS('$stud/Student/FIO[LName="Иванов"]'PASSING Student_progress.student AS "stud")

и наличие в поле Subject XML-элемента name со значением «Базы данных»:

Page 71: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

AND XMLEXISTS('$subj/Subject[name="Базы данных"]'PASSING Student_progress.subject AS "subj");

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» и просмотреть результаты запроса (рис. 1.9).

Рисунок 1.9 – Результат выполнения запроса к таблице

Student_progress (оценка Иванова по «Базам данных» в XML)

11. Извлечь из таблицы Student_progress фамилии всех студентов (источник – XML-элемент LName поля Student) в виде реляционной таблицы c единственным полем LName:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– указать, что фамилии должны извлекаться без дубликатов:SELECT DISTINCT

– показать, что извлекаются значения LName (псевдоним результата XML-запроса – xml)

xml.LName – задать источники результата: таблицу Student_progress

Page 72: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

FROM Student_progress source, и результат запроса к XML-данным из поля Student, извлекающий в реляционный столбец LName с типом данных varchar и размерностью 100:

XMLTABLE('$stud/Student/FIO' PASSING source.student AS "stud"COLUMNS LName varchar(100) PATH 'LName') AS xml;

– закрыть соединение с базой данныхCONNECT RESET;

– нажать на кнопку «Выполнить» и просмотреть результаты запроса (рис. 1.10) .

Рисунок 1.10 – Результат выполнения запроса к таблице Student_progress (реляционная таблица с XML-данными и

единственным полем)

12. Извлечь полную информацию о студентах в форме реляционной таблицы с полями «Фамилия», «Имя», «Отчество», «Специальность», «Курс», «Группа»:

– установить соединение с базой данных Labs:CONNECT TO Labs;

Page 73: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

– указать, что данные должны извлекаться без дубликатов:SELECT DISTINCT

– показать, что извлекаются значения «Фамилия», «Имя», «Отчество», «Специальность», «Курс», «Группа» (псевдоним результата XML-запроса – xml):

xml.Фамилия, xml.Имя, xml.Отчество, xml.Специальность,

xml.Курс, xml.Группа – задать источники результата: таблицу Student_progress

FROM Student_progress source, и результат запроса к XML-данным из поля Student, извлекающий в реляционные столбцы «Фамилия», «Имя», «Отчество», «Специальность» с типом данных varchar и размерностью 30, в столбцы «Курс» и «Группа» с типом данных varchar и размерностью 5:

XMLTABLE('$stud/Student' passing source.student as "stud"COLUMNS Фамилия varchar(30) PATH 'FIO/LName',Имя varchar(30) PATH 'FIO/FName',Отчество varchar(30) PATH 'FIO/MName',Специальность varchar(30) PATH 'Group/spec',Курс varchar(5) PATH 'Group/year',Группа varchar(5) PATH 'Group/num') AS xml;

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» и просмотреть результаты запроса (рис. 1.11).

Page 74: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.11 – Результат выполнения запроса к таблице Student_progress (реляционная таблица с XML-данными и

множеством полей)

13. Создать реляционное представление на основе выходных данных функции XMLTable, содержащее столбцы «Фамилия», «Имя» и «Отчество» по студентам:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– создать представление Students:CREATE VIEW Students AS

– указать, что данные должны извлекаться без дубликатов:SELECT DISTINCT

– показать, что извлекаются значения «Фамилия», «Имя», «Отчество» (псевдоним результата XML-запроса – xml):

xml.Фамилия, xml.Имя, xml.Отчество – задать источники результата: таблицу Student_progress

FROM Student_progress source, и результат запроса к XML-данным из поля Student, извлекающий в реляционные столбцы «Фамилия», «Имя», «Отчество» с типом данных varchar и размерностью 30:

Page 75: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

XMLTABLE('$stud/Student' passing source.student AS "stud"

COLUMNS Фамилия varchar(30) PATH 'FIO/LName',Имя varchar(30) PATH 'FIO/FName',Отчество varchar(30) PATH 'FIO/MName') AS xml;

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» и просмотреть результаты запроса (рис. 1.12).

Рисунок 1.12 – Результат выполнения запроса к таблице Student_progress (ФИО студентов в реляционном представлении)

– просмотреть представление Центр управления – DB2COPY1 | Окно объектов | Все базы данных | Labs | Производные таблицы | найти Students | двойной клик мыши ► результат на экране (1.13)

Page 76: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.13 – Представление Student в DB2

14. Создать реляционное представление на основе выходных данных функции XMLTable, содержащее данные об успеваемости студентов в формате «Фамилия», «Предмет», «Оценка», «Дата»:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– создать представление Students_uspev:CREATE VIEW Students_uspev AS

– указать, что данные должны извлекаться без дубликатов:SELECT DISTINCT

– показать, что извлекается значение «Фамилия» (псевдоним результата XML-запроса – stud):

stud.Фамилия,– показать, что извлекается значение «Предмет» (псевдоним

результата XML-запроса – subj):subj.Предмет,

– показать, что извлекаются значения «Оценка» и «Дата» (псевдоним результата XML-запроса – res):

res.Оценка, res.Дата– задать источники результата: таблицу Student_progress

FROM Student_progress source,

Page 77: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

результат запроса к XML-данным из поля Student, извлекающий в реляционный столбец «Фамилия» с типом данных varchar и размерностью 20:

XMLTABLE('$stud/Student' passing source.student AS "stud"

COLUMNS Фамилия varchar(30) path 'FIO/LName') AS stud,

результат запроса к XML-данным из поля Subject, извлекающий в реляционный столбец «Предмет» с типом данных varchar и размерностью 30:

XMLTABLE('$subj/Subject' PASSING source.subject AS "subj"COLUMNS Предмет varchar(30) PATH 'name') AS subj,

и результат запроса к XML-данным из поля Result, извлекающий в реляционные столбцы «Дата» и «Оценка» с типом данных varchar и размерностью 10:

XMLTABLE('$res/Results' PASSING source.result AS "res"COLUMNS Оценка varchar(10) PATH 'Exam[position()=last()]/Grade',Дата varchar(10) PATH 'Exam[position()=last()]/Date') AS

res;– закрыть соединение с базой данных:

CONNECT RESET;– нажать на кнопку «Выполнить» и просмотреть результаты

запроса.

Центр управления – DB2COPY1 | Окно объектов | Все базы данных | Labs | Производные таблицы | найти Students_uspev | двойной клик мыши ► результат на экране

15. Вывести значения поля ID таблицы Student_progress:– установить соединение с базой данных Labs:

CONNECT TO Labs;– написать запрос перевода реляционных данных в формат

XML:SELECT XMLELEMENT(NAME " Student_progress ", XMLELEMENT(NAME "ID", ID))FROM Student_progress;

Page 78: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

– закрыть соединение с базой данных:CONNECT RESET;

– выполнить запрос (рис. 1.14).

Рисунок 1.14 – Преобразование реляционных данных в XML

16. Вывести значения поля ID таблицы Student_progress только для тех строк, в которых значение этого поля равно 10:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– написать запрос перевода реляционных данных в формат XML:

SELECT XMLELEMENT(NAME " Student_progress ", XMLELEMENT(NAME "ID", ID))FROM Student_progress WHERE id = 2;

– закрыть соединение с базой данных:CONNECT RESET;

– выполнить запрос ► результат на экране (рис. 1.15)

Page 79: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 1.15 – Преобразование реляционных данных в XML (при условии, что значение ID = 2)

17. Вывести все содержимое таблицы Student_progress в формате XML:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– написать запрос перевода реляционных данных в формат XML:

SELECT XMLELEMENT(NAME " Student_progress ", XMLELEMENT(NAME "ID", ID)), student, subject, resultFROM Student_progress;

– закрыть соединение с базой данных:CONNECT RESET;

– выполнить запрос ► результат на экране (рис. 1.16).

Рисунок 1.16 – Результат выполнения запроса в формате XML

Page 80: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

5. Задание на лабораторную работу1. Выполнить все примеры из методики выполнения работы2. Написать запросы, решающие следующие задачи:– извлечь все данные из таблицы Sales базы данных;– извлечь данные из таблицы Sales только по одной

определенной строке (задать условие отбора);– извлечь из таблицы Sales данные из группы строк,

удовлетворяющих заданным условиям (ввести группу условий или одно условие, возвращающее более одной строки);

– извлечь из таблицы Sales данные о продажах оборудования заданного типа (самостоятельно задать условие отбора оборудования). Результат должен представлять собой иерархию XML-элементов;

– извлечь из таблицы Sales данные о продажах оборудования заданного типа (самостоятельно задать условие отбора оборудования) заданному покупателю (самостоятельно задать условие выбора клиента). Результат должен представлять собой иерархию XML-элементов;

– извлечь из таблицы Sales данные о продажах оборудования заданному клиенту (самостоятельно задать условие выбора клиента);

– извлечь из таблицы Sales названия всего оборудования;– извлечь из таблицы Sales данные о последней занесенной в

базу данных дате продажи заданного оборудования (последняя итерация продажи в иерархии XML);

– извлечь из таблицы Sales названия всего оборудования в виде реляционной таблицы с единственным полем Equipment;

– извлечь из таблицы Sales полную информацию об оборудовании в виде реляционной таблицы с полями, соответствующими имеющимся XML-элементам;

– аналогичным образом построить реляционное представление на основе выходных данных функции XMLTable;

– вывести все содержимое таблицы Sales в формате XML.3. Самостоятельно придумать запросы на извлечение XML-

данных: 2 запроса – на простое извлечение данных; 2 запроса – на получение вычисляемых значений (например, расчет общей стоимости покупки и т. д.).

4. Протестировать все запросы в среде DB2.

Page 81: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

6. Контрольные вопросы1. Что такое SQL? Для каких данных он применяется?2. Для чего предназначен XPath?3. Что такое XPath-выражение? Как в нем определено понятие

шага?4. Чем язык SQL/XML отличается от SQL и XPath?5. Перечислите основные SQL/XML-функции,

предназначенные для работы с XML-данными в DB2.

7. Содержание и оформление отчета Отчет должен содержать:– титульный лист, название и цель работы;– SQL-код программирования запросов, указанных в задании;– SQL-код программирования запросов, придуманных

самостоятельно, с текстовым описанием цели выполнения запроса (что нужно получить);

– скриншоты редактора команд DB2, демонстрирующие результаты выполнения каждого из запросов;

– выводы по работе.

Лабораторная работа № 4

Page 82: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

ЗАПРОСЫ К XML-ДАННЫМ В DB2. ИСПОЛЬЗОВАНИЕ ЯЗЫКА XQUERY

1. Цель работыЦелью работы является изучение принципов

программирования запросов на языке XQuery для доступа к XML-данным, хранящимся в базах данных IBM DB2.

2. Задачи Задачами лабораторной работы являются овладение навыками

программирования запросов XQuery, использования возможностей СУБД DB2 для создания и выполнения таких запросов, а также интерпретации полученного результата.

3. Теоретическая частьXQuery – язык запросов, предназначенный для обработки

данных в формате XML.Спецификация XQuery, опубликованная Консорциумом

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

Да и сама природа XML-документов создает трудности для SQL. XML-документы являются данными иерархическими, со структурой дерева. Они самоописывающиеся, так как состоят из контента и разметки (тегов, идентифицирующие контент). В базах данных SQL, таких как DB2, отдельные строки не содержат названий столбцов или типов, так как вся эта информация есть в системном каталоге. Модель XML иная. Как и в SQL, схемы, внешние по отношению к описываемому контенту, определяют имена и типы информации. Однако возможно обрабатывать XML-документы и без использования схем. XML-документы содержат

Page 83: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

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

XQuery не соответствует некоторым соглашениям SQL. Например, SQL не имеет концепции узлов и не обеспечивает навигации и сохранения информации о положении узлов в дереве. XQuery 1.0 не поддерживает обновление данных, хотя такая поддержка запланирована.

Назначение XQuery. В начальном виде XQuery устремлен только на извлечение информации и не включает средств для модификации существующих документов XML. XQuery является языком, который может выполнять запросы к структурированным или полуструктурированным XML-данным. 

Язык XQuery основан на существующем языке запросов XPath с дополнительной улучшенной поддержкой итераций, результатов сортировки и возможности конструировать необходимые структуры XML.

Язык XQuery работает с моделью данных XQuery. Это абстракция XML-документов и результатов XQuery, которые могут быть типизированными и нетипизированными. Сведения о типе основываются на типах, предоставляемых языком XML-схем W3C. Если нет доступных сведений по типам, XQuery считает данные нетипизированными. Это похоже на то, как XPath версии 1.0 обрабатывает XML.

XQuery и SQL. Язык XQuery отличается от SQL в ряде ключевых пунктов, главным образом, из-за того, что эти языки предназначаются для работы с разными моделями данных, имеющими разные характеристики. XML-документы содержат иерархии и обладают внутренней структурой. Табличные структуры данных, с которыми работают СУБД, основанные на SQL, являются плоскими и основанными на наборах. По сути, строки являются неупорядоченными.

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

Page 84: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

такой возможности не дает. XQuery поддерживает как типизованные, так и нетипизованные данные, а данные SQL всегда имеют определенный тип. В XQuery нет пустых значений (NULL), поскольку в XML-документах отсутствующие или неизвестные данные пропускаются.

XQuery возвращает последовательности XML-данных; SQL возвращает результирующие наборы данных, включающие различные типы данных SQL.

XQuery и DB2. В DB2 XQuery рассматривается как основной язык, позволяющий пользователям писать выражения XQuery напрямую, а не встраивать их в инструкции SQL. Более того, система обработки запросов DB2 обрабатывает запросы XQuery в их исходном формате, то есть, не переводя их внутренне в SQL.

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

FLWOR – основная форма запросов XQuery. FLWOR-выражение во многом подобно выражению SELECT-FROM-WHERE в SQL: оно используется для перебора списка элементов и, при необходимости, для извлечения какого-нибудь значения, вычисляемого на основе каждого элемента.

Как и выражение SELECT-FROM-WHERE в SQL, FLWOR-выражение в XQuery может содержать несколько предложений, начинающихся с определенных ключевых слов.

Для обозначения начала предложения в FLWOR-выражении используются следующие ключевые слова:

– for: Перебирает последовательность входных значений, привязывая переменную к каждому входному элементу по очереди.

– let: Объявляет переменную и присваивает ей значение, которое может представлять собой список, содержащий несколько элементов.

– where: Указывает критерий для фильтрации результатов запроса.

– order by: Указывает порядок сортировки результата.– return: Определяет возвращаемый результат.

Page 85: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Чтобы напрямую выполнять запросы XQuery в DB2 (а не встраивать их в SQL-инструкцию), вы должны поставить перед запросом ключевое слово xquery. Это заставляет DB2 вызывать обработчик XQuery для обработки запроса.

При использовании в качестве основного языка, XQuery должен иметь источник входных данных. Один из способов, при помощи которого XQuery может получать входные данные, – это вызов функции с именем db2-fn:xmlcolumn с параметром, в котором указывается имя таблицы и имя XML-столбца в таблице DB2. Функция db2-fn:xmlcolumn возвращает последовательность (XML-документов), хранящуюся в данном столбце.

Преобразование XML-данных. Мощной возможностью XQuery является способность преобразовывать выходные XML-данные из одной формы XML в другую. Например, можно использовать XQuery для получения всех или части XML-документов и преобразовывать выходные данные в HTML для удобства отображения в Web-браузере.

Фигурные скобки заставляют DB2 вычислять и обрабатывать заключенное в них выражение, а не рассматривать его как строку-литерал.

4. Методика выполнения работы1. Извлечь из таблицы STUDENT_PROGRESS данные о

студентах в XML-формате (содержимое столбца Student):– установить соединение с базой данных Labs:

CONNECT TO Labs;– указать, что запрос относится к типу XQuery:

xquery db2-fn:– запросить извлечение XML-данных из столбца STUDENT

таблицы STUDENT_PROGRESS:xmlcolumn(STUDENT_PROGRESS.STUDENT);

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» ► результаты запроса на экране (рис. 2.1);

Page 86: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 2.1 – Результат выполнения запроса к таблице STUDENT_PROGRESS в формате XML

– Аналогичным образом извлечь данные из XML-столбцов SUBJECT и RESULT.

2. Извлечь из таблицы STUDENT_PROGRESS фамилии всех студентов (источник – элемент LName) в XML-формате:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– указать, что запрос относится к типу XQuery:xquery

– построить цикл по элементам LName из столбца STUDENT таблицы STUDENT_PROGRESS. В качестве адреса элемента использовать XPath-выражение:

for $y in db2-fn:xmlcolumn('STUDENT_PROGRESS.STUDENT')/Student/FIO/LName

– вернуть результат запроса:return $y;

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» ► результаты запроса на экране (рис. 2.2).

Page 87: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 2.2 – Результат выполнения запроса к таблице STUDENT_PROGRESS (фамилии студентов как элементы LName)

3. Извлечь из таблицы STUDENT_PROGRESS фамилии всех студентов (источник – элемент LName) в форме текстового списка:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– указать, что запрос относится к типу XQuery:xquery

– построить цикл по текстовым значениям элементов LName из столбца STUDENT таблицы STUDENT_PROGRESS. В качестве адреса элемента использовать XPath-выражение:

for $y in db2-fn:xmlcolumn('STUDENT_PROGRESS.STUDENT')/Student/FIO/LName/text()

– вернуть результат запросаreturn $y;

– закрыть соединение с базой данныхCONNECT RESET;

– нажать на кнопку «Выполнить» ► результаты запроса на экране (рис. 2.3).

Page 88: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 2.3 – Результат выполнения запроса к таблице STUDENT_PROGRESS (текстовые значения элементов LName)

4. Извлечь из таблицы Student_progress сложный XML-тип, состоящий из иерархии XML-элементов FIO → LName → FName → MName:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– указать, что запрос относится к типу XQuery:xquery

– построить цикл по родительскому элементу FIO из столбца STUDENT таблицы STUDENT_PROGRESS. В качестве адреса элемента использовать XPath-выражение:

for $y in db2-fn:xmlcolumn('STUDENT_PROGRESS.STUDENT')/Student/FIO

– вернуть результат запроса:return $y;

– закрыть соединение с базой данных:CONNECT RESET;

– нажать на кнопку «Выполнить» ► результаты запроса на экране (рис. 2.4).

Page 89: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 2.4 – Результат выполнения запроса (иерархия элементов FIO – LName – FName – MName)

5. Извлечь фамилии студентов, обучающихся на специальности ПИЭ:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– указать, что запрос относится к типу XQuery:xquery

– построить цикл по элементам Student из одноименного столбца таблицы STUDENT_PROGRESS:

for $y in db2-fn:xmlcolumn('STUDENT_PROGRESS.STUDENT')/Student

– указать условие фильтрации: значение элемента spec должно быть равно 'ПИЭ':

where $y/Group/spec='ПИЭ'– вернуть в качестве результата текстовые значения XML-

элементов LName:return $y/FIO/LName/text();

– закрыть соединение с базой данных;CONNECT RESET;

– нажать на кнопку «Выполнить» ► результаты запроса на экране (рис. 2.5).

Page 90: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

Рисунок 2.5 – Результат выполнения запроса к таблице (значения фамилий студентов со специальности ПИЭ)

6. Извлечь фамилии студентов, обучающихся на специальности ПИЭ в группе с номером 10 (и использованием конструкции where):

– установить соединение с базой данных Labs:CONNECT TO Labs;

– указать, что запрос относится к типу XQuery:xquery

– построить цикл по элементам Student из одноименного столбца таблицы STUDENT_PROGRESS:

for $y in db2-fn:xmlcolumn('STUDENT_PROGRESS.STUDENT')/Student

– указать условие фильтрации: значение элемента spec должно быть равно 'ПИЭ':

where $y/Group/spec='ПИЭ'и значение элемента num должно быть равно '10':

and $y/Group/num='10'– вернуть в качестве результата текстовые значения XML-

элементов LName:return $y/FIO/LName/text();

– закрыть соединение с базой данных:CONNECT RESET;

Page 91: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

– нажать на кнопку «Выполнить» ► результаты запроса на экране (рис. 2.6).

Рисунок 2.6 – Результат выполнения запроса к таблице (значения фамилий студентов со специальности ПИЭ и группы 10 (WHERE))

7. Извлечь фамилии студентов, обучающихся на специальности ПИЭ в группе с номером 10 (и использованием конструкции выражений XPath):

– установить соединение с базой данных Labs:CONNECT TO Labs;

– указать, что запрос относится к типу XQuery:xquery

– построить цикл по элементам Student из одноименного столбца таблицы STUDENT_PROGRESS с предикатом, проверяющим, что значения элементов spec и num равны 'ПИЭ' и '10' соответственно:

for $y in db2-fn:xmlcolumn('STUDENT_PROGRESS.STUDENT')/Student[Group[spec='ПИЭ'][num='10']]

– вернуть в качестве результата текстовые значения XML-элементов LName:

return $y/FIO/LName/text();– закрыть соединение с базой данных:

CONNECT RESET;

Page 92: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

– нажать на кнопку «Выполнить» ► результаты запроса на экране (рис. 2.7)

Рисунок 2.7 – Результат выполнения запроса к таблице (значения фамилий студентов со специальности ПИЭ и группы 10 (XPath))

8. Написать запрос к столбцу STUDENT, выводящий список студентов (фамилии и имена) в формате HTML в виде маркированного списка:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– указать, что запрос относится к типу XQuery:xquery

– ввести открывающий тег списка ul:<ul> {

– построить цикл по элементам FIO из столбца Student таблицы STUDENT_PROGRESS:

for $y in db2-fn:xmlcolumn('STUDENT_PROGRESS.STUDENT')/Student/FIO

– вернуть в качестве результата конкатенацию текстовых значений XML-элементов LName и FName. Результат представить между открывающим и закрывающим тегами элемента li:

return <li>{concat($y/LName/text(),' ',$y/FName/text())}</li>– закрыть элемент ul:

Page 93: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

} </ul>;– закрыть соединение с базой данных:

CONNECT RESET;– нажать на кнопку «Выполнить» ► результаты запроса на

экране (рис. 2.8).

Рисунок 2.8 – Формирование HTML-разметки маркированного списка

9. Извлечь из базы данных информацию о студентах и представить ее в виде содержимого XML-элемента «Student» с вложенным элементом «FirstYear» для первокурсников и «NoFirstYear» – для всех остальных:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– указать, что запрос относится к типу XQuery:xquery

– построить цикл по элементам Student из одноименного столбца таблицы STUDENT_PROGRESS:

for $y in db2-fn:xmlcolumn('STUDENT_PROGRESS.STUDENT')/Student

– в результате сгенерировать открывающий и закрывающий теги элемента Student, между которыми разместить элемент <FirstYear>, если значение XML-элемента year равно 1 и <NoFirstYear> в противном случае:

return (<Student> { if ($y/Group/year='1') then <FirstYear/>

Page 94: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

else (<NoFirstYear/>) } </Student>);– закрыть соединение с базой данных:

CONNECT RESET;– нажать на кнопку «Выполнить» ► результаты запроса на

экране (рис. 2.9).

Рисунок 2.9 – Формирование вложенных XML-элементов

10. Вывести перечень студенческих групп из столбца STUDENT таблицы STUDENT_PROGRESS:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– указать, что запрос относится к типу XQuery:xquery

– построить цикл по XML-элементам Groupfor $p in db2-fn:xmlcolumn('STUDENT_PROGRESS.STUDENT')/Student/Group

– записать в переменную spec значение одноименного XML-атрибута:

let $spec := $p/specаналогичным образом записать в переменные gr и kurs значения XML-элементов num и year:

let $gr := $p/numlet $kurs := $p/year

Page 95: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

– вернуть в результате название группы как конкатенацию значений из заданных переменных:

return concat($spec,'-',$gr,$kurs);– закрыть соединение с базой данных:

CONNECT RESET;– нажать на кнопку «Выполнить» ► результаты запроса на

экране (рис. 2.10).

Рисунок 2.10 – Извлечение списка студенческих групп

11. Извлечь из таблицы STUDENT_PROGRESS данные о студенте, который записан в строке со значением поля ID равно 1. Результат представить в виде: «ФИО: фамилия имя отчество Гр. специальность-курс+группа»:

– установить соединение с базой данных Labs:CONNECT TO Labs;

– указать, что запрос относится к типу XQuery:xquery

– построить цикл по XML-данным (использовать y в качестве переменной цикла):

for $y in– с помощью SQL-запроса извлечь из базы данных

STUDENT_PROGRESS содержимое столбца Student из строки, в которой значение поля ID равно 1. На основе полученного XML-столбца извлечь корневой элемент Student:

db2-fn:sqlquery('select student from student_progress where id = 1')/Student

Page 96: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

– в качестве результата вернуть данные студента через конкатенацию значений соответствующих XML-элементов (рис. 2.11).:

return concat('ФИО: ',$y/FIO/LName, ' ', $y/FIO/FName, ' ', $y/FIO/MName,' Гр. ', $y/Group/spec,'-', $y/Group/year,$y/Group/num);

Рисунок 2.11 – Формирование расширенного результата по студентам

5. Задание на лабораторную работу1. Выполнить все примеры из методики выполнения работы2. Написать запросы, решающие следующие задачи:– извлечь из таблицы Sales данные об оборудовании в XML-

формате;– извлечь из таблицы Sales названия всего оборудования (в

виде XML-элементов); – извлечь из таблицы Sales названия всего оборудования (в

форме текстового списка); – извлечь из таблицы Sales сложный XML-тип, состоящий из

иерархии XML-элементов Equipment → Parameter → Name;– извлечь наименования оборудования, поставляемого

заданным поставщиком (поставщика задать самостоятельно);– извлечь наименования оборудования с заданными

параметрами поставляемого заданным производителем (параметры

Page 97: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

и поставщика задать самостоятельно с помощью конструкции where);

– извлечь наименования оборудования с заданными параметрами поставляемого заданным поставщиком (параметры и поставщика задать самостоятельно с помощью конструкции XPath);

– написать запрос к столбцу EQUIPMENT, выводящий список оборудования (код и название) в формате HTML в виде маркированного списка;

– вывести перечень производителей оборудования из столбца EQUIPMENT таблицы Sales;

3. Самостоятельно придумать запросы на извлечение XML-данных: 2 запроса – на простое извлечение данных; 2 запроса – на получение вычисляемых значений (например, расчет общей стоимости покупки и т. д.).

4. Протестировать все запросы в среде DB2.

6. Контрольные вопросы1. Что такое XQuery? В чем его отличие от SQL, SQL/XML и

XPath?2. Что представляет собой сочетание FLWOR?3. Как представлен XPath в выражениях XQuery?4. Какой результат возвращают запросы XQuery?5. Как присваиваются значения переменным в запросах

XQuery?6. Как используются условные конструкции в запросах

XQuery?7. Что означает ключевое слово «for»?

7. Содержание и оформление отчета Отчет должен содержать:– титульный лист, название и цель работы;– XQuery-код программирования запросов, указанных в

задании;– XQuery-код программирования запросов, придуманных

самостоятельно, с текстовым описанием цели выполнения запроса (что нужно получить);

– скриншоты редактора команд DB2, демонстрирующие результаты выполнения каждого из запросов;

– выводы по работе.

Page 98: asu.ugatu.ac.ruasu.ugatu.ac.ru/library/590ae3a5c2a3e/dfe3a1dc842dace…  · Web viewМинистерство образования и науки РФ. Федеральное государственное

СПИСОК ЛИТЕРАТУРЫ9. Документация DB2 Express-C [официальный сайт IBM].

URL:http://publib.boulder.ibm.com/infocenter/db2luw/v9r710. Книга серии IBM RedBooks о DB2 и XML [официальный сайт

IBM]. URL: http://www.ibm.com/developerworks/ru/ library/db2xml-intro

11. Миронов В. В., Юсупова Н. И. XML-технологии в базах данных: Учеб. пособие. Уфа: УГАТУ, 2004. 182 с.

12. Спецификация XML на W3C. URL: http://www.w3.org/TR/2000/REC-xml-20001006

13. Филиппов В.А., Щукин Б.А., Богатырева Л.В. Многозначные СУБД и XML базы данных. – М.: Ленанд, 2008. – 144 с.

14. Хантер Д. XML. Базовый курс. – 4-е изд. – М.: Диалектика. – 1344 с.

15. XQuery 1.0: An XML Query Language. URL: http://www.w3c.org/ TR/xquery.

16. Академический каталог учебных курсов IBM. URL:http :// www . ibm . com / ru / software / info / students / courseware /

17. Страница Академической инициативы IBM в УГАТУ на портале кафедры АСУ. URL: http://10.61.2.63/asu/p_ibm.php