- •Часть 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. Резюме
Глава 4. Реляционные объекты данных: домены и отношения.
4.1. Вводный пример
Домены
Отношение
К
А
Р
Д
Ч
И
И
Н
С
А
Л
Л
О
Ь
Н
О
Е
Рис. 4,1. Отношение поставщиков S
Итак, вкратце:
•Отношение соответствует тому, что мы до сих пор называли таблицей.
• Кортеж соответствует строке этой таблицы, а атрибут — столбцу. Количество кортежей называется кардинальным числом, а количество атрибутов — степенью.
• Первичный ключ — это уникальный идентификатор для таблицы, т.е. столбец или такая комбинация столбцов, что в любой момент времени не существует двух строк, содержащих одинаковое значение в этом столбце или комбинации столбцов.
• И, наконец, домен — это общая совокупность значений, из которой берутся настоящие значения для определенных атрибутов определенного отношения. Например, домен, обозначенный S# на рис. 4.1 — это множество всех допустимых значений номера поставщика, а множество значений S# в отношении S в любой момент времени является подмножеством этого множества. Точно так же множество значений S# в отношении SP в любой момент времени является подмножеством этого множества.
На рис. 4.2 представлен обзор этих терминов. Этот рисунок требует некоторых пояснений.
1. Нужно понимать, что "эквивалентности", показанные на рисунке, лишь приблизительны, так как реляционные термины, перечисленные слева, имеют точные определения, в то время как неформальные эквиваленты справа имеют лишь грубые, нестрогие определения.
Поэтому, например, отношение и таблица — это не одно и то же, хотя часто на практике удобно считать, что это так. (Далее в этой главе мы объясним точную разницу между отношением и таблицей.)
2. Понятие домена является иллюстрацией одного важного момента, о котором шла речь в главе 3, — не все реляционные системы поддерживают полностью все аспекты реляционной модели. На самом деле в главе 3 мы дали общее описание реляционных систем, не упоминая доменов вообще.
Формальный реляционный термин
|
Неформальный эквивалент
|
Отношение
|
Таблица
|
Кортеж
|
Строка или запись
|
Кардинальное число
|
Количество строк
|
Атрибут
|
Столбец или поле
|
Степень
|
Количество столбцов
|
Первичный ключ
|
Уникальный идентификатор
|
Домен
|
Общая совокупность допустимых значений
|
Рис. 4.2. Реляционные объекты данных: терминология
В действительности большинство современных реляционных систем не поддерживает домены в полной мере, несмотря на то, что они являются одной из фундаментальных составляющих реляционной модели в целом. Поэтому помните, что в следующих нескольких главах описывается только реляционная модель; поведение же реляционной системы совсем не обязательно соответствует описанному. Теперь перейдем к формальному изложению.