- •Содержание
- •5.1. Краткий обзор истории реляционной модели.
- •5.2. Используемая терминология.
- •5.2.1. Структура реляционных данных.
- •5.2.2. Математические отношения.
- •5.2.3 Отношения в базе данных.
- •5.2.4. Свойства отношений.
- •5.2.5 Реляционные ключи.
- •5.2.6. Представление схем в реляционной базе данных.
- •Контрольные вопросы:
5.2.4. Свойства отношений.
Отношение обладает следующими характеристиками.
Отношение имеет имя, которое отличается от имен всех других отношений.
Каждая ячейка отношения содержит только атомарное (неделимое) значение.
Каждый атрибут имеет уникальное имя.
Значения атрибута берутся из одного и того же домена.
Порядок следования атрибутов не имеет никакого значения.
Каждый кортеж является уникальным, т.е. дубликатов кортежей быть не может.
Теоретически порядок следования кортежей в отношении не имеет никакого значения. (Однако на практике этот порядок может существенно повлиять на эффективность доступа к ним.)
Для иллюстрации смысла этих ограничений давайте снова рассмотрим отношение BookAuthors, показанное на рис. 5.1. Поскольку каждая ячейка должна содержать только одно значение, то не допускается хранение в одной и той же ячейке двух номеров телефона одного и того же отделения компании. Иначе говоря, отношения не могут содержать повторяющихся групп. Об отношении, которое обладает таким свойством, говорят, что оно нормализовано, или находится в первой нормальной форме. О нормализации поговорим позднее.
Имена столбцов, указанные в их верхней строке, соответствуют именам атрибутов отношения. Значения атрибута Code берутся из домена AllCode — не допускается размещение в этом столбце иных значений, например даты рождения. Столбцы можно менять местами при условии, что имя атрибута перемещается вместе с его значениями. Таблица все еще будет представлять то же отношение, если атрибут Patronymic расположить в ней перед атрибутом FamilyName, хотя для лучшей читабельности разумнее было бы располагать отчество за именем.
Отношение не может содержать кортежей-дубликатов. Например, строка (1, Тихонов, Олег, Николаевич, NULL, NULL, BLOB, blob) может быть представлена в отношении только один раз. При необходимости строки можно менять местами произвольным образом (например, переместить строку с кодом '1' на место строки с кодом '5'), само отношение при этом останется прежним.
Большая часть свойств отношений происходит от свойств математических отношений.
Поскольку отношение является множеством, то порядок элементов не имеет значения. Следовательно, порядок кортежей в отношении несущественен.
В множестве нет повторяющихся элементов. Аналогично, отношение не может содержать кортежей-дубликатов.
При вычислении декартового произведения множеств с простыми однозначными элементами (например, целочисленными значениями), каждый элемент в каждом кортеже имеет единственное значение. Аналогично, каждая ячейка отношения содержит только одно значение. Однако математическое отношение не нуждается в нормализации. Кодд предложил запретить наличие повторяющихся групп с целью упрощения реляционной модели данных.
Набор возможных значений для данной позиции отношения определяется множеством, или доменом, на котором определяется эта позиция. В таблице все значения в каждом столбце должны происходить от одного и того же домена, определенного для данного атрибута.
Однако в математическом отношении порядок следования элементов в кортеже имеет значение. Например, допустимая пара значений (1, 2) совершенно отлична от допустимой пары (2, 1). Это утверждение неверно для отношений в реляционной модели, где специально оговаривается, что порядок атрибутов несущественен. Дело в том, что заголовки столбцов однозначно определяют, к какому именно атрибуту относится данное значение. Следствием этого факта является положение о том, что порядок следования заголовков столбцов в заголовке отношения несущественен. Однако, если структура отношения уже определена, то порядок элементов в кортежах тела отношения должен соответствовать порядку имен атрибутов.