- •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. Выбрать все пары номеров поставщиков, таких, что оба поставщика в каждой паре находятся
Часть I
Основные понятия
Часть I состоит из четырех вводных глав.
В главе 1 объясняются основные понятия: что такое базы данных и зачем они нужны. Также в ней кратко излагаются различия между реляционными и другими типами баз данных.
В главе 2 в общих чертах представляется архитектура баз данных — так называе- мая архитектура ANSI/SPARC. На основе этого материала строятся все после- дующие главы книги.
В главе 3 делается обзор реляционных систем, назначение которого состоит в по- степенной подготовке читателя к более детальному обсуждению тех же вопросов в части II и последующих частях данной книги. Здесь также рассматривается реаль- ный пример — база данных поставщиков и деталей.
В главе 4 дается краткое введение в стандартный реляционный язык SQL.
Глава
и управление ими
1.1. Вводный пример
Система баз данных — это, по сути, не что иное, как компьютеризированная сис- тема хранения записей. Саму же базу данных можно рассматривать как подобие элек- тронной картотеки, т.е. хранилище или контейнер для некоторого набора занесенных в компьютер файлов данных. Пользователям этой системы предоставляется возможность выполнять множество различных операций над такими файлами, например:
добавлять новые пустые файлы в базу данных;
вставлять новые данные в существующие файлы;
получать данные из существующих файлов;
изменять данные в существующих файлах;
удалять данные из существующих файлов;
удалять существующие файлы из базы данных.
В
качестве иллюстрации в табл. 1.1 приведена
небольшая база данных, состоящая
всего
из одного файла под названием CELLAR
(погреб).
В этом файле хранятся данные о
содержимом
винного погреба. На рис. 1.1 показан пример
выполнения операции выбор-
ки
и
данные, возвращаемые с помощью этой
операции.
Замечание.
Операции
над базами данных, имена файлов и т.п. в
этой книге для на-
глядности пишутся
прописными буквами, хотя на практике
часто удобнее использовать
строчные.
В большинстве СУБД допускаются оба
варианта.
[Выборка данных:
SELECT WINE, BINt, PRODUCER FROM CELLAR WHERE READY = 2000 ;
1
Рис.
1.1. Пример выборки информации из базы
данных
На рис. 1.2 приведены примеры операций вставки (INSERT), обновления (UPDATE) и удаления (DELETE) для базы данных винного погреба. Эти примеры почти не требуют пояснений. Далее, в главах 3, 4, 5 и некоторых других, будут приведены примеры добав- ления и удаления файлов.
Вставка новых данных: INSERT
INTO CELLAR ( BINt, WINE, PRODUCER, YEAR, BOTTLES, READY VALUES ( 53, 'Pinot Noir', 'Saintsbury', 1997, 6, 2001 ) ;
Обновление существующих данных: UPDATE CELLAR SET BOTTLES = 4 WHERE BIN* = 3 ;
Удаление существующих данных: DELETE
FROM CELLAR WHERE BIN* = 2 ;
Рис. 1.2. Примеры операций вставки, обновления и удаления
В завершение вводного раздела приведем несколько замечаний.
По очевидным причинам компьютерные файлы, такие как CELLAR в приведенном выше примере, часто называют таблицами, а не файлами (точнее, реляционными таблицами; подробности — в разделах 1.3 и 1.6).
Строки (row) подобных таблиц соответствуют записям файла, а столбцы (columns) можно рассматривать как поля этих записей. В дальнейшем термины "запись" и "поле" будут использоваться тогда, когда речь будет идти о базах дан- ных вообще (в основном, в первых двух главах). Термины "строка" и "столбец" бу- дут использоваться при рассмотрении реляционных систем (еще раз обратитесь к разделам 1.3 и 1.6).
Замечание. В действительности, когда мы перейдем к более формальному рассмот- рению реляционной модели в последующих частях книги, нам так или иначе при- дется использовать более формальные термины.
Для простоты в этом примере мы предположили по умолчанию, что в столбцах WINE и PRODUCER содержатся строковые данные, а во всех остальных столбцах — целочисленные данные. Вопросы, касающиеся типов данных (data types) столб- цов, более подробно будут обсуждаться в главах 3, 4 и особенно в главе 5.
Столбец BINi является первичным ключом (primary key) таблицы CELLAR (подразумевается, что любые две строки этой таблицы никогда не будут содержать одно и то же значение поля BINi). Для выделения в таблицах столбцов первичного ключа мы обычно будем использовать двойное подчеркивание (см. табл. 1.1).
Примеры операций выборки, вставки, обновления и удаления на рис. 1.1 и 1.2 пред- ставлены с помощью операторов (statement) SELECT, INSERT, UPDATE и DELETE специ- ального языка баз данных, называемого SQL. Язык SQL поддерживается в настоящее время большинством коммерческих СУБД, представленных на рынке, и является официальным стандартом языка для работы с реляционными базами данных.
Замечание. Название "SQL" вначале было аббревиатурой, образованной от Structured Query Language (язык структурированных запросрв), и его было принято произносить как "сиквел". Сейчас, когда язык стал стандартом, SQL — это уже не аббревиатура, а обычное название, которое произносится как "эс-кью-эль". В даль- нейшем в этой книге предполагается именно такой вариант произношения.
Заметим, что в языке SQL для операции обновления используется ключевое слово UPDATE, обозначающее именно операцию изменения (change). Это в некоторых случа- ях может привести к недоразумениям, поскольку термин "обновить" (update) исполь- зуется также по отношению к операциям вставки (INSERT), обновления (UPDATE) и удаления (DELETE) в целом, как к группе. В данной книге мы будем различать эти два понятия, используя строчные буквы при записи общего понятия и прописные буквы, когда будет подразумеваться именно операция обновления UPDATE.
Как вам, наверное, известно, большая часть современных систем баз данных — ре- ляционные (или в какой-то мере считающиеся реляционными; глава 4, раздел 4.7). И это одна из причин, по которой в данной книге наибольшее внимание уделяется именно реляционным системам.
И последнее замечание в настоящем разделе: понимание материала этой и следующей глав имеет решающее значение для правильного восприятия средств и возможностей со- временных систем баз данных. Однако нельзя не признать, что материал этих глав кое-где несколько абстрактный и довольно сухой. Дополнительная сложность состоит в том, что здесь рассматривается много понятий и терминов, которые могут быть вам еще неизвест- ны. Следующая часть книги, особенно главы 3 и 4, менее абстрактна, поэтому, возможно, она будет восприниматься лучше. Так что, может быть, стоит сначала лишь бегло прочи- тать первые две главы, а позже внимательно перечитывать их по мере детального ознаком- ления с темами, которые непосредственно связаны с материалом этих двух глав.
