Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпора.doc
Скачиваний:
20
Добавлен:
14.05.2015
Размер:
646.14 Кб
Скачать

Комбинированная модель

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

Значения, которые следует хранить в реляционных столбцах, зависят от рабочей нагрузки. Например, если извлекаются все XML-значения при использовании выражения пути /Customer/@CustId, то, выполнив продвижение значения атрибута CustId до реляционного столбца и осуществив его индексацию, можно ускорить обработку запросов. С другой стороны, если XML-данные чрезмерно распределить по реляционным столбцам без дублирования, составление данных в единое целое может оказаться слишком дорогим.

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

Примеры формирования выборок данных с использованием XML-элементов с помощью SQL-запросов.

FOR XML

Этот оператор предназначен для представления результирующего набора строк в виде XML-документа. Рассмотрим его синтаксис:

Назначение ключевого слова BROWSE не относится к теме нашей статьи.

  • [ FOR { BROWSE | XML { RAW | AUTO | EXPLICIT }

    [ , XMLDATA ]

    [ , ELEMENTS ]

    [ , BINARY BASE64 ]

    }

    ]

    FOR XML RAW – Каждая строка представляется в виде элемента <row/>. Название поля формирует название атрибута, а значение поля – значение атрибута.

Пример

select au_fname, au_lname, address

from authors

where au_fname like 'M%'

for xml raw


  • Этот запрос возвращает имена всех авторов, начинающиеся с буквы M. Вот результаты в формате XML:

<row au_fname="Marjorie" au_lname="Green" address="309 63rd St. #411" />

<row au_fname="Michael" au_lname="O'Leary" address="22 Cleveland Av. #14" />

<row au_fname="Meander" au_lname="Smith" address="10 Mississippi Dr." />

<row au_fname="Morningstar" au_lname="Greene" address="22 Graybar House Rd." />

<row au_fname="Michel" au_lname="DeFrance" address="3 Balding Pl." />

Язык запросов на основе Xquery.

XQuery — язык запросов, разработанный для обработки данных в формате XML. XQuery использует XML как свою модель данных. XML-документ может содержать ОЧЕНЬ много данных, поэтому нужно уметь как-то искать те или иные данные в нем.

С этой целью консорциумом W3C был создан язык запросов XQuery.

Составной частью XQuery является XPath - язык адресации в XML-документе.

Некоторые основные правила синтаксиса:

  • XQuery чувствителен к регистру

  • XQuery элементы, атрибуты и переменные должны быть действительными именами XML

  • Значение Строка должно заключаться в одинарные или двойные кавычки

  • Переменная XQuery определяется с $, за которым следует имя

  • Комментарии оформляются в (: а :)