■ ■BBBBBBB кортежи не упорядочены сверху вниз;
■ ■BBBBBBB атрибуты не упорядочены слева направо;
■ ■BBBBBBB все значения атрибутов атомарные.
1. 1.BBBBBB Нет одинаковых кортежей.
Это свойство следует из того факта, что тело отношения — это математическое
множество (кортежей), а множества в математике по определению не содержат
одинаковых элементов.
Между прочим, первое свойство служит хорошей иллюстрацией того, что
отношение и таблица — это не одно и то же, так как таблица (в общем случае)
может содержать одинаковые строки при отсутствии правил, запрещающих это, в то
время как отношение не может содержать одинаковых кортежей. (Потому
"отношение", содержащее одинаковые кортежи, не будет отношение по
определению) К большому сожалению, стандарт SQL допускает, чтобы таблицы
содержали одинаковые строки. Здесь было бы неуместным обсуждать все причины
того, почему одинаковые строки — это ошибка (развернутое обсуждение этого
вопроса приводится в [4.5,4.11]); для наших целей достаточно остановиться на том,
что реляционная модель не допускает одинаковых строк; здесь и далее в этой книге
мы также предполагаем, что одинаковые строки не допустимы. (Это замечание
касается в основном обсуждения языка SQL в главе 8. При рассмотрении самой
реляционной модели, конечно, никаких предположений делать не надо.)
Важным следствием того факта, что не существует одинаковых строк, является
то, что всегда существует первичный ключ
3[3]
. Так как кортежи уникальны, то по
крайней мере комбинация всех атрибутов будет обладать свойством уникальности, а
значит, при необходимости может служить первичным ключом. На практике,
конечно, обычно нет необходимости использовать все атрибуты — подходит
комбинация из нескольких атрибутов. В главе 5 будет дано определение первичного
ключа, как не включающего в себя атрибуты, излишние с точки зрения
уникальности; поэтому, например, комбинация {S#,CITY} хотя и "уникальна", но
она не является первичным ключом, так как мы можем убрать атрибут CITY, не
нарушив уникальности. (Однако заметьте, что первичные ключи могут быть
составными. Примером тому может служить отношение SP.)
1. 2.BBBBBB Кортежи не упорядочены (сверху вниз).
Это свойство также следует из того, что тело отношения — это математическое
множество, а простые множества в математике не упорядочены. Например, на рис.
4.1 кортежи отношения S могли быть расположены в противоположном порядке —
это было бы тем же самым отношением. Поэтому в отношении нет понятий "пятого
кортежа", “97-го кортежа" или "первого кортежа"; т.е. нет понятия позиционной
адресации и понятия "последовательности".
4[4]
В статье [4.11], которая уже
3[3]
Точнее, всегда существует по крайней мере один потенциальный ключ. Мы предполагаем, что
один из потенциальных ключей выбран как первичный. Дальнейшее обсуждение этого вопроса
приведено в главе 5.
4[4]
Понятие "последовательности" требуется для интерфейса между реляционной базой данных и
базовым языком, таким как С или COBOL. Но это требование для базовых языков, а не для
реляционной модели. В сущности, эти языки требуют, чтобы неупорядоченные множества были
преобразованы в упорядоченные таким образом, чтобы могли выполняться операции типа
"вызвать следующий кортеж". Заметьте также, что такие возможности составляют часть
прикладного программного интерфейса—они не видны конечному пользователю.