• Nenhum resultado encontrado

Operações da Teoria dos Conjuntos

No documento INTRODUÇÃO A BANCO DE DADOS (páginas 52-55)

7.1 ÁLGEBRA RELACIONAL

7.1.4 Operações da Teoria dos Conjuntos

O próximo grupo de operações da álgebra relacional são as operações matemáticas padrões sobre conjuntos. Elas se aplicam ao modelo relacional porque uma relação é definida como um conjunto de tuplas. Por exemplo, suponha a necessidade de se recuperar o número do seguro social de todos os empregados que trabalham no departamento 5 ou, diretamente supervisione um empregado que trabalha no departamento 5. Esta operação pode ser realizada usando o operador UNION.

DEP5_EMPS

← σ

NDEP=5 (EMPREGADO) RESULT1

← π

NSS(DEP5_EMPS)

RESULT2

(

NSS

)← π

NSSSUPER(DEP5_EMPS)

RESULT

RESULT1 ∪ RESULT2

A relação RESULT1 contém o número do seguro social de todos os empregados que trabalham no departamento 5. RESULT2 contém o número do seguro social de todos os empregados que diretamente supervisionam empregados que trabalham no departamento 5. A

operação UNION gera uma relação que contém tanto as tuplas de RESULT1 quanto de RESULT2. A Figura 7.3 ilustra este exemplo.

RESULT1 NSS RESULT2 NSS RESULT NSS

123456789 333445555 123456789

333445555 888665555 333445555

666884444 666884444

453453453 453453453

888665555

Figura 7.3 – Exemplo de aplicação do operador UNION.

Existem várias operações da teoria de conjuntos que são utilizadas para agrupar elementos de dois conjuntos, entre elas estão: UNION, INTERSECTION e DIFFERENCE. Estas operações são binárias; isto é, elas necessitam de dois conjuntos. Quando essas operações são adaptadas para a base de dados relacional, deve-se assegurar que essas operações resultem sempre em relações válidas. Para conseguir isso, as duas relações aplicadas a qualquer uma das três operações acima devem ter o mesmo tipo de tuplas; esta condição é chamada união compatível. Duas relações R(A1, A2, ..., An) e S(B1, B2, ..., Bn) são união compatível se elas tiverem o mesmo grau n, e dom(Ai)=dom(Bi) para 1 ≤ i ≤ n. Isso significa que as duas relações têm o mesmo número de atributos e que cada par de atributos correspondentes tem o mesmo domínio.

Pode-se definir as três operações UNION, INTERSECTION e DIFFERENCE sobre duas relações que sejam união compatível R e S:

• UNION ⎯ O resultado da operação, denotado por R ∪ S, é uma relação que inclui todas as tuplas de R e todas as tuplas de S. Tuplas duplicadas são eliminadas. • INTERSECTION ⎯ O resultado desta operação, denotado por R ∩ S, é a relação

que inclui todas as tuplas que são comuns a R e S.

• DIFFERENCE ⎯ O resultado desta operação, denotado por R - S, é a relação que inclui todas as tuplas de R, mas que não estão em S.

Note que as operações UNION e INTERSECTION são operações comutativas:

R ∪ S = S ∪ R, e R ∩ S = S ∩ R.

Estas operações podem ser aplicadas a qualquer número de relações, e ambas são associativas:

R ∪ (S ∪ T) = (R ∪ S) ∪ T, e R ∩ (S ∩ T) = (R ∩ S) ∩ T.

A operação DIFFERENCE não é comutativa: R - S ≠ S - R.

A operação CARTESIAN PRODUCT, denotada por χ, é também uma operação de conjunto binária, mas as relações sobre as quais são aplicadas não necessitam ser união compatível. Esta operação é usada para combinar tuplas de duas relações tal que tuplas relacionadas possam ser identificadas.

Em geral, o resultado de R(A1, A2, ..., An) χ S(B1, B2, ..., Bm) é a relação Q com n + m atributos Q(A1, A2, ..., An, B1, B2, ..., Bm) nesta ordem. A relação resultante Q tem uma tupla para cada combinação de tuplas. Assim, se R tem nR tuplas e S tem nS tuplas, então RχS terá nR*nS tuplas. Para ilustrar, considere que se deseja recuperar para cada empregado do sexo feminino uma lista de nomes de seus dependentes; isso pode ser feito da seguinte forma:

EMP_FEM

←σ

SEXO

=

'F' (EMPREGADO)

EMP_NOMES

←π

PNOME, SNOME, NSS (EMP_FEM) EMP_DEP

EMP_NOMES

χ

DEPENDENTE DEP_ATUAL

←σ

NSS

=

NSSEMP (EMP_DEP)

RESULT

←π

PNOME, SNOME, NOMEDEPENDENTE(DEP_ATUAL)

As tuplas geradas a partir da seqüência de operações acima são mostradas na Figura 7.4. A relação EMP_DEP é o resultado da operação CARTESIAN PRODUCT entre EMP_NOMES da Figura 7.4, e DEPENDENTE da Figura 5.4. Em EMP_DEP, cada tupla de EMP_NOMES é combinada com todas as tuplas de DEPENDENTE, gerando um resultado que não tem muito significado. Deseja-se apenas combinar tuplas de empregado feminino com seus dependentes, o que significa dizer: tuplas de DEPENDENTES onde os valores de NSSEMP são iguais aos valores de NSS de EMPREGADO. Em DEP_ATUAL, foi obtido isto.

O CARTESIAN PRODUCT cria tuplas com atributos combinados de duas relações. Pode-se então selecionar apenas as tuplas que estejam relacionadas especificando uma condição de seleção apropriada, como foi feita no exemplo. Devido à seqüência: CARTESIAN PRODUCT seguido de SELECT, ser muito comum para se identificar tuplas relacionadas de duas relações, uma operação especial JOIN foi criada para especificar esta seqüência como uma única operação. Assim, a operação CARTESIAN PRODUCT é raramente utilizada isoladamente.

EMP_FEM

PNOME MNOME SNOME NSS DATANASC ENDEREÇO SEXO SALARIO NSSSUPER NDEP Alicia J Zelaya 999887777 19-JUL-58 Av. C, 3 F 2500 987654321 4

Jennifer S Wallace 987654321 20-JUN-31 Trav. D, 4 F 4300 888665555 4 Joyce A English 453453453 31-JUL-62 R. F, 6 F 2500 333445555 5

EMP_NOMES PNOME SNOME NSS Alicia Zelaya 999887777 Jennifer Wallace 987654321 Joyce English 453453453 EMP_DEP

PNOME SNOME NSS NSSEMP NOMEDEPENDENTE SEXO DATANIV RELAÇÃO Alicia Zelaya 999887777 333445555 Alice F 05-ABR-76 FILHA Alicia Zelaya 999887777 333445555 Theodore M 25-OUT-73 FILHO Alicia Zelaya 999887777 333445555 Joy F 03-MAI-48 ESPOSA Alicia Zelaya 999887777 987654321 Abner M 29-FEV-78 MARIDO Alicia Zelaya 999887777 123456789 Michael M 01-JAN-78 FILHO Alicia Zelaya 999887777 123456789 Alice F 31-DEZ-78 FILHA Alicia Zelaya 999887777 123456789 Elizabeth F 05-MAI-57 ESPOSA Jennifer Wallace 987654321 333445555 Alice F 05-ABR-76 FILHA Jennifer Wallace 987654321 333445555 Theodore M 25-OUT-73 FILHO Jennifer Wallace 987654321 333445555 Joy F 03-MAI-48 ESPOSA Jennifer Wallace 987654321 987654321 Abner M 29-FEV-78 MARIDO Jennifer Wallace 987654321 123456789 Michael M 01-JAN-78 FILHO Jennifer Wallace 987654321 123456789 Alice F 31-DEZ-78 FILHA Jennifer Wallace 987654321 123456789 Elizabeth F 05-MAI-57 ESPOSA Joyce English 453453453 333445555 Alice F 05-ABR-76 FILHA Joyce English 453453453 333445555 Theodore M 25-OUT-73 FILHO Joyce English 453453453 333445555 Joy F 03-MAI-48 ESPOSA Joyce English 453453453 987654321 Abner M 29-FEV-78 MARIDO Joyce English 453453453 123456789 Michael M 01-JAN-78 FILHO Joyce English 453453453 123456789 Alice F 31-DEZ-78 FILHA Joyce English 453453453 123456789 Elizabeth F 05-MAI-57 ESPOSA

DEP_ATUAL

PNOME SNOME NSS NSSEMP NOMEDEPENDENTE SEXO DATANIV RELAÇÃO Jennifer Wallace 987654321 987654321 Abner M 29-FEV-78 MARIDO

RESULT

PNOME SNOME NOMEDEPENDENTE Jennifer Wallace Abner

No documento INTRODUÇÃO A BANCO DE DADOS (páginas 52-55)