Diferença (álgebra relacional)

Diferença:

É um operador da álgebra relacional e da teoria dos conjuntos matemáticos não comutativo cujo operandos (dois no total) devem ser união-compatíveis, ou seja, devem ter suas estruturas exatamente idênticas.

Sua definição formal é expressa por:

Ilustração da operação diferença entre os conjuntos A e B

Teoria de utilização

A utilização do operador diferença entre dois conjuntos distintos A e B onde os mesmos tenham estruturas totalmente compatíveis entre si, resultará em:

"Todas as linhas que existam em A mas não existam em B."

Observe que: é diferente de , pois a diferença é não comutativa.

União-compatibilidade e não comutatividade

União-compatibilidade

Assim como nos operadores união e intersecção, o operador diferença exige que as suas relações de entrada estejam compatibilizadas, para que então, possa ser possível o retorno de uma nova relação de saída.

Critérios para existência da união-compatibilidade em duas relações:

  • Mesmo número de campos;
  • Campos correspondentes ao mesmo domínio (o tipo do seu conteúdo, como por exemplo: inteiro, valor, texto, data, hora, etc.);

Exemplo de relações união-compatíveis:

R1

NomeIdadeCrédito_pessoal
Jonathan211350,00
Leticia20850,00
João625450,00

R2

ApelidoAcessosTotal_compras
84200,00
Sara10238850,00

Não comutatividade

Ao contrário dos operadores união e intersecção, o operador diferença possui a característica de ser não comutativo.

A não comutatividade é a definição para operações de conjuntos onde a ordem de entrada afeta o resultado, ou em outras palavras, é uma operação onde "a ordem dos fatores altera o resultado".

Para maiores definições leia o artigo sobre a comutatividade...

Exemplos de operação com conjuntos

R1

NomeConta
João1
Maria2
José3

R2

NomeEmpréstimo
Paulo100
Maria200
Carlos300

Nome
João
José

R1

xyz
111
122
223
311

R2

xyz
111
121
311

xyz
122
223

Exemplos em SQL

Dadas as seguintes relações:

medico

cpfnomecodigo
12332112332Jonathan123
32165498712Leticia212
09876543210Juçara321

paciente

cpfnomecodigoquarto
12332112332João938456
32165498712Maria059234
09876543210José549234

Buscar o CPF e o nome das pessoas que são médicos mas não são pacientes:


Utilizando o operador diferença:
SELECT cpf, nome FROM medico MINUS SELECT cpf, nome FROM paciente;


Não utilizando o operador diferença:
SELECT cpf, nome FROM medico WHERE NOT EXISTS (SELECT cpf, nome FROM paciente WHERE cpf=medico.cpf AND nome=medico.nome);

Referências

http://www.ltc.ufes.br - Álgebra Relacional

http://www.knowledgerush.com - Relational Algebra

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.