- •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. Выбрать все пары номеров поставщиков, таких, что оба поставщика в каждой паре находятся
2.9. Система управления передачей данных
В этом разделе вкратце рассматривается передача данных. Запросы к базе данных от конечных пользователей в действительности передаются от рабочей станции пользовате- ля (которая может быть физически удалена от самой системы баз данных) к некоторому интерактивному приложению (встроенному или нет), а от него — к СУБД в форме ком- муникационных сообщений. Более того, ответы пользователю (от СУБД и оперативного приложения к станции пользователя) также передаются в форме подобных сообщений. Передача таких сообщений происходит под управлением другого программного компо- нента — менеджера передачи данных.
Менеджер передачи данных не является частью СУБД; он представляет собой авто- номную систему со своими правами. Однако, поскольку очевидно, что от менеджера пе- редачи данных и СУБД требуется согласованная совместная работа, они иногда рассмат- риваются как равноправные партнеры в компоненте более высокого уровня, называемо- го системой базы данных и передачи данных. В этой системе СУБД отвечает за рабо- ту с базой данных, а менеджер передачи данных обрабатывает все сообщения, посту- пающие в СУБД и из нее, а точнее говоря, в то приложение, которое использует СУБД, и из него. Однако в этой книге об обработке сообщений нам осталось сказать относи- тельно немного (поскольку такая обширная тема вполне заслуживает самостоятельного обсуждения). В разделе 2.12 кратко рассматриваются вопросы передачи данных между отдельными системами (т.е. между отдельными машинами в сети передачи данных, по- добной Internet), но это уже совсем другая тема.
2.10. Архитектура "клиент/сервер"
В предыдущих разделах этой главы подробно обсуждалась так называемая архитек- тура ANSI/SPARC для систем баз данных. Ее упрощенная схема приведена на рис. 2.3. В настоящем разделе мы посмотрим на базу данных с несколько иной точки зрения. Общее назначение систем баз данных— это, конечно, поддержка разработки и выполнения приложений баз данных. Поэтому на высоком уровне систему баз данных можно рас-
сматривать как систему с очень простои структурой, состоящей из двух частей — серве- ра (внутреннего компонента или машины базы данных) и набора клиентов (внешнего компонента или внешнего интерфейса), как показано на рис. 2.5.
Конечные пользователи
Клиенты
Сервер
База данных
Сервер — это сама СУБД. Он поддерживает все ос- новные функции СУБД, которые обсуждались в разделе 2.8, а именно: определение данных, обра- ботку данных, защиту данных, поддержание цело- стности данных и т.д. В частности, он предоставля- ет полную поддержку внешнего, концептуального и внутреннего уровней, обсуждавшихся в разде- лах 2.3-2.6. Поэтому "сервер" в этом контексте — это просто другое название для СУБД.
Клиенты — это различные приложения, которые вы- полняются поверх СУБД: как приложения, написан- ные пользователями, так и встроенные приложения, предоставляемые поставщиками СУБД или некото- рыми сторонними поставщиками программного обеспечения. Конечно, с точки зрения сервера разни- цы между встроенными приложениями и приложе- ниями, написанными пользователем, нет: все они ис- пользуют один и тот же интерфейс сервера, а имен- но — интерфейс внешнего уровня, который уже рас- сматривался в разделе 2.3.
Замечание. Некоторые специальные "служебные" приложения могут оказаться ис- ключениями. Как упоминалось выше, они иногда работают непосредственно на внутреннем уровне системы (см. раздел 2.5). Подобные утилиты правильнее отно- сить к встроенным компонентам СУБД, а не к приложениям в обычном смысле. В следующем разделе утилиты обсуждаются более подробно.
Приложения, в свою очередь, делятся на несколько четко определенных категорий.
Приложения, написанные пользователями. В основном, это обычные прикладные программы, чаще всего написанные либо на популярном языке программирова- ния, подобном С или COBOL, либо на специализированных языках четвертого по- коления, хотя в обоих случаях эти языки должны как-то связываться с соответст- вующим подъязыком данных (см. раздел 2.3).
Приложения, предоставляемые поставщиками (часто называемые инструмен- тальными средствами). В целом, назначение таких средств— содействовать процессу создания и выполнения других приложений, т.е. приложений, которые разрабатываются специально для решения некоторой специфической задачи. Час- то эти создаваемые приложения могут выглядеть вовсе не так, как приложения в общепринятом смысле. И это понятно, поскольку само назначение инструмен- тальных средств состоит в предоставлении пользователям, особенно конечным, возможности создавать приложения без написания традиционных программ. На- пример, одно из предоставляемых поставщиком СУБД инструментальных средств может быть генератором отчетов, с помощью которого конечный пользователь
сможет получить отформатированный отчет, выполнив обычный запрос к системе. Каждый такой запрос является, по существу, ни чем иным, как неболь- шим специальным приложением, написанным на языке очень высокого уровня (со специфическим назначением), а именно — на языке выдачи отчетов.
Поставляемые инструментальные средства, в свою очередь, делятся на несколько самостоятельных классов.
а) Процессоры языков запросов.
б) Генераторы отчетов.
в) Графические бизнес-подсистемы.
г) Электронные таблицы.
д) Процессоры обычных языков.
е) Статистические пакеты.
ж) Средства управления копированием или средства извлечения данных.
з) Генераторы приложений (включая процессоры языков четвертого поколения).
и) Другие средства разработки приложений, включая CASE-инструменты (CASE или Computer-Aided Software Engineering— автоматизация разработки про- граммного обеспечения), и т.д.
Подробное обсуждение этих приложений выходит за рамки данной книги, однако следует отметить, что (как утверждалось ранее) главная задача системы баз дан- ных — поддержка создания и выполнения приложений. Поэтому качество имею- щихся клиентских инструментальных средств должно быть главным учитываемым фактором при выборе СУБД, наиболее подходящей для конкретного заказчика. Другими словами, СУБД сама по себе — не единственный и необязательно важ- нейший фактор, который нужно учитывать в этом случае.
Завершим настоящий раздел ссылкой на последующий материал. Так как система в целом может быть четко разделена на две части (сервер и клиенты), появляется возмож- ность работы этих двух частей на разных машинах. Иначе говоря, существует возмож- ность организации распределенной обработки. Распределенная обработка предпола- гает, что отдельные машины можно соединить какой-нибудь коммуникационной сетью таким способом, что выполнение одной задачи обработки данных можно будет распре- делить на несколько машин этой сети. Как показала практика, эта возможность настоль- ко заманчива по различным соображениям (главным образом, экономическим), что тер- мин "клиент/сервер" стал применяться почти исключительно в тех случаях, когда клиен- ты и сервер действительно находятся на разных машинах. Более подробно распределен- ная обработка данных рассматривается ниже, в разделе 2.12.