- •Глава 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-документов на основе информации из базы данных
- •Некоторые проблемы администрирования баз данных
- •Оптимизация запросов
- •Параллельная обработка данных
- •Потеря обновления
- •Зависимость от незафиксированных обновлений
- •Несогласованный анализ
- •Блокировки транзакций
- •Согласованность и уровень изоляции транзакций
- •Распределенные системы баз данных
- •Фрагментация
- •Репликация
- •Распространение обновлений
- •Управление каталогом
- •Распределенная обработка запросов
- •Типы распределенных систем баз данных
- •Нераспределенные мультибазовые субд
- •Клиент-серверные системы
- •Системы с общими ресурсами
- •Технические аспекты администрирования базы данных
- •Восстановление базы данных
- •Безопасность баз данных
- •Шифрование данных
- •Производительность баз данных
- •Администрирование данных
- •Литература
Расширяемый язык разметки xml
Технология XML возникла на стыке двух предметных областей – обработки баз данных и обработки документов. Эти технологии неразрывно связаны друг с другом. При работе с базами данных часто приходится иметь дело с документами: например, чтобы пользователь мог просмотреть представление базы данных, необходимо оформить его в виде документа. И наоборот, обработка документов нередко включает в себя работу с базами данных – например, хранение и различного рода манипуляции с данными, содержащимися в документе. Но очевидной эта связь стала только после того, как завоевал популярность Интернет. Первое время содержимое веб-сайтов было в основном статическим. По мере того как Интернет стал использоваться более широко, у организаций появилось желание сделать свои сайты более функциональными, чтобы на них можно было отображать и обновлять информацию из баз данных. В результате веб-разработчики стали всерьез интересоваться SQL, вопросами производительности, безопасности и прочими аспектами баз данных. С другой стороны, разработчики баз данных начали знакомиться с языком HTML, который используется для разметки документов, отображаемых в браузерах и является приложением более универсального языка обработки документов – SGML (Standard Generalized Markup Language – «стандартный обобщенный язык разметки»). Важность SGML трудно переоценить: этот язык столь же важен для обработки документов, сколь важна была реляционная модель для баз данных.
Результатом встречного движения двух профессиональных сообществ в начале 1990-х годов явилось создание ряда стандартов, относящихся к языку под названием XML (eXtensible Markup Language – «расширяемый язык разметки»). XML является подмножеством SGML, но благодаря ряду дополнительных стандартов и возможностей XML-технология представляет собой гибрид обработки документов и обработки баз данных. XML предоставляет стандартизированный, но при этом гибкий способ описания содержимого документов. Он может использоваться для описания в стандартной форме любого представления базы данных.
Разработан стандарт XML Schema, который позволяет автоматически генерировать XML-документы на основе информации, хранящейся в базе данных, а также автоматически извлекать эту информацию из XML-документов. Более того, имеются стандартизированные способы определения взаимного соответствия между компонентами документа и элементами схемы базы данных.
Благодаря своей эффективности, XML стал находить огромное множество применений в информационных технологиях. Появился основанный на XML стандарт SOAP (Simple Object Access Protocol – простой протокол доступа к объектам), описывающий удаленный вызов процедур через Интернет, который сегодня определен как обобщенный стандартный протокол, используемый для передачи любых сообщений по любому транспортному протоколу.
Xml как язык разметки
В качестве языка разметки XML имеет значительные преимущества перед HTML. Во-первых, создатели языка XML обеспечили четкое разделение между структурой документа, его содержимым и материализацией. В XML предусмотрены средства для определения каждой из этих трех составляющих, и природа этих средств такова, что они не могут смешиваться, как это было в HTML.
Кроме того, стандарт XML, как следует из названия, может расширяться разработчиками. В XML они не ограничены фиксированным набором элементов вроде <TITLE>, <H1> и <P>, а могут определять свои собственные элементы.
Одной из проблем HTML является то, что он предоставляет слишком большую свободу. Рассмотрим HTML-код:
<h2>Здравствуй. мир!</h2>
Хотя тег <h2> может обозначать заголовок второго уровня в структуре документа, его также можно использовать для того, чтобы просто вывести слова «Здравствуй, мир!» определенным стилем. Из-за этого обстоятельства нельзя положиться на теги при определении истинной структуры HTML-страницы. Использование тегов носит слишком произвольный характер – <h2> может означать заголовок второго уровня, а может не означать ничего.
В XML структура документа формально определена. Например, если мы находим тег <улица>, мы знаем точно, где этот тег расположен и как он соотносится с другими тегами в структуре документа. Т.о., XML-документы в точности передают семантику содержащихся в них данных.
XML-документ и DTD
В листинге 1 приведен пример XML-документа. Документ имеет два раздела. В первом разделе определяется структура документа; этот раздел называется DTD (Document Type Declaration – определение типа документа). Второй раздел содержит собственно данные.
Листинг 1. XML-документ Покупатель с вложенным определением типа.
<!DOCTYPE Покупатель [ <!ELEMENT Покупатель (имя, адрес)> <!ELEMENT ФИО (фамилия, имя, отчество)> <!ELEMENT фамилия (#PCDATA)> <!ELEMENT имя (#PCDATA)> <!ELEMENT отчество (#PCDATA)> <!ELEMENT Адрес (улица+, город, область, индекс)> <!ELEMENT улица (#PCOATA)> <!ELEMENT город (#PCDATA)> <!ELEMENT область (#PCOATA)> <!ELEMENT индекс (#PCDATA)>
)>
<Покупатель> <ФИО> <фамилия>Короткевич</фамилия> <имя>Владимир</имя> <отчество>Семенович</отчество> </ФИО> <Адрес> <улица>Долгобродская, 23</улица> <улица>Танка,12-245</улица> <город>Минск</город> <область></область> <индекс>220012</индекс> </Адрес>
</Покупатель>
DTD начинается с ключевого слова DOCTYPE, за которым следует имя типа документа. Далее идет описание содержимого документа Покупатель. В нем есть две группы: ФИО и Адрес. Группа ФИО состоит из трех элементов – фамилия, имя и отчество. Эти элементы определены как #PCDATA, то есть строки символьных данных. Ниже описывается элемент Адрес, состоящий из четырех элементов: улица, город, область и индекс. Каждый из этих элементов также определен как символьные данные. Знак + после имени элемента улица указывает на то, что этот элемент обязан иметь по крайней мере одно значение, но может иметь несколько значений.
Экземпляр данных типа Покупатель, показанный в листинге, соответствует DTD, поэтому данный документ называется XML-документом, допустимым по типу (type-valid XML document). Если бы он не соответствовал DTD, он назывался бы недопустимым по типу документом (not-type-valid XML document). Недопустимые по типу документы могут, тем не менее, быть абсолютно правильными с точки зрения XML: они просто не являются допустимыми экземплярами своего типа. Например, если бы документ в листинге 1 содержал два элемента город, он был бы по-прежнему правильным с точки зрения XML, но недопустимым по типу.
Хотя DTD почти всегда желательны, они не являются обязательными в XML-документах. Документ, не имеющий DTD, по определению является недопустимым по типу, поскольку не существует типа, относительно которого можно было бы проверить его допустимость.
Раздел DTD не обязательно должен содержаться в самом документе. В листинге 2 изображен документ типа Покупатель, в котором DTD берется из файла D:\Лекции\XML\Покупатель.dtd:
Листинг 2.
<!DOCTYPE Покупатели SYSTEM “D:\Лекции\XML\Покупатель.dtd”>
<Покупатель> <ФИО> <фамилия>Короткевич</фамилия> <имя>Владимир</имя> <отчество>Семенович</отчество> </ФИО> <адрес> <улица>Долгобродская, 23</улица> <улица>Танка,12-245</улица> <город>Минск</город> <область></область> <индекс>220012</индекс> </адрес>
</Покупатель>
Преимущество внешнего хранения DTD в том, что можно проверять допустимость множества документов относительно одного и того же DTD.
Разработчик DTD может определять любые элементы по своему желанию. Следовательно, XML-документы могут расширяться, но расширяться стандартизированным и контролируемым способом.