- •Часть 2. Реляционная модель.
- •Глава 4. Реляционные объекты данных: домены и отношения.
- •4.1. Вводный пример
- •4.2. Домены
- •4.3. Отношения
- •4.4. Виды отношений
- •4.5. Отношения и предикаты
- •4.6. Реляционные базы данных
- •4.7. Резюме
- •Глава 8.
- •8.1. Введение
- •8.2. Определение данных
- •8.3. Обработка данных: операции выборки
- •8.3.1. Получить цвета и города для деталей "не из Парижа" с весом, большим десяти
- •8.3.2. Для всех деталей получить номер детали и ее вес в граммах
- •8.3.3. Получить полную информацию обо всех поставщиках
- •8.3.4. Получить информацию обо всех парах поставщиков и деталей, совмещенных в одном городе
- •8.3.5. Получить все пары имен городов, таких что поставщик, находящийся в первом городе, поставляет деталь, хранящуюся во втором городе
- •8.3.6. Получить все пары номеров поставщиков, таких что оба поставщика в каждой паре размещаются в одном и том же городе
- •8.3.7. Получить общее число поставщиков
- •8.3.8. Получить максимальное и минимальное количество для детали р
- •8.3.9. Для каждой поставляемой детали получить номер детали и общее количество поставки
- •8.3.10. Получить номера для всех деталей, поставляемых более чем одним поставщиком
- •8.3.11. Получить имена поставщиков, поставляющих деталь р2
- •8.3.12. Получить имена поставщиков, поставляющих по крайней мере одну красную деталь
- •8.3.13. Получить номера поставщиков, статус которых меньше текущего максимального статуса в таблице s
- •8.3.14. Получить имена поставщиков, поставляющих деталь р2
- •8.3.15. Получить имена поставщиков, которые не поставляют деталь р2
- •8.3.16. Получить имена поставщиков, поставляющих все детали
- •8.3.17. Получить номера деталей, которые или весят более 16 фунтов, или поставляются поставщиком s2, или и то и другое
- •8.4. Обработка данных: операции обновления
- •Table-term
- •I join-table-expression
- •8.6. Условные выражения
- •8.7. Скалярные выражения
- •8.8. Встроенный sql
- •8.8.1. Единичный select. Получить статус и город для поставщика, чей номер поставки задан базовой переменной givens#
- •8.8.2. Insert. Вставить новую деталь в таблицу р (номер детали, ее назв. И вес определены базовыми переменными р#, pname, pwt соответственно, цвет и город неизвестны)
- •8.8.3, Update. Увеличить статус всех поставщиков из Лондона на значение, определенное базовой переменной raise
- •8.8.4. Delete. Удалить все поставки для поставщиков из города,
- •8.9. Резюме
Часть 2. Реляционная модель.
Основой современной технологии баз данных, без сомнения, является реляционная модель; именно эта основа делает область технологии баз данных наукой. Поэтому любое описание этой области, не охватывающее описание модели, может быть лишь поверхностным. Точно так же умение или опыт в этой области нельзя признать удовлетворительными, если человек не имеет глубокого представления о реляционной модели. Поспешим добавить — мы вовсе не хотим сказать, что этот материал труден для понимания, просто он представляет основу.
Как уже отмечалось в главе 3, в реляционной модели рассматриваются три аспекта данных — структура данных (объекты данных), целостность данных и обработка данных (операторы). В этой части книги рассматривается каждый из трех аспектов: в главе 4 обсуждаются объекты, в главе 5 — целостность, в главах 6 и 7 — операторы. (Мы посвятили последней теме две главы, поскольку операционную часть модели можно реализовать двумя различными, но эквивалентными способами, известными соответственно как реляционная алгебра и реляционное исчисление.) Назначение главы 8 будет описано ниже.
Замечание. Важно понимать, что модель не статична, она изменилась с годами и, конечно, продолжает изменяться. Определения, описания и объяснения в этой книге отвечают современным взглядам автора и других специалистов в этой области. Однако следует отметить, что хотя большая часть обсуждаемого материала действительно является "нерушимой скалой" (упомянутые выше изменения носят эволюционный, а не революционный характер), все еще существуют темы для разногласий. Такие темы соответствующим образом отмечены в тексте.
Как отмечалось выше, реляционная модель не очень сложна для понимания. Но она является теорией, а большинство теорий сопровождается своей специальной терминологией, и реляционная модель (по причинам, указанным в главе 3) не является исключением. Конечно, мы будем интенсивно использовать эту терминологию в настоящей части книги. Нельзя отрицать, что эта терминология может поначалу сбивать с толку читателя, но имейте терпение: возможно, все понятия станут очень простыми, как только вы освоите терминологию.
Как вы увидите, главы этой части имеют очень большой объем (это практически книга в книге). Но такой объем отвечает важности материала и необходимости предоставить расширенное (или даже исчерпывающее) его изложение. Возможно, читатель предпочтет осваивать материал по одному разделу, а не по целой главе. Конечно, можно было представить обзор модели на одной или двух страницах; действительно, сила реляционного подхода в том, что основные идеи легки для объяснения и понимания. Однако одно- или двухстраничное изложение не позволит полностью раскрыть все стороны предмета и проиллюстрировать широкие возможности применения данной модели. Значительный объем этой части не следует считать следствием сложности модели, скорее это дань ее важности и тому, что она является основой для многочисленных перспективных разработок.
И, наконец, относительно главы 8. Как мы уже говорили в части I, несмотря на многочисленные недостатки языка SQL (в частности, несмотря на тот факт, что ему очень далеко до настоящего выполнения требований реляционной модели), практически каждый продукт баз данных из имеющихся сегодня на рынке поддерживает некоторую версию стандартного языка SQL. И поэтому ни один современный учебник по базам данных нельзя назвать полным, если в нем нет достаточно полного введения в этот язык; именно такое введение и является целью главы 8