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:

250px|thumb|right|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 Nome Idade Crédito_pessoal Jonathan 21 1350,00 Leticia 20 850,00 João 62 5450,00 R2 Apelido Acessos Total_compras Zé 84 200,00 Sara 1023 8850,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 Nome Conta João 1 Maria 2 José 3 R2 Nome Empréstimo Paulo 100 Maria 200 Carlos 300

Nome João José

R1 x y z 1 1 1 1 2 2 2 2 3 3 1 1 R2 x y z 1 1 1 1 2 1 3 1 1

x y z 1 2 2 2 2 3

Exemplos em SQL

Dadas as seguintes relações:

medico cpf nome codigo 12332112332 Jonathan 123 32165498712 Leticia 212 09876543210 Juçara 321 paciente cpf nome codigo quarto 12332112332 João 938 456 32165498712 Maria 059 234 09876543210 José 549 234

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

Categoria:Teoria dos conjuntos