Выбор (реляционная алгебра)

редактировать

В реляционной алгебре, a выбор (иногда называется ограничением в связи с работой EF Codd 1970 года, а не, вопреки распространенному мнению, во избежание путаницы с использованием SQL SELECT, поскольку Статья Кодда предшествовала существованию SQL) - это унарная операция, которая обозначает подмножество отношения.

Выбор записывается как σ a θ b (R) {\ displaystyle \ sigma _ {a \ theta b} (R)}\ sigma _ {a \ theta b} (R) или σ a θ v (R) {\ displaystyle \ sigma _ {a \ theta v} (R)}\ sigma _ {a \ theta v} (R) где:

  • a и b - имена атрибутов
  • θ - это двоичный операция в наборе {<, ≤, =, ≠, ≥,>} {\ displaystyle \ {\; <,\leq,=,\neq,\geq,\;>\}}\{\;<,\leq,=,\neq,\geq,\;>\}
  • v - константа значения
  • R - отношение

Выбор σ a θ b (R) {\ displaystyle \ sigma _ {a \ theta b} (R)}\ sigma _ {a \ theta b} (R) обозначает все кортежи в R, для которых θ выполняется между a и атрибут b.

Выбор σ a θ v (R) {\ displaystyle \ sigma _ {a \ theta v} (R)}\ sigma _ {a \ theta v} (R) обозначает все кортежи в R для которого θ находится между атрибутом a и значением v.

В качестве примера рассмотрим следующие таблицы, где первая таблица дает отношение Person, вторая таблица дает результат σ Age ≥ 34 (Pe rson) {\ displaystyle \ sigma _ {{\ text {Age}} \ geq 34} ({\ text {Person}})}{\ displaystyle \ sigma _ {{\ text {Age}} \ geq 34} ({\ текст {Человек}})} , а третья таблица дает результат σ Age = Вес (человек) {\ displaystyle \ sigma _ {\ text {Age}} = {\ text {Weight}}} ({\ text {Person}})}{\ displaystyle \ sigma _ {{\ text {Age}} = {\ text {Weight}}} ({\ text {Person}})} .

Person {\ displaystyle {\ text {Person} }}{\ displaystyle {\ text {Person}}} σ Возраст ≥ 34 (человек) {\ displaystyle \ sigma _ {{\ text {Age}} \ geq 34} ({\ text {Person}})}{\ displaystyle \ sigma _ {{\ text {Age}} \ geq 34} ({\ текст {Человек}})} σ Возраст = вес (человек) {\ displaystyle \ sigma _ {{\ text {Age}} = {\ text {Weight}}} ({\ text {Person}})}{\ displaystyle \ sigma _ {{\ text {Age}} = {\ text {Weight}}} ({\ text {Person}})}
ИмяВозрастВес
Гарри3480
Салли2864
Джордж2970
Елена5454
Петр3480
ИмяВозрастВес
Гарри3480
Хелена5454
Питер3480
ИмяВозрастВес
Хелена5454

Более формально семантика выбора определяется следующим образом:

σ a θ b (R) = {t: t ∈ R T (а) θ T (b)} {\ Displaystyle \ sigma _ {a \ theta b} (R) = \ {\ t: t \ in R, \ t (a) \ \ theta \ t (b) \ \}}{\ displaystyle \ sigma _ {a \ theta b} (R) = \ {\ t: t \ in R, \ t (a) \ \ theta \ t ( б) \ \}}
σ a θ v (R) = {t: t ∈ R, t (a) θ v} {\ displaystyle \ sigma _ {a \ theta v} (R) = \ {\ t: t \ in R, \ t (a) \ \ theta \ v \ \}}{\ displaystyle \ sigma _ {a \ theta v} (R) = \ {\ t: t \ in R, \ t (a) \ \ theta \ v \ \}}

Результат выбора определяется только в том случае, если имена атрибутов, которые он упоминает, находятся в заголовке отношения, с которым он работает.

Содержание
  • 1 Обобщенный выбор
  • 2 Компьютерные языки
  • 3 Ссылки
  • 4 Внешние ссылки
Обобщенный выбор

A общий выбор - это унарная операция записывается как σ φ (R) {\ displaystyle \ sigma _ {\ varphi} (R)}\ sigma_ \ varphi (R) , где φ {\ displaystyle \ varphi}\ varphi - это пропозициональная формула, которая состоит из атомов, как разрешено при обычном выборе, и, кроме того, логических операторов ∧ (и ), ∨ (или ) и ¬ {\ displaystyle \ lnot}\ lnot (отрицание ). Этот выбор выбирает все те кортежи в R, для которых выполняется φ {\ displaystyle \ varphi}\ varphi .

В качестве примера рассмотрим следующие таблицы, в которых первая таблица дает отношение Person, а вторая - результат σ Возраст ≥ 30 ∧ Вес ≤ 60 (человек) {\ displaystyle \ sigma _ {{{{ \ text {Возраст}} \ geq 30 \ \ land \ {\ text {Weight}} \ leq 60} ({\ text {Person}})}{\ displaystyle \ sigma _ {{\ text {Age}} \ geq 30 \ \ land \ {\ text {Weight}} \ leq 60} ({\ text {Person}})} .

Person {\ displaystyle {\ text {Person}}}{\ displaystyle {\ text {Person}}} σ Возраст ≥ 30 ∧ Вес ≤ 60 (человек) {\ displaystyle \ sigma _ {{\ text {Age}} \ geq 30 \ \ land \ {\ text {Weight}} \ leq 60} ({\ text { Человек}})}{\ displaystyle \ sigma _ {{\ text {Age}} \ geq 30 \ \ land \ {\ text {Weight}} \ leq 60} ({\ text {Person}})}
ИмяВозрастВес
Гарри3480
Салли2864
Джордж2970
Хелена5454
Питер3480
ИмяВозрастВес
Хелена5454

Формально семантика обобщенного выбора определяется следующим образом:

σ φ (R) = {t: t ∈ R, φ (t)} {\ displaystyle \ sigma _ {\ varphi} (R) = \ {\ t: t \ in R, \ \ varphi (t) \ \}}{\ displaystyle \ sigma _ {\ varphi} (R) = \ {\ t: t \ in R, \ \ varphi (t) \ \}}

Результат выбора определяется только в том случае, если атрибут name Упомянутые в нем отношения относятся к отношениям, над которыми он работает.

Обобщенный выбор можно выразить с помощью других основных алгебраических операций. Симуляция обобщенного выбора с использованием основных операторов определяется следующими правилами:

σ φ ∧ ψ (R) = σ φ (R) ∩ σ ψ (R) {\ displaystyle \ sigma _ {\ varphi \ land \ psi} (R) = \ sigma _ {\ varphi} (R) \ cap \ sigma _ {\ psi} (R)}{\ displaystyle \ sigma _ {\ varphi \ land \ psi} (R) = \ sigma _ {\ varphi} (R) \ cap \ sigma _ { \ psi} (R)}
σ φ ∨ ψ (R) = σ φ (R) ∪ σ ψ (R) {\ displaystyle \ sigma _ {\ varphi \ lor \ psi} (R) = \ sigma _ {\ varphi} (R) \ cup \ sigma _ {\ psi} (R)}{\ displaystyle \ sigma _ {\ varphi \ lor \ psi} (R) = \ sigma _ {\ varphi} (R) \ cup \ sigma _ { \ psi} (R)}
σ ¬ φ (R) = Р - σ φ (R) {\ displaystyle \ sigma _ {\ lnot \ varphi} (R) = R- \ sigma _ {\ varphi} (R)}{\ displaystyle \ sigma _ {\ lnot \ varphi } (R) = R- \ s igma _ {\ varphi} (R)}
компьютерные языки

In На компьютерных языках ожидается, что любое выражение с истинным значением будет разрешено в качестве условия выбора, а не ограничивается простым сравнением.

В SQL выбор выполняется с использованием определений WHERE в SELECT , UPDATE и DELETE , но обратите внимание, что условие выбора может привести к любому из трех значений истинности (истина, ложь и неизвестно) вместо обычных двух.

В SQL общий выбор выполняется с использованием определений WHERE с AND, ORили NOTв операторах SELECT , UPDATE и DELETE .

Ссылки
Внешние ссылки
Последняя правка сделана 2021-06-07 09:16:26
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте