- •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. Выбрать все пары номеров поставщиков, таких, что оба поставщика в каждой паре находятся
1.7. Резюме
В заключение этой вводной главы подведем итог обсуждению основных вопросов. Систему баз данных можно рассматривать как компьютеризированную систему хране- ния записей. Такая система включает сами по себе данные (сохраняемые в базе дан- ных), аппаратное обеспечение, программное обеспечение (в частности, систему управления базами данных, или СУБД), а также пользователей (что наиболее важно). Пользователи, в свою очередь, подразделяются на прикладных программистов, ко- нечных пользователей и администраторов баз данных, или АБД. Последние отвеча- ют за администрирование базы данных и всей системы баз данных в соответствии с тре- бованиями, устанавливаемыми администратором данных.
Базы данных являются интегрированными и чаще всего совместно используемы- ми. Они применяются для хранения перманентных данных. Можно считать (хотя это и не совсем точно), что эти данные представляют собой сущности и существующие между сущностями связи, хотя сами связи — это, по сути, просто специальный вид сущности. Очень кратко мы рассмотрели понятие диаграмм "сущность-связь".
Система баз данных имеет ряд преимуществ, наиболее важным из которых является физическая независимость данных. Независимость данных может быть определена как иммунитет прикладных программ к изменениям способа хранения данных и используе- мых методов доступа. Среди всего прочего для независимости данных требуется строгое разделение между моделью данных и ее реализацией. (По ходу напоминаем, что тер- мин модель данных, к нашему сожалению, имеет два различных значения.)
Системы баз данных обычно поддерживают транзакции или логические единицы работы. Основное преимущество транзакций заключается в том, что они гарантируют атомарность выполняемых действий (все или ничего), несмотря на возможные сбои сис- темы, имевшие место до завершения выполнения транзакции.
И наконец, система баз данных может быть основана на нескольких различных под- ходах. Реляционные системы базируются на формальной теории, называемой реляци- онной моделью, в соответствии с которой данные представляются в виде строк в табли- цах (и интерпретируются как истинные высказывания), а пользователям предоставля- ются операторы, обеспечивающие поддержку процесса получения дополнительных ис- тинных высказываний в виде следствий из существующих данных. И с экономической, и с теоретической точек зрения можно считать, что реляционные системы являются наи- более важным сегментом рынка (и это положение дел, по-видимому, в обозримом буду- щем не изменится). Мы рассмотрели несколько примеров использования языка SQL — стандартного языка для работы с реляционными системами (в частности, были приведе- ны примеры операторов SELECT, INSERT, UPDATE и DELETE этого языка). Материал дан- ной книги в значительной мере ориентирован на реляционные системы и по причинам, указанным в предисловии, в меньшей мере — на собственно язык SQL.
Упражнения
параллельный
доступ
перманентные данные
свойство
администрирование данных база данных
бинарная связь
связь
диаграмма сущность-связь
система баз данных
защита
совместное использование данных
избыточность
СУБД
интеграция
сущность
интерактивное приложение командный интерфейс
транзакция
хранимая запись
многопользовательская система
независимость данных
хранимое поле хранимый файл
некомандный интерфейс (меню) некомандный интерфейс (формы)
целостность
язык запросов
Каковы преимущества использования системы баз данных?
Каковы недостатки использования системы баз данных?
Как вы понимаете термин реляционная система'} Назовите различия между реля- ционной и не реляционными системами.
Как вы понимаете термин модель данных! Объясните различие между моделью данных и ее реализацией. Почему так важно это различие?
Приведите результат выполнения следующих SQL-операторов выборки информа- ции из базы данных винного погреба, представленной в табл. 1.1.
а) SELECT WINE, PRODUCER FROM CELLAR
WHERE BINt = 72 ?
б) SELECT WINE, PRODUCER FROM CELLAR
WHERE YEAR > 1996 ;
в) SELECT BINt, WINE, YEAR FROM CELLAR
WHERE READY < 1999 ;
r) SELECT WINE, BINt, YEAR FROM CELLAR
WHERE PRODUCER = 'Robt. Mondavi' AND BOTTLES > 6 ;
Дайте собственную словесную интерпретацию типичной строки по каждому из от- ветов к упр. 1.6, представив ее в виде истинного высказывания.
Приведите результат выполнения следующих SQL-операторов внесения изменений в базу данных винного погреба, представленную в табл. 1.1.
a) INSERT
INTO CELLAR (BIN*, WINE, PRODUCER, YEAR, BOTTLES, READY ) VALUES (80, 'Syrah', 'Meridian', 1994, 12, 1999 );
б) DELETE FROM CELLAR
WHERE READY > 2000 ;
в) UPDATE CELLAR SET BOTTLES = 5 WHERE ВЩ = 50 ;
r) UPDATE CELLAR
SET BOTTLES = BOTTLES + 2 WHERE BINI = 50 ;
1.9. Напишите SQL-оператор для выполнения следующих операций в базе данных вин- ного погреба.
а) Выберите номер ячейки (ВШ#), наименование вина и количество бутылок для всех вин производства 'Geyser Peak'.
б) Выберите номер ячейки (BINI) и наименование вина для всех вин, запас кото- рых составляет более пяти бутылок.
в) Выберите номер ячейки (BINt) для всех красных вин.
г) Добавьте три бутылки (BOTTLES) в ячейку (BIN#) с номером 30.
д) Удалите из всего запаса все вина производства компании 'Chardonnay'.
е) Добавьте данные нового поступления (12 бутылок): производитель— 'Gary Farrell', сорт— 'Merlot', ячейка номер 55, год выпуска— 1996, будет гото- во в 2001 году.
1.10. Предположим, что у вас есть коллекция записей классической музыки, содер- жащаяся на компакт-дисках, пластинках и/или аудиокассетах, и вы хотите по- строить базу данных, которая позволит находить записи определенного компо- зитора (например, Сибелиуса), дирижера (например, Симона Ратла), солиста (например, Артура Грюмикса), произведения (например, Пятой симфонии Бет- ховена), оркестра (например, NYPO), вида произведения (например, концерта для виолончели) или камерной группы (например, квартета Кронус). Начерти- те диаграмму "сущность-связь" для этой базы данных по образцу, представ- ленному на рис. 1.5.
Список литературы
1.1. Codd E.F. Data Models in Databases Management // Proc. Workshop on Data Abstraction, Database and Conceptual Modelling.— Pingree Park, Colo, June, 1980. (ACM SIGART Newsletter. — January, 1981, №74; ACM SIGMOD Record 11.— February, 1981, N° 2; ACM SIGPLAN Notices 16. — January, 1981, № 1.) Кодд является создателем реляционной модели, которую он впервые описал в [5.1]. Однако в этой работе он на самом деле не дал определения термину модель данных как таковому, оно было дано (гораздо позже) лишь в данной работе. В ней рассматривается вопрос "Каково назначение моделей данных вообще и реляцион- ной модели в частности?", а также приводятся факты, подтверждающие, что во- преки распространенному мнению реляционная модель фактически стала первой
моделью данных, которая вообще была определена. (Иначе говоря, у Кодда есть право называться создателем концепции модели данных вообще, а также реляци- онной модели в частности.)
1.2. Darwen Н. What a Database Really Is: Predicates and Propositions // Date C.J., Darwen H., and McGoveran D. Relational Database Writings 1994-1997.— Reading, Mass.: Addison-Wesley, 1998.
В этой статье дается неформальное, но точное объяснение идеи (которая кратко обсуждалась в конце раздела 1.3), содержащей утверждение, что базу данных луч- ше представлять как набор истинных высказываний.
Date C.J. and Hopewell P. Storage Structures and Physical Data Independence // Proc. ACM SIGFIDET Workshop on Data Definition, Access, and Control. — San Diego, California, November, 1971.
Date C.J. and Hopewell P. File Definition and Logical Data Independence // Proc. ACM SIGFIDET Workshop on Data Definition, Access, and Control. — San Diego, California, November, 1971,
Статьи [1.3], [1.4] являются первыми письменными работами, в которых было оп- ределено различие между физической и логической независимостью данных.
1.5. Date C.J. Relation Database Writtings 1991-1994. —Reading, Mass.: Addison-Wesley, 1995.
Ответы к некоторым упражнениям
1.3. Перечислим некоторые недостатки.
" Без надлежащего контроля защита данных может оказаться ослабленной.
■ Целостность данных может быть подвергнута риску (без надлежащего контроля). " Может потребоваться дополнительное аппаратное обеспечение.
Дополнительная нагрузка на вычислительную систему может оказаться весьма значительной.
Успешное выполнение операции становится критически важным (предприятие может оказаться весьма уязвимым по отношению к сбоям системы).
Система, вероятно, будет сложной (хотя такие сложности должны быть скрыты от конечного пользователя).
1.6. Вариант а:
|
WINE |
PRODUCER |
|
Zinfandel |
Rafanelli |
|
Вариант б: | |
|
WINE |
PRODUCER |
|
Chardonnay |
Buena Vista |
|
Chardonnay |
Geyser Peak |
|
Jo. Riesling |
Jekel |
|
Fumft Blanc |
Ch. St. Jean |
|
Gewurztraminer |
Ch. St. Jean |
Приведем
решение только для п. а:
"Компания
Rafanelli является изготовителем
вина
Zinfandel" или, более точно, "Некоторые
ячейки содержат некоторые бутылки
с
вином Zinfandel, которое было изготовлено
компанией Zinfandel в некотором го-
ду, и
они будут готовы к употреблению в
некотором году".Вариант а: добавление в таблицу CELLAR строки со значением 80 в поле BINI.
Вариант б: удаление из таблицы CELLAR строк со значениями 45, 48, 64 и 72 в поле BINt. Вариант в: количество бутылок (поле BOTTLES) устанавливается равным пяти для строки со значением 50 в поле BINt.
Вариант г: то же, что и вариант в.
Кстати, обратите внимание, как удобно обращаться к строкам по их первичному ключу (первичный ключ для таблицы CELLAR— поле BINt) (подробности приво- дятся в главе 8).
1.9. Ниже приведены соответствующие операторы.
а) SELECT BINt, WINE, BOTTLES FROM CELLAR
WHERE PRODUCER = 'Geyser Peak' ;
б) SELECT BINI, WINE FROM CELLAR
WHERE BOTTLES > 5 ;
в) SELECT BINI FROM CELLAR
WHERE WINE = 'Cab. Sauvignon' OR WINE = 'Pinot Noir' OR WINE = 'Zinfandel' OR WINE = 'Syrah' OR ;
На этот вопрос нет краткого ответа, так как цвет вина не записан в базе данных в явном виде, и поэтому СУБД не знает, что, например, вино 'Pinot Noir' красное.
г) UPDATE CELLAR
SET BOTTLES = BOTTLES + 3 WHERE BIN* = 30 ;
д) DELETE FROM CELLAR
WHERE WINE = 'Chardonnay' ;
е) INSERT
INTO CELLAR (BIN*, WINE, PRODUCER, YEAR, BOTTLES, READY ) VALUES (55, 'Merlot', 'Gary Farrell', 1996, 12, 2001 );
Глава
Архитектура системы баз данных
