- •Выборка всех листьев в дереве, при моделировании иерархической структуры методом вспомогательной таблицы.
- •Проблемы, возникающие при работе со списками. Способы их преодоления.
- •Понятие кольца. Типы организации колец. Особенности «коралловой» организации кольца.
- •Линейные структуры данных. Стэк и дэк.
- •5) Явное соединение отношений в sql. Левое соединение.
- •6) Явное и неявное соединение таблиц в языке sql. Правое и левое соединение.
- •8) 1,2,3 Нф. «Восходящая и нисходящая» нормализация.
- •9) Моделирование иерархий средствами реляционной субд. Способ полного обхода дерева. Повышение производительности за счет использования индексов.
- •10) Транзакции и проблемы, связанные с ними.
- •11) Рекурсивный способ моделирования иерархий средствами реляционной субд. Проблема поиска листьев.
- •12) Нормализация, основное назначение. Что оптимизирует нормализация?
- •2) Как связаны различные типы зависимостей, процесс нормализации и отношения типа «сущность - связь»?
- •3) Напишите предложение select для отыскания всех общих предков для двух наперёд заданных узлов иерархии в случае моделирования иерархии методом вспомогательной таблицы.
- •2) Приведите пример структуры данных, все отношения которой находятся во всех возможных нормальных формах.
- •3) Напишите предложение select для отыскания всех узлов иерархии не имеющих потомков для случая моделирования иерархии рекурсивным методом.
- •2) Напишите предложение select для отыскания всех общих предков для двух наперёд заданных узлов иерархии в случае моделирования иерархии методом правого и левого коэффициентов.
- •3) Коллективный доступ к данным. Проблемы коллективного доступа. Понятие блокирования или захвата.
- •2) Напишите предложение select для отыскания всех узлов иерархии не имеющих потомков для случая моделирования иерархии методом правого и левого коэффициентов.
- •3) Проблема «утраченного обновления». Способы разрешения.
- •2) Для каких целей могут использоваться данные в формате xml?
- •3) Охарактеризуйте известные вам уровни изоляции транзакций.
- •2) Как соотносятся между собой понятия «сущность – связь» и зависимость (функциональная зависимость, многозначная зависимость и т.П.)?
- •3) При помощи какого предложения select можно осуществить выборку всех потомков наперед заданного узла иерархии при моделировании иерархии способом правого и левого коэффициентов?
- •2) Журнализация изменений бд. Индивидуальные откаты транзакций. Восстановление после «мягкого» сбоя («тёплый пуск»). Восстановление после «жесткого» сбоя («холодный пуск»).
- •3) Перечислите и раскройте понятия зависимостей используемых при определении нормальных форм.
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