Álgebra relacional

Seleção

Em uma relação RR, a operação de seleção (σ\sigma) é aplicada para escolher um subconjunto de tuplas que satisfaçam uma determinada condição de seleção, fazendo uma partição horizontal da relação. Ou seja: a operação de seleção é um filtro que seleciona apenas as tuplas que atendem a uma determinada condição.

Em geral, seu uso é expresso da seguinte forma:

σ<condic¸a˜o de selec¸a˜o>(R){\sigma_{\text{<condição de seleção>}}}(R)

Como podemos observar acima, a operação de seleção é unária, se aplicando portanto a uma única relação.

Importante dizer também que todos os operadores (=,<,,>,,{=, <, ≤, >, ≥, ≠}) podem ser aplicados aos atributos. Os de comparação de ordem (maior ou menor) se aplicam aos atributos cujos domínios são valores ordenados, como domínios numéricos ou de data.

Exemplos

Vamos observar a relação abaixo, que contém dados sobre servidores.

SERVIDOR

🔑 siape (PK)nomesalariocpfuf
1234567Francisco Alves RibeiroR$ 14.512,23000.000.000-00MT
4578912Mariana Gois SoaresR$ 21.201,25111.111.111-11SP
5621456Pedro da SilvaR$ 1.1521,54222.222.222-22GO
3453613Joana GonçalvesR$ 4.556,20333.333.333-33MT

Nesta relação, podemos encontrar apenas os servidores cuja remuneração seja superior a um valor como, por exemplo, 10.00010.000. Neste caso, aplicamos a seguinte operação de seleção:

σsalario10000(SERVIDOR){\sigma_{\text{salario}\geq10000}}(SERVIDOR)

Ao aplicarmos a operação de seleção na relação acima, obteremos o seguinte resultado:

🔑 siape (PK)nomesalariocpfuf
1234567Francisco Alves RibeiroR$ 14.512,23000.000.000-00MT
4578912Mariana Gois SoaresR$ 21.201,25111.111.111-11SP

Agora, vamos imaginar que precisamos selecionar os servidores cujo salário é superior a 10.00010.000, mas que também sejam residentes do estado de Mato Grosso. Neste caso, aplicamos o operador lógico AND para a operação, que passa a ser representada por:

σsalario10000 AND uf=“MT”(SERVIDOR)\sigma_{\text{salario} \geq 10000 \ \text{AND} \ \text{uf} = \text{``MT''}}(\text{SERVIDOR})

Agora, o resultado da operação seria:

🔑 siape (PK)nomesalariocpfuf
1234567Francisco Alves RibeiroR$ 14.512,23000.000.000-00MT

Podemos ajustar ainda incluir outra condição:

σ(salario10000 AND uf=“MT”)OR(uf = “GO”)(SERVIDOR)\sigma_{(\text{salario} \geq 10000 \ \text{AND} \ \text{uf} = \text{``MT''}) \text{OR} (\text{uf = ``GO''})}(\text{SERVIDOR})

🔑 siape (PK)nomesalariocpfuf
1234567Francisco Alves RibeiroR$ 14.512,23000.000.000-00MT
5621456Pedro da SilvaR$ 1.1521,54222.222.222-22GO

Nem tudo é o que o parece

Muitos estudantes já familiarizados com a linguagem SQL podem confundir a operação de seleção com o SELECT *.... Entretanto, este comando está relacionado à operação de projeção.

O comando SQL equivalente ao operador de seleção da álgebra relacional, na realidade, é o WHERE.