
- •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. Выбрать все пары номеров поставщиков, таких, что оба поставщика в каждой паре находятся
Часть IV. Две главы данной части — это несколько пересмотренные и расширен- ные версии глав 13 и 14 предыдущего издания.
Часть V. Главы 19 (о наследовании типов), 21 (о поддержке решений) и 22 (о хронологических базах данных) новые. Главы 16 (о безопасности), 17 (об оптими- зации), 18 (об отсутствующей информации) и 20 (о распределенных базах данных) представляют собой расширенные и существенно пересмотренные версии глав 15, 18, 20 и 21 предыдущего издания соответственно. Глава 23 (о логических и дедук- тивных базах данных) — это переработанная версия приложения Б.
Часть VI. Глава 24 является полностью переписанной и значительно улучшенной версией глав 22-24. Глава 25 почти полностью обновлена.
И наконец, приложение А основано на части главы 8 предыдущего издания, а прило- жения Б и В являются новыми.
Из этого издания исключены следующие темы.
Структуры хранения и методы доступа (приложение А предыдущего издания).
Подробное обсуждение системы DB2 (приложение Б предыдущего издания).
Особенности этой книги
Каждая представленная на рынке книга по базам данных имеет свои сильные и сла- бые стороны, и каждый автор имеет своего "конька". Один автор уделяет особое внима- ние вопросам управления транзакциями, а другой делает акцент на построении моделей типа "сущность-связь". Один автор смотрит на все через призму языка SQL, а другой рассматривает все с чисто объектной точки зрения. Многие авторы обсуждают все, что касается баз данных, исключительно в терминах коммерческих продуктов, и т.д. И, ко- нечно, я — не исключение из этого правила: я также имею своего "конька", который мо- жет называться основами. Я твердо верю, что мы в любом случае должны ясно усвоить основы и обстоятельно в них разобраться, прежде чем пытаться что-либо на этих осно- вах строить. Такое убеждение объясняет столь сильный акцент, сделанный в данной кни- ге на реляционной модели. В частности, это объясняет и размеры второй части (наиболее
важной части книги), в которой я представляю собственное понимание реляционной мо- дели настолько тщательно, насколько это в моих силах. Меня интересуют основы, а не причуды и мода.
В этой связи необходимо отметить следующее: я удовлетворен тем, что на протяже- нии многих лет общий характер книги изменялся. Несколько первых изданий были, в ос- новном, описательными по характеру; в них область баз данных описывалась так, как это действительно имело место на практике, "без прикрас". В отличие от предыдущих изда- ний, это издание — более предписывающее; в нем обсуждается состояние, в котором об- ласть баз данных должна находиться, и направления, по которым она должна развивать- ся в будущем, если мы будем поступать разумно (иными словами, эта книга выражает определенную позицию). И первая часть "разумных действий", несомненно, заключается в изучении этих разумных действий. Я надеюсь, что настоящее издание может оказать существенную помощь в достижении подобной образовательной цели.
И еще одно, связанное с предыдущими рассуждениями, замечание. Некоторые чита- тели, возможно, знают, что я со своим коллегой Хью Дарвеном (Hugh Darwen) недавно опубликовал другую "предписывающую" книгу по технологии баз данных, которая на- зывается The Third Manifesto [3.3]. В ней, исходя из реляционной модели, обстоятельно излагаются технические предложения относительно будущих систем баз данных (представленные здесь предложения — результат наших с Хью исследований и размыш- лений по этой тематике). Поэтому неудивительно, что идеи Manifesto наполняют читае- мую вами книгу. Многие подумают, что книга Manifesto была необходима для создания данной книги, однако это не так. В то же время вопросы, рассматриваемые в книге Manifesto, имеют непосредственное отношение почти ко всем темам, которые обсужда- ется в данной книге, и часто в книге Manifesto можно найти дополнительную информа- цию по многим затрагиваемым здесь темам.
Заключительное замечание
Свои вступительные замечания мне хотелось бы закончить следующей отредактиро- ванной выдержкой из предисловия Бертрана Расселла (Bertrand Russell), приводимой здесь с любезного разрешения автора, к его словарю The Bertrand Russell Dictionary of Mind, Matter and Morals (ed. Lester E. Denonn; Citadel Press, 1993).
Меня обвинили в привычке менять свои суждения... Но я нисколько не пристыжен этой привычкой. Разве мог бы физик, работающий с 1900 года, гордиться тем, что его суждения не изменились за последние полстолетия?... Философия, кото- рую я ценю и которой стараюсь следовать, научна в том смысле, что существу- ют точные знания, которые необходимо получить, а новые открытия могут вы- явить старые ошибки, неизбежные для любого беспристрастного разума. Когда бы и что бы я ни говорил, я не претендую на полную истину так, как на нее пре- тендуют теологи в своем учении. Я претендую только на то, что тогда было благоразумно придерживаться высказанного мнения... Я был бы очень удивлен, ес- ли бы дальнейшие исследования не показали, что его необходимо менять. Прежде всего, моей целью была ясность. Если читатели предыдущего издания будут изучать настоящее, они обнаружат, что я тоже меняю свои мнения по некоторым вопросам (и, несомненно, буду продолжать это делать). Я надеюсь, что высказанное выше замечание они сочтут достаточным оправда-
нием такого положения дел. Я разделяю понимание Бертраном Расселом того, что собой представляет научное исследование, но он высказал его гораздо красноречивее, чем я мог надеяться сделать это сам.
Благодарности
Хочу исполнить приятный долг и поблагодарить всех, кто прямо или косвенно прини- мал участие в работе над этой книгой. Во-первых, я должен поблагодарить моих друзей Дэвида Мак-Говерна (David McGoveran) и Хью Дарвена (Hugh Darwen) за их огромную поддержку. Дэвид написал черновик главы 21 (о системах поддержки принятия решений), а Хью — черновик главы 22 (о хронологических базах данных). Хью также очень тщательно просмотрел большие фрагменты рукописи, в том числе все главы о реляционной модели и приложение по языку SQL3. Во-вторых, текст книги был заметно улучшен благодаря заме- чаниям слушателей семинаров, которые я веду уже на протяжении семи лет. Кроме того, положительное влияние на ее текст оказали комментарии многих друзей и рецензентов, а также мои дискуссии с ними. Вот далеко неполный их список: Чарли Бонтемпо (Charley Bontempo), Дэклан Брэди (Declan Brady), Хью Дарвен (Hugh Darwen) (опять), Тим Хартли (Tim Hartley), Эдриан Ларнер (Adrian Larner), Чунг Ли (Chung Lee), Дэвид Ливингстон (David Livingstone), Никое Лоренцос (Nicos Lorentzos), Хуижа Лу (Huizha Lu), Рамон Мата- Толедо (Ramon Mata-Toledo), Нельсон Маттос (Nelson Mattos), Дэвид Мак-Говерн (David McGoveran) (опять), Фабиан Паскаль (Fabian Pascal), Судха Рам (Cudha Ram), Рик ван дер Ланс (Rick van der Lans), Йонгдонг Ванг (Yongdong Wang), Колин Байт (Colin White) и Квианг Жу (Qiang Zhu). Каждый из них просмотрел по крайней мере часть рукописи этого издания, предоставил технический материал или как-то иначе помог мне найти ответы на многие технические вопросы. Я весьма признателен им за это. Также хотелось бы снова поблагодарить мою жену Линди (Lindy) за помощь в оформлении книги. И наконец, я, как всегда, благодарен всем в издательстве Addison-Wesley, особенно— Майт Суарез-Ривас (Maite Suarez-Rivas) и Кэтрин Харутуниан (Katherine Harutunian) за их поощрение и под- держку во время работы над проектом, а также моему редактору Элидии Дэвис (Elydia Davis) за ее безукоризненную работу.
Хилдсбург, Калифорния К. Дж. Дейт
1999