- •Глава 1. Базы данных и системы управления 9
- •Глава 2. Организация доступа к данным 45
- •Глава 3. Реляционная алгебра 60
- •Глава 4. Основы sql 67
- •Глава 5. Проектирование реляционных баз данных 89
- •Глава 6. Взаимодействие sql с приложениями 116
- •Глава 7. Некоторые проблемы администрирования баз данных 154
- •Базы данных и системы управления
- •Файловые системы
- •Концепция баз данных
- •Основные функции субд
- •Непосредственное управление данными во внешней памяти
- •Управление буферами оперативной памяти
- •Управление транзакциями
- •Журнализация
- •Поддержка языков баз данных
- •Трехуровневая модель архитектуры систем баз данных
- •Модели данных
- •Характеристика связей
- •Компьютерно-ориентированные модели данных
- •Реляционный подход
- •Ключи и целостность реляционных данных
- •Моделирование концептуальной схемы базы данных
- •Организация доступа к данным
- •Страницы и файлы
- •Индексирование
- •Структуры типа б-дерева
- •Хеширование
- •Методы сжатия
- •Метод дифференциального сжатия
- •Иерархические методы сжатия
- •Кодирование по методу Хаффмена
- •Реляционная алгебра
- •Традиционные реляционные операции
- •Специальные реляционные операции
- •Дополнительные реляционные операции
- •Примеры использования реляционной алгебры для выражения словесных запросов в виде формул
- •Основы sql
- •Типы данных
- •Строковые типы данных
- •Битовые типы данных
- •Точные числовые типы данных
- •Вещественные числовые типы данных
- •Календарные типы данных
- •Значения null
- •Создание и обслуживание таблиц
- •Запрос на выборку
- •Статистические функции
- •Создание соединений
- •Вложенные запросы
- •Запрос на объединение
- •Запросы, выполняющие реляционные операции вычитания, пересечения и деления
- •Запросы на изменение
- •Перекрестные запросы
- •Проектирование реляционных баз данных
- •Нормализация отношений
- •Функциональные зависимости
- •Н ормальные формы, обоснованные функциональными зависимостями
- •Нормальная форма Бойса–Кодда
- •Нормальные формы, обоснованные более сложными зависимостями
- •Процедура нормализации и проектирования
- •Пример проектирования базы данных
- •Назначение и предметная область
- •Проектирование базы данных
- •Взаимодействие sql с приложениями
- •Встраивание sql-операторов в программный код
- •Тип курсора
- •Триггеры
- •Хранимые процедуры
- •Стандартные интерфейсы для доступа к данным
- •Информационное окружение веб-сервера
- •Стандарт odbc
- •Уровни соответствия
- •Уровень соответствия odbc
- •Задание имени источника данных odbc
- •Расширяемый язык разметки xml
- •Xml как язык разметки
- •Материализация хмl-документов с помощью xslt
- •Создание хмl-документов на основе информации из базы данных
- •Некоторые проблемы администрирования баз данных
- •Оптимизация запросов
- •Параллельная обработка данных
- •Потеря обновления
- •Зависимость от незафиксированных обновлений
- •Несогласованный анализ
- •Блокировки транзакций
- •Согласованность и уровень изоляции транзакций
- •Распределенные системы баз данных
- •Фрагментация
- •Репликация
- •Распространение обновлений
- •Управление каталогом
- •Распределенная обработка запросов
- •Типы распределенных систем баз данных
- •Нераспределенные мультибазовые субд
- •Клиент-серверные системы
- •Системы с общими ресурсами
- •Технические аспекты администрирования базы данных
- •Восстановление базы данных
- •Безопасность баз данных
- •Шифрование данных
- •Производительность баз данных
- •Администрирование данных
- •Литература
Создание хмl-документов на основе информации из базы данных
Во многих СУБД имеются средства для генерации XML-документов на основе содержимого базы данных.
Средства работы с XML в СУБД быстро эволюционируют. В случае SQL Server в версию 7.0 было добавлено выражение FOR XML ТО SQL SELECT. В 2002 году возможности SQL Server были расширены за счет SQLXML – библиотеки классов, которую можно загрузить с сайта http://msdn.microsoft.com. Каждая новая версия СУБД предлагает существенные новшества в технологиях XML.
Рассмотрим следующую команду SQL (в таблице ARTIST содержатся атрибуты (Name, Nationality, BirthDate, DeceasedDate):
SELECT * FROM Artist FOR XML RAW;
Выражение FOR XML RAW предписывает SQL Server создать XML-документ, в котором непустые столбцы результата запроса будут играть роль атрибутов. В листинге 4 приведен пример результата выполнения такого выражения. Как и ожидалось, каждый столбец, значение которого задано, становится атрибутом элемента под названием ARTIST.
Листинг 4. Пример использования выражения FOR XML RAW
<MyData> <ARTIST ArtistID="3" Name="Miro" |
Nationality="Spanish" BirthDate="1893" DeceasedDate="1983"/> |
<ARTIST ArtistID="4" Name="Kandinsky" |
Nationality="Russian" BirthDate="1866" DeceasedDate="1944"/> |
<ARTIST ArtistID="5" Name="Frings" |
Nationality="US" BirthDate="1700" DeceasedDate="1800"/> |
<ARTIST ArtistlD="6" Name="Klee" |
Nationality="German" BirthDate="1879" DeceasedDate="1940"/> " |
<ARTIST ArtistID-"8" Name-"Moos" |
Nationality-"US"/> |
<ARTIST ArtistID-"14" Name="Tobey" |
Nationality="US"/> |
<ARTIST ArtistID-"15" Name-"Matisse" |
Nationality="French"/> |
<ARTIST ArtistID-"16" Name-"Chagall" |
Nationality-"French" BirthDate="1887" DeceasedDate="1985"/> |
</MyData> |
|
Можно заставить SQL Server помещать значения столбцов не в атрибуты, а в элементы XМL-документа, как это сделано в листинге 5. Подобный документ можно создать при помощи следующей команды:
SELECT * FROM Artist FOR XML AUTO, ELEMENTS;
Листинг 5. Пример использования выражения FOR XML AUTO, ELEMENTS
<MyData>
<ARTIST>
<ArtistID>3</ArtistID> <Name>Miro</Name>
<Nationality>Spanish </Nationality>
<BirthDate>l870/BirthDate> <DeceasedDate>l950</DeceasedDate>
</ARTIST>
<ARTIST>
<ArtistID>4</ArtistID>
<Name>Kandinsky</Name>
<Nationality> Russian</Nationality>
<BirthDate>l854</BirthDate>
<DeceasedDate>1900</DeceasedDate>
</ARTIST> …
<ARTIST>
<ArtistID>15</ArtistID>
<Name>Matisse</Name>
<Nationality>French</Nationality>
</ARTIST>
<ARTIST>
<ArtistID>16</ArtistID>
<Name>Chagall</Name>
<Nationality>French</ARTIST>
</MyData>
Используя выражение FOR XML EXPLICIT, разработчик может указать SQL Server, какие столбцы результата должны играть роль элементов, а какие – атрибутов. Можно, например, сделать так, чтобы значения всех столбцов, кроме суррогатного ключа ArtistID, помещались в элементы XML-документа, а значения суррогатного ключа – в атрибуты. Значения суррогатного ключа не имеют смысла для пользователей, поэтому они больше похожи на метаданные, чем на данные.
Возможности команды SELECT...FOR XML не ограничиваются однотабличными запросами. Рассмотрим следующий запрос, соединяющий таблицы CUSTOMER и ARTIST:
SELECT CUSTOMER.Name, ARTIST.Name FROM CUSTOMER, Покупки, ARTIST
WHERE CUSTOMER.CustomerID = Покупки.CustomerID
AND Покупки.ArtistID = ARTIST.ArtistID
ORDER BY CUSTOMER.Name
FOR XML AUTO, ELEMENTS;
Результатом запроса будет XML-документ, приведенный в листинге 6.
Листинг 6. Результат запроса FOR XML AUTO, ELEMENTS для таблиц CUSTOMER и ARTIST
<MyData xmlns:xsi= ".http://www.w3.org/2000/10/XMLSchema-instance" xsi:noNamespaceSchemaLocation="D:\Лекции\XML\Покупатель-Художник.xsd">
<CUST0MER>
<Name>Chris Wilkens</Name>
<ARTIST>
<Name>Frings </Name>
</ARTIST>
<ARTIST>
<Tobey</Name>
</ARTIST>
</CUST0MER>
…
<CUST0MER>
<Name>Michael Bench</Name>
<ARTIST>
<Name>Moos</Name>
</ARTIST>
<ARTIST>
<Name>Frings </Name>
</ARTIST>
<ARTIST>
<Name>Tobey</Name>
</ARTIST>
</CUST0MER>
<CUST0MER>
<Name>Selma Warning</Nafne>
<ARTIST>
<Name>Miro</Name>
</ARTIST>
<ARTIST>
<Name>Chagall</Name>
</ARTIST>
</CUST0MER>
</MyData>