
- •Isbn 5-8459-0138-3 (рус) isbn 0-201-38590-2 (англ)
- •Глава 2. Архитектура системы баз данных 65
- •Глава 6. Реляционная алгебра 192
- •Глава 7. Реляционное исчисление 243
- •Глава 8. Целостность данных 301
- •Глава 9. Представления 350
- •Часть 111
- •Часть IV
- •Глава 14. Восстановление 544 14.1. Введение 544
- •Глава 15. Параллельность 566
- •Часть V
- •Глава 16. Защита данных 602
- •Глава 17. Оптимизация 639
- •Глава 18. Отсутствующая информация 693
- •Глава 19. Наследование типов 725
- •Глава 20. Распределенные базы данных 767
- •Глава 21. Поддержка принятия решений 813
- •Глава 22. Хронологические базы данных 853
- •Глава 23. Логические системы управления базами данных 899
- •Часть VI
- •Глава 24. Объектные базы данных 944
- •Глава 25. Объектно-реляционные базы данных 999
- •Часть I (четыре главы) — это обширное введение в теорию баз данных вообще и реляционных баз данных в частности. Здесь также излагаются основы стандартно- го языка баз данных sql.
- •Часть IV. Две главы данной части — это несколько пересмотренные и расширен- ные версии глав 13 и 14 предыдущего издания.
- •Часть VI. Глава 24 является полностью переписанной и значительно улучшенной версией глав 22-24. Глава 25 почти полностью обновлена.
- •Часть I
- •Часть I состоит из четырех вводных глав.
- •1.1. Вводный пример
- •1.2. Что такое система баз данных
- •1.3. Что такое база данных Перманентные данные
- •1.4. Назначение баз данных
- •1.5. Независимость данных
- •1.6. Реляционные и другие системы
- •1.7. Резюме
- •2.1. Введение
- •2.2. Три уровня архитектуры
- •Внешний уровень (представления отдельных пользователей)Концептуальный уровень (обобщенное представление пользователей)
- •2.3. Внешний уровень
- •Отображение "внешний/концептуальный" схемы
- •Определение структур хранения (внутренняя схема)
- •Внешнее представление а Концептуальная схема
- •2.4. Концептуальный уровень
- •2.5. Внутренний уровень
- •2.6. Отображения
- •2.7. Администратор базы данных
- •2.8. Система управления базой данных
- •2.9. Система управления передачей данных
- •2.10. Архитектура "клиент/сервер"
- •2.11. Утилиты
- •2.12. Распределенная обработка
- •2.13. Резюме
- •3.1. Введение
- •3.2. Реляционная модель
- •3.3. Отношения и переменные-отношения
- •3.4. Смысл отношений
- •3.5. Оптимизация
- •3.6. Каталог
- •3.7. Базовые переменные-отношения и представления
- •3.8. Транзакции
- •3.9. База данных поставщиков и деталей
- •3.10. Резюме
- •Глава 4
- •4.1. Введение
- •4.2. Обзор языка sql
- •4.3. Каталог
- •4.4. Представления
- •4.5. Транзакции
- •4.6. Внедрение sql-операторов
- •4.7. Несовершенство языка sql
- •4.8. Резюме
- •Часть 9. Управление внешними данными (sql/med) Часть 10. Связь с объектным языком (sql/olb)
- •Часть II
- •Глава 5
- •5.1. Введение
- •5.2. Домены
- •5.3. Значения отношений
- •5.4. Переменные-отношения
- •5.5. Средства sql
- •5.6. Резюме
- •6.1. Введение
- •6.2. Реляционная замкнутость
- •6.3. Синтаксис
- •6.4. Семантика
- •6.5. Примеры
- •6.5.1. Получить имена поставщиков детали с номером 'р2'
- •6.5.2. Получить имена поставщиков по крайней мере одной красной детали
- •6.5.3. Получить имена поставщиков всех типов деталей
- •6.5.4. Получить номера поставщиков по крайней мере тех типов деталей, которые поставляет поставщик с номером 's2'
- •6.5.5. Получить все пары номеров поставщиков, находящихся в одном городе
- •6.5.6. Получить имена поставщиков, которые не поставляют деталь с номером 'р2'
- •6.6. Зачем нужна реляционная алгебра
- •6.7. Дополнительные операторы
- •6.8. Группирование и разгруппирование
- •6.9. Реляционные сравнения
- •6.10. Резюме
- •7.1. Введение
- •7.2. Исчисление кортежей
- •7.3. Примеры
- •7.3.5. Найти имена поставщиков по крайней мере одной детали, поставляемой поставщиком с номером 's2'
- •7.3.6. Выбрать имена поставщиков всех типов деталей
- •7.3.7. Определить имена поставщиков, которые не поставляют деталь с номером 'р2'
- •7.3.8. Определить номера поставщиков по крайней мере всех типов деталей, поставляемых поставщиком с номером *s2'
- •7.4. Сравнительный анализ реляционного исчисления и реляционной алгебры
- •7.5. Вычислительные возможности
- •7.5.1. Определить номера и вес в граммах всех типов деталей, вес которых превышает 10 ооо г
- •7.6.1. Выбрать номера поставщиков из Парижа со статусом, большим 20
- •7.7.1. Указать цвета деталей и названия городов, в которых находятся детали "не из Парижа" с весом, превышающим 10 фунтов
- •7.7.2. Для всех деталей указать номер и вес в граммах
- •7.7.3. Выбрать информацию обо всех парах поставщиков и деталей, находящихся в одном городе
- •7.7.4. Найти все пары названий городов, таких, что поставщик из первого города поставляет деталь, находящуюся во втором городе
- •7.7.5. Выбрать все пары номеров поставщиков, таких, что оба поставщика в каждой паре находятся
Глава 23. Логические системы управления базами данных 899
Введение 899
Обзор основных концепций 899
Дедуктивные аксиомы 901
23.3. Исчисление высказываний 902
Термы 903
Формулы 903
Правила вывода 904
Доказательства 905
23.4. Исчисление предикатов 907
Предикаты 907
Правильно построенные формулы 908
Интерпретации и модели 909
Стандартная форма 911
Использование правила резолюции 912
Базы данных с точки зрения доказательно-теоретического подхода 914
Дедуктивные СУБД 918
fl3biKDatalog 921
23.7. Обработка рекурсивных запросов 924
Унификация и резолюция 925
Наивное оценивание 926
Полунаивное оценивание 927
Статическое фильтрование 929
23.8. Резюме 930 Упражнения 932 Список литературы 934 Ответы к некоторым упражнениям 940
Часть VI
Объектные и объектно-реляционные базы данных 943
Глава 24. Объектные базы данных 944
24.1. Введение 944
Специальный пример 946
24.2. Объекты, классы, методы и сообщения 948
Обзор объектной технологии 949
Переменные экземпляра 951
Идентификатор объекта 953
24.3. Еще раз об объектах и объектных классах 953
Еще раз об идентификаторе объекта 957
Классы, экземпляры и коллекции 958
Иерархии классов 961
24.4. Простой пример 962
Определение данных ■ 963
Заполнение базы данных 966
Операции извлечения 970
Операции обновления 972
24.5. Дополнительные аспекты 973
Произвольные запросы 973
Целостность базы данных 974
Реализация связей 975
Языки программирования баз данных 977
Повышение производительности 978
Является ли объектная СУБД действительно СУБД? 980
24.6. Резюме 982 Упражнения 985 Список литературы 986 Ответы к некоторым упражнениям 996
Глава 25. Объектно-реляционные базы данных 999
Введение 999
Первая грубейшая ошибка 1002
Как возникла первая грубейшая ошибка 1010
25.3. Вторая грубейшая ошибка 1010
Как возникла вторая грубейшая ошибка 1012
25.4. Вопросы реализации 1013
Анализ запросов и проверка типа 1014
Оптимизация 1014
Структуры хранения 1015
Преимущества реального сближения двух технологий 1016
Резюме 1018 Список литературы 1018
Приложения 1027
Приложение А. Выражения языка SQL 1028
АЛ. Введение 1028
А.2. Табличные выражения 1028
Предложение SELECT 1030
Предложение FROM 1031
Предложение WHERE 1032
Предложение GROUP BY 1032
|
Предложение HAVING |
1033 |
|
Подробный пример |
1033 |
А.З. |
Условные выражения |
1035 |
|
Условие LIKE |
1036 |
|
Условие MATCH |
1038 |
|
Условие ALL или ANY |
1038 |
|
Условие UNIQUE |
1039 |
А.4. |
Скалярные выражения |
1039 |
|
Оператор CASE |
1040 |
|
Оператор CAST |
1040 |
Приложение Б. Обзор языка SQL3 |
1041 | |
Б.1. |
Введение |
1041 |
Б.2. |
Новые типы данных |
1042 |
|
Встроенные скалярные типы данных |
1042 |
|
Генерируемые типы |
1043 |
|
Типы DISTINCT |
1044 |
|
Структурированные типы |
1045 |
Б.З. |
Наследование типов |
1047 |
Б.4. |
Ссылочные типы |
1049 |
Б.5. |
Подтаблицы и супертаблицы |
1052 |
Б.6. |
Другие возможности |
1054 |
|
Создание таблиц |
1054 |
|
Табличные выражения |
1054 |
|
Условные выражения |
1055 |
|
Целостность |
1056 |
|
Обновление представлений |
1056 |
|
Управление транзакциями |
1057 |
|
Безопасность |
1057 |
|
Отсутствующая информация |
1057 |
|
Поддержка принятия решений |
1057 |
Приложение В. Сокращения и специальные символы |
1058 | |
Предметный указатель |
1064 |
Об авторе
К.Дж. Дейт (C.J. Date) — независимый публицист, лектор, ученый и консультант, специализирующийся на технологии реляционных баз данных. Он живет в Хилдсбурге, штат Калифорния.
Начиная с 1967 года Дейт несколько лет работал математиком-программистом и инст- руктором по программированию в компании Leo Computers Ltd. (Лондон, Великобрита- ния). После этого он работал в лаборатории IBM (UK) Development Laboratories над инте- грацией функций баз данных в язык PL/1. В 1974 году он перешел в калифорнийский центр IBM Systems Development Center, где отвечал за разработку языка баз данных, известного в настоящее время как Unified Database Language (UDL). Впоследствии принимал участие в техническом планировании и внешних проектах корпорации IBM для продуктов реляцион- ных баз данных SQL/DS и DB2. В мае 1983 года он покинул компанию IBM.
Дейт работает в области баз данных почти 30 лет. Одним из первых он осознал осно- вополагающее значение новаторской работы Э.Ф. Кодда (E.F. Codd) по реляционной мо- дели. Дейт читал лекции по техническим вопросам (преимущественно по тематике баз данных и, в частности, по реляционным базам данных) во всей Северной Америке, а также в Европе, Австралии, Латинской Америке и на Дальнем Востоке. Он является ав- тором или соавтором не только этой, но и других книг по базам данных: Foundation for Object/Relational Databases: The Third Manifesto (1998), в которой даны развернутые предложения по развитию данной области; Database: A Primer (1983), в которой базы данных рассматриваются с точки зрения неспециалиста; серии книг Relational Database Writings (1986, 1990, 1992, 1995 и 1998 годы), в которых фундаментально изложены раз- личные вопросы реляционной технологии; а также другой серии книг, посвященной от- дельным системам и языкам {A Guide to DB2 (4th edition, 1993), A Guide to SYBASE and SQL Server (1992), A Guide to SQL/DS (1988), A Guide to INGRES (1987) и A Guide to the SQL Standard (4th edition, 1997)). Книги Дейта переведены на многие языки, в том числе на греческий, датский, испанский, итальянский, китайский, корейский, немецкий, поль- ский, португальский, русский, французский и японский. Кроме того, его книги изданы с использованием шрифта Брайля для слепых.
Дейт опубликовал более 300 технических статей и научных работ и внес значитель- ный вклад в теорию баз данных. Его работы постоянно публикуются в журналах Database Programming & Design и Intelligent Enterprise. Профессиональные семинары по технологии баз данных, проводимые им как в Северной Америке, так и за рубежом, при- знаны непревзойденными по качеству представленного материала и ясности изложения.
Дейт с отличием закончил Кембриджский университет в Великобритании (1962— 1966) и получил диплом математика, а затем ученую степень доктора технических наук в де Монфортском университете в Великобритании (1994).
Предисловие к седьмому изданию
Настоящая книга представляет собой исчерпывающее введение в очень широкую в настоящее время область теории баз данных. С ее помощью читатель сможет приобрести фундаментальные знания в области технологии баз данных, а также ознакомиться с на- правлениями, по которым эта область, вероятно, будет развиваться в будущем. Книга за- думывалась как учебник, а не как справочник, но я надеюсь, что ее в какой-то мере мож- но будет использовать и в качестве справочного руководства. В книге делается акцент на усвоении сущности и глубоком понимании излагаемого материала, а не просто на его формальном изложении.
Для кого предназначена эта книга
В ие :ом, книга ориентирована на читателей, которые профессионально работают с компьютерами в той или иной области и хотят получить общее представление о теории и практическом использовании баз данных. Предполагается, что читатель имеет по край- ней мере базовые знания в следующих областях:
средства управления памятью и файлами (индексация и т.д.) в современных ком- пьютерных системах;
хотя бы один из языков программирования высокого уровня (например, С, Java, Pascal, PL/I и т.д.).
Структура книги
Книга разделена на шесть частей.
Основные понятия.
Реляционная модель.
Проектирование базы данных.
Управление транзакциями.
Дополнительные аспекты.
Объектные и объектно-реляционные базы данных. Каждая часть, в свою очередь, делится на несколько глав.