Отношение (реляционная модель)
Отноше́ние — фундаментальное понятие реляционной модели данных, из-за которого модель и называется «реляционной», от англ. relation — «отношение».
Определение и свойства отношения
[править | править код]Пусть дана совокупность типов данных T1, T2, …, Tn, называемых также доменами, не обязательно различных. Тогда n-арным отношением R, или отношением R степени n называют подмножество декартовa произведения множеств T1, T2, …, Tn[1][2].
Отношение R состоит из заголовка (схемы) и тела. Заголовок представляет собой множество атрибутов (именованных вхождений домена в заголовок отношения), а тело — множество кортежей, соответствующих заголовку[2]. Более строго:
- Заголовок (или схема) H отношения R — конечное множество упорядоченных пар вида (Ai, Ti), где Ai — имя атрибута, а Ti — имя типа (домена), i=1,…, n. По определению требуется, чтобы все имена атрибутов в заголовке отношения были различными (уникальными).
- Тело B отношения R — множество кортежей t. Кортеж t, соответствующий заголовку H, — множество упорядоченных триплетов (троек) вида <Ai, Ti, vi>, по одному такому триплету для каждого атрибута в H, где vi — допустимое значение типа (домена) Ti. Так как имена атрибутов уникальны, то указание домена в кортеже обычно излишне. Поэтому кортеж t, соответствующий заголовку H, нередко определяют как множество пар (Ai, vi).
Количество кортежей называют кардинальным числом отношения (кардинальностью), или мощностью отношения.
Количество атрибутов называют степенью, или «арностью» отношения; отношение с одним атрибутом называется унарным, с двумя — бинарным и т. д., с n атрибутами — n-арным. С точки зрения теории вполне корректным является и отношение с нулевым количеством атрибутов, которое либо не содержит кортежей, либо содержит единственный кортеж без компонент (пустой кортеж)[2].
Основные свойства отношения[1][2]:
- В отношении нет двух одинаковых элементов (кортежей).
- Порядок кортежей в отношении не определён.
- Порядок атрибутов в заголовке отношения не определён.
Подмножество атрибутов отношения, удовлетворяющее требованиям уникальности и минимальности (несократимости), называется потенциальным ключом. Поскольку все кортежи в отношении по определению уникальны, в любом отношении должен существовать по крайней мере один потенциальный ключ.
Пример
[править | править код]Пусть заданы следующие типы (домены):
- = {Иванов, Петров, Сидоров}
- = {Физика, Химия}
- = {3, 4, 5}
Тогда декартово произведение состоит из 18 кортежей, где каждый кортеж содержит три значения: первое — одна из фамилий, второе — учебная дисциплина, а третье — оценка.
Пусть отношение R имеет заголовок H: { (Фамилия, T1), (Дисциплина, T2), (Оценка, T3)}.
Тогда тело отношения R может моделировать реальную ситуацию и содержать пять кортежей, которые соответствуют результатам сессии (при условии, что Петров экзамен по физике не сдавал). Отобразим отношение в виде таблицы:
R | ||
---|---|---|
Фамилия | Дисциплина | Оценка |
Иванов | Физика | 4 |
Иванов | Химия | 3 |
Петров | Химия | 5 |
Сидоров | Физика | 5 |
Сидоров | Химия | 4 |
Отношения и их представление в виде таблиц
[править | править код]Отношение обычно имеет простую графическую интерпретацию в виде таблицы, столбцы которой соответствуют атрибутам, а строки — кортежам, а в «ячейках» находятся значения атрибутов в кортежах. Тем не менее, в строгой реляционной модели отношение не является таблицей, кортеж — это не строка, а атрибут — это не столбец[2][3]. Термины «таблица», «строка», «столбец» могут использоваться только в неформальном контексте, при условии полного понимания, что эти более «дружественные» термины являются всего лишь приближением и не дают точного представления о сути обозначаемых понятий[2][4].
В соответствии с определением К. Дж. Дейта, таблица является прямым и верным представлением некоторого отношения, если она удовлетворяет следующим пяти условиям:
- Нет упорядочивания строк сверху вниз (другими словами, порядок строк не несёт в себе никакой информации).
- Нет упорядочивания столбцов слева направо (другими словами, порядок столбцов не несёт в себе никакой информации).
- Нет повторяющихся строк.
- Каждое пересечение строки и столбца содержит ровно одно значение из соответствующего домена (и больше ничего).
- Все столбцы являются обычными. «Обычность» всех столбцов таблицы означает, что в таблице нет «скрытых» компонентов, которые могут быть доступны только в вызове некоторого специального оператора взамен ссылок на имена регулярных столбцов, или которые приводят к побочным эффектам для строк или таблиц при вызове стандартных операторов. Таким образом, например, строки не имеют идентификаторов, кроме обычных значений потенциальных ключей (без скрытых «идентификаторов строк» или «идентификаторов объектов»). Они также не имеют скрытых временны́х меток[5].
Отношения и таблицы в SQL
[править | править код]В декларативном языке программирования SQL, который применяется для управления реляционными базами данных, вместо отношений используется концепция таблиц. SQL-таблицы сходны с отношениями, каждая строка SQL-таблицы представляет собой кортеж, а столбец соответствует атрибуту. В то же время SQL-таблицы не являются отношениями в точном смысле по следующим причинам[6]:
- в отношении недопустимы дубликаты кортежей, тогда как в SQL-таблице стандарт допускает строки-дубликаты (SQL-таблица не является множеством строк);
- в отношении порядок атрибутов неважен, в SQL-таблице порядок столбцов имеет значение, в частности, в выражениях SQL возможны ссылки на столбцы по номерам;
- в табличных выражениях SQL допуcкаются столбцы без имени и дублирующиеся имена столбцов.
Операции над отношениями
[править | править код]Любая операция, результатом которой является отношение, попадает под понятие реляционной операции и может использоваться в реляционной теории и практике. Ниже приведён список из восьми операций, изначально предложенных создателем реляционной модели Эдгаром Коддом. Все операции из списка, кроме деления, по-прежнему широко востребованы, однако список не является исчерпывающим, то есть по факту используется гораздо большее число реляционных операций.
- Объединение — тело отношения-результата является объединением тел отношений-операндов; схема не изменяется.
- Пересечение — тело отношения-результата является пересечением тел отношений-операндов; схема не изменяется.
- Вычитание — тело отношения-результата получено вычитанием тел отношений-операндов; схема не изменяется.
- Проекция — схема отношения-результата является подмножеством схемы отношения-операнда; тело отношения-результата является нестрогим подмножеством тела отношения-операнда вследствие возможного удаления кортежей-дубликатов.
- Декартово произведение — тело отношения-результата является декартовым произведением тел отношений-операндов; схема результата является конкатенацией схем операндов.
- Выборка — тело отношения-результата является подмножеством тела отношения-операнда: отбираются лишь те кортежи, которые удовлетворяют заданному предикату (условию выборки); схема не изменяется.
- Соединение — выборка над декартовым произведением.
- Деление — делитель является унарным отношением, частное — совпадающие части кортежей делимого, перед которыми стоит делитель.
Примечания
[править | править код]- ↑ 1 2 Дейт К. Дж., 2005.
- ↑ 1 2 3 4 5 6 Database in Depth, 2005.
- ↑ В частности, ничто не препятствует визуально представить отношение таблицей, в которой столбцы будут соответствовать не атрибутам, а кортежам, а строки — не кортежам, а атрибутам. То есть соотнесение кортежей отношения со строками таблицы, а атрибутов отношения со столбцами таблицы является лишь данью традиции, но не имеет никакой теоретической обусловленности.
- ↑ Необходимо помнить, что «таблица» чаще всего означает не «отношение» как абстрактное понятие, а визуальное представление отношения на бумаге или экране. Некорректное и нестрогое использование термина «таблица» вместо термина «отношение» нередко приводит к недопониманию. Наиболее частая ошибка состоит в рассуждениях о том, что реляционная модель данных имеет дело с «плоскими», или «двумерными» таблицами, тогда как таковыми могут быть только визуальные представления таблиц. Отношения же являются абстракциями, и не могут быть ни «плоскими», ни «неплоскими».
- ↑ С. J. Date. What First Normal Form Really Means //С. J. Date. Date on database: Writings 2000—2006, Apress, 2006, ISBN 978-1-59059-746-0
- ↑ O’Reilly Network Архивировано 3 мая 2007 года. An Interview with Chris Date
Литература
[править | править код]- Когаловский М.Р. Энциклопедия технологий баз данных. — М.: Финансы и статистика, 2002. — 800 с. — ISBN 5-279-02276-4.
- Кузнецов С. Д. Основы баз данных. — 2-е изд. — М.: Интернет-университет информационных технологий; БИНОМ. Лаборатория знаний, 2007. — 484 с. — ISBN 978-5-94774-736-2.
- Дейт К. Дж. Введение в системы баз данных = Introduction to Database Systems. — 8-е изд. — М.: Вильямс, 2005. — 1328 с. — ISBN 5-8459-0788-8 (рус.) 0-321-19784-4 (англ.).
- Коннолли Т., Бегг К. Базы данных. Проектирование, реализация и сопровождение. Теория и практика = Database Systems: A Practical Approach to Design, Implementation, and Management. — 3-е изд. — М.: Вильямс, 2003. — 1436 с. — ISBN 0-201-70857-4.
- Гарсиа-Молина Г., Ульман Дж., Уидом Дж. Системы баз данных. Полный курс = Database Systems: The Complete Book. — Вильямс, 2003. — 1088 с. — ISBN 5-8459-0384-X.
- C. J. Date. Date on Database: Writings 2000–2006. — Apress, 2006. — 566 с. — ISBN 978-1-59059-746-0, 1-59059-746-X.
- Date, C. J. Database in Depth. — O'Reilly, 2005. — 240 с. — ISBN 0-596-10012-4.