На практике часто требуется определить, является ли данное отношение пустым (т.е. не содержащим ни одного кортежа). Поэтому имеет смысл ввести сокращение. Определим такую функцию, возвращающую логическое значение:
IS _ ЕМРТУ (expression)
Эта функция возвращает истину, если вычисленное значение expression пустое, и ложь в противном случае.
Также часто требуется проверить, есть ли данный кортеж t в данном отношении R. Предположим, можно построить отношение, содержащее только один данный кортеж, заключив его в фигурные скобки; тогда нам подойдет следующее сравнение:
{ t } ≤ R
Однако для пользователя более удобно следующее сокращение (знакомое читателям, знающим язык SQL):
t IN R
Здесь IN заменяет оператор принадлежности, обычно обозначаемый є
Резюме
Данная глава посвящается реляционной алгебре. В начале главы обсуждалась важность замкнутости и вложенных выражений; затем выяснилось, что при серьезном подходе к понятию замкнутости необходимы правила наследования имен атрибутов. Здесь же вскользь были упомянуты правила наследования потенциальных ключей.
|
|
Начальная алгебра состоит из восьми операций: набора традиционных операций объединения, пересечения, вычитания и произведения и набора специальных реляционных операций выборки, проекции, соединения и деления. К этому изначальному набору операций мы добавили операции RENAME (переименование), EXTEND (расширение) и SUMMARIZE (подведение итогов). Некоторые из этих операций требуют, чтобы два оператора были совместимы по типу (ранее такие отношения назывались "совместимыми для объединения"). Здесь же подчеркивалось, что эти операции не все примитивны (некоторые из них можно определить посредством других). Далее было показано, как эти операции можно комбинировать в выражения, используемые для выборки, обновления и др. Также кратко обсуждалась идея преобразования этих операций с целью оптимизации (подробнее эта идея будет обсуждаться далее в книге). Рассматривалась возможность пошагового подхода при выполнении сложных запросов.
Реляционная модель также включает в себя операцию реляционного присвоения, которую можно использовать в качестве основы для операций обновления. Отмечалось,
что эти операции выполняются на уровне множеств и должны контролироваться с помощью предиката для рассматриваемого отношения. И наконец, обсуждалась идея реляционных сравнений, которые часто упрощают выражение запросов.