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

2) Как связаны различные типы зависимостей, процесс нормализации и отношения типа «сущность - связь»?

3) Напишите предложение select для отыскания всех общих предков для двух наперёд заданных узлов иерархии в случае моделирования иерархии методом вспомогательной таблицы.

Теперь рассмотрим задачу отыскания ближайшего общего предка для двух заданных узлов. Пусть выбраны узлы I и K. Как видно на рис. 8, их бли-жайшим общим предком является узел B. Получим полный список общих предков для узлов I и K (рис. 79):

SELECT T_Base.Node, T_Helper.Level, T_Helper.ParentID

FROM T_Base, T_Helper

WHERE T_Base.ID=T_Helper.ParentID and

T_Helper.UID=(SELECT ID FROM T_Base WHERE Node='K') AND T_Helper.ParentID IN (

SELECT T_Helper.ParentID

FROM T_Base, T_Helper

WHERE T_Base.ID=T_Helper.ParentID and

T_Helper.UID=(

SELECT ID FROM T_Base WHERE Node='I'));

T_Base – базовая таблица, содержит узлы от А до Р. T_Helperвспомогательная таблица(содержит супре длинные значения, мы их еще тогда вставляли и копировали 500 тысяч раз.) Потом ее заполняем данными – столбец ParentID. А вот эти длинные строчки в столбце UID.

Билет№30.1) Как получить результат выборки данных при помощи предложения SELECT в формате XML?

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

  • “XML – это стандартный язык, который используется для структурирования и определения данных в виде, приемлемом для различных приложений” *

1)XML – для данных, более структурирован

2)Имена XML элементов и аттрибутов вполне расширяемы, что делает XML предпочтительным для данных

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

FOR XML { RAW | AUTO | EXPLICIT }

[ , XMLDATA ]

[ , ELEMENTS ]

[ , BINARY BASE64 ]

Каждая строка представляется в виде элемента <row/>.

Название поля формирует название атрибута, а значение поля – значение атрибута

FOR XML AUTO

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

FOR XML EXPLICIT

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

Первое поле всегда называется tag и представляет собой числовой идентификатор таблицы. Вы можете указывать для него любые числовые значения. В результирующем документе он не появляется, и нужен только, чтобы определить связи между таблицами для формирования иерархического документа. Второе поле называется parent и тоже может представлять любой числовой идентификатор. Он определяет родительскую таблицу для данной таблицы и в результирующем документе также не присутствует. Если родитель отсутствует, указывается 0 или NULL. Для иерархических выборок нужно использовать несколько запросов, объединенных с помощью оператора UNION ALL.

После двух обязательных полей tag и parent следуют поля, которые требуется выбрать из таблицы.

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

Вот синтаксис этого псевдонима:

ElementName ! TagNumber ! AttributeName ! Directive

  • ElementName – имя элемента, в котором будет находится элемент данного поля. Обычно здесь указывается имя таблицы.

  • TagNumber – идентификатор таблицы, в которой находится данное поле. Одному и тому же ElementName всегда должен соответствовать один TagNumber. Он также не отображается ни в каком виде в результирующем документе, однако нужен для определения иерархических связей между таблицами.

  • AttributeName – имя атрибута (или элемента), представляющего данное поле.

  • Directive – по существу, представляет собой тип узла. Может принимать следующие значения:

element

поле представляется в виде элемента

xml

То же самое, что element, но не выполняет трансформации текста. Например, символ меньше (<) не превращается в ссылку <

cdata

значение поля обрамляется соответствующим образом. Имя атрибута указывать совместно с этим ключевым словом нельзя.

hide

позволяет скрыть поле

id, idref, idrefs

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

FOR XML EXPLICIT

SELECT au_fname, au_lname, address

FROM authors

WHERE au_fname like 'M%'

FOR XML RAW;

SELECT 1 as tag, 0 as parent,

au_fname as 'authors!1!fname',

au_lname as 'authors!1!lname',

address as 'authors!1!address'

FROM authors

WHERE au_fname like 'M%'

FOR XML EXPLICIT;

Немного исправим запрос для демонстрации возможностей директивы FOR XML EXPLICIT.

select 1 as tag, 0 as parent,

au_fname as 'authors!1!fname',

au_lname as 'authors!1!lname!element',

address as 'authors!1!!cdata‘

from authors

where au_fname like 'M%'

for xml explicit