
- •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 (четыре главы) — это обширное введение в теорию баз данных вообще и реляционных баз данных в частности. Здесь также излагаются основы стандартно- го языка баз данных sql.
Часть II (пять глав) содержит детальное и весьма основательное описание реляци- онной модели, которая является теоретической основой не только для собственно реляционных систем, но фактически для всей технологии баз данных.
Часть III (четыре главы) включает обсуждение общих аспектов проектирования баз данных. Три главы посвящены теории проектирования, а в четвертой рас- сматривается семантическое моделирование и модель "сущность/связь".
Часть IV (две главы) посвящена управлению транзакциями (т.е. обеспечению процедур восстановления и поддержки параллельного доступа).
Часть V (восемь глав) — это некоторое "попурри". Основное его назначение со- стоит в описании применения реляционных понятий к различным аспектам техно- логии баз данных, включая защиту данных, распределенные базы данных, хро- нологические наборы данных, системы поддержки принятия решений и т.д.
Часть VI (две главы) содержит обсуждение объектной технологии и ее применения в свете концепций баз данных. В последней главе книги, в частности, рассматрива- ется возможность сближения между объектной и реляционной технологиями и об- суждаются принципы построения объектно-реляционных систем.
Кроме того, в книге есть три приложения. В приложении А рассматриваются допол- нительные возможности языка SQL, в приложении Б можно ознакомиться с концепция- ми стандарта SQL3 (новой версии стандарта языка SQL, которая, по-видимому, уже бу- дет утверждена как стандарт, когда эта книга выйдет в свет) и в приложении В перечис- лены некоторые важные сокращения и аббревиатуры.
Замечание. Существует интерактивное руководство Instructor's Manual, в котором даны указания о том, как использовать эту книгу с целью преподавания учебного курса, посвященного базам данных. В руководстве содержится множество замечаний, советов и предложений по каждой главе и ее приложению, а также ответы к тем упражнениям, к которым нет ответов в книге. Читатель найдет в нем и другие материалы, которые ока- жут ему существенную помощь. Как получить доступ к этому руководству, можно узнать в местном торговом представительстве издательства Addison-Wesley. Чтобы установить местонахождение ближайшего представительства этого издательства, обращайтесь на его Web-сайт по адресу http://hepg.awl.com/rep-locator.
Как читать эту книгу
В целом, книга рассчитана на последовательное чтение, но можно пропустить по- следние главы и последние разделы внутри глав по своему усмотрению. Вот предлагае- мый план чтения.
Бегло прочитайте главы 1 и 2.
Очень внимательно изучите главы 3 и 4.
Внимательно прочитайте главы 5, 6, 8 и 9, но пропустите главу 7 (за исключением, может быть, раздела 7.7).
Бегло прочитайте главу 10.
Внимательно прочитайте главы 11 и 13, но пропустите главу 12.
Внимательно прочитайте главы 14 и 15.
Выборочно по своему желанию и интересам прочитайте последующие главы.
Каждая глава начинается введением и заканчивается заключением (резюме). Кроме того, в большинство глав включены упражнения, обычно с ответами. Рекомендуется просматривать ответы к упражнениям, так как в них часто содержится дополнительная полезная информация по теме конкретной главы. Также в большинстве глав вы найдете обширные списки литературы, которые обычно дополнены комментариями. Такая структура книги позволяет усваивать материал на нескольких уровнях: наиболее важные понятия и результаты приведены в основном тексте, а дополнительные вопросы и более сложные аспекты исследования вынесены в соответствующие упражнения, ответы к ним и комментарии к литературе.
Замечание. Ссылки обозначаются в тексте двойным номером в квадратных скобках. Например, ссылка [3.1] означает первый пункт в списке литературы к главе 3, а имен- но — статью Э.Ф. Кодда, опубликованную в журнале САСМ, Vol. 25, No. 2 в феврале 1982 года. (Объяснение сокращений, которые используются в ссылках, например, "САСМ", можно найти в приложении В.)
Сравнение с предыдущими изданиями
Ниже перечислены главные отличия настоящего издания от предшествующих.
Часть I. В главах 1-3 обсуждается примерно та же тема, что и в главах 1-3 пре- дыдущего издания, но главы были переписаны и изложение нескольких тем было переработано и улучшено. Глава 4 новая, хотя можно сказать, что частично она основана на материале главы 8 предыдущего издания. В ней рассматриваются ос- новы языка SQL и его отдельные аспекты, которые логически не связаны ни с ка- кими другими главами в этой книге (в частности, привязка к базовому языку и ис- пользование внедренных SQL-операторов).
Часть II. Главы 5-9, посвященные реляционной модели, представляют собой полностью переписанные, значительно расширенные и существенно улучшенные версии глав 4-7 и 17 предыдущего издания. В частности, коренным образом пере- работаны разделы о типах (доменах), реляционных значениях и реляционных пе- ременных, ограничениях целостности, предикатах и представлениях.
Замечание. Здесь необходимо дать некоторые пояснения. В предыдущих изданиях язык SQL использовался для демонстрации реляционных понятий в надежде на то, что студентам будет легче сначала разобраться в конкретных примерах, а затем перейти к теории. Однако, к сожалению, в настоящее время пропасть между язы- ком SQL и реляционной моделью настолько увеличилась, что стало очевидно сле- дующее: использовать язык SQL с этой целью — значит, по сути, просто вводить читателей в заблуждение. В действительности язык SQL в его современном виде настолько далек от того, чтобы быть олицетворением реляционных принципов (он страдает от множества недоделок и переделок), что я предпочел перенести его описание в приложение. Однако язык этот настолько важен с коммерческой точки зрения (каждый специалист, работающий с базами данных, обязательно должен быть знаком с языком SQL), что обойтись с ним так бесцеремонно было бы недо- пустимо. Поэтому я остановился на компромиссе — глава по основам языка SQL помещена в часть I этой книги, а в другие главы (где это уместно) вставлены от-
дельные дополнительные разделы, содержащие описание тех аспектов языка SQL, которые связаны с темой соответствующей главы.
■ Часть III. Главы 10-13 — это существенно переработанные версии глав 9-12, до- полненные новым материалом по реляционно-значимым атрибутам, денормализа- ции, ортогональному проектированию и альтернативным подходам к семантиче- скому моделированию (включая бизнес-правила).
Замечание. И снова необходимы пояснения. Некоторые рецензенты предыдущих изданий жаловались, что вопросы проектирования базы данных излагались слиш- ком поздно. Но, по моему мнению, студенты будут не вполне готовы к проектиро- ванию баз данных или не смогут правильно оценить результаты проектирования до тех пор, пока не поймут, что собой представляют базы данных и как они ис- пользуются. Другими словами, мне кажется, что следует предварительно потра- тить некоторое время на реляционную модель и связанные с ней вопросы и лишь затем приступить к изучению методов проектирования. Поэтому я по-прежнему убежден, что часть III расположена в книге правильно.