2) Explique a Operação SELECT e PROJECT. Quando usar, Para que usar, Como usar, diferenças, etc.
A operação SELECT é usada para selecionar um subconjunto de tuplas de uma relação. Estas tuplas devem satisfazer uma condição de seleção. O operador SELECT é unário; isto é, ele é aplicado somente a uma relação. Assim, o SELECTnão pode ser usado para selecionar tuplas de mais de uma relação. Note-se também que a operação de seleção é aplicada individualmente para cada tupla. Assim, as condições de seleção não podem ser aplicadas a mais que uma tupla. O grau da relação resultante é a mesma que a relação original. O número de tuplas da relação resultante é sempre menor ou igual ao número de tuplas da relação original.
Pensando na relação como uma tabela, então o operador SELECT seleciona algumas linhas da tabela enquanto descarta outras. O operador PROJECT, por outro lado, seleciona certas colunas da tabela e descarta outras. Se existir o interesse sobre certos atributos da relação, pode-se usar o PROJECT para “projetar” a relação sobre esses atributos. Por exemplo, suponha a necessidade de listar, para cada empregado, os atributos PNOME, SNOME e SALÁRIO; então pode-se usar o PROJECT como segue:
3) Explique a Operação UNION, INTERSECTION e DIFFERENCE. Quando usar, Para que usar, Como usar, etc
União (UNION): R U S
É outra relação Z que Inclui todas as tuplas da relação R e em S, ou em ambas, mas elimina as tuplas repetidas. Utilizar a operação união gera muitas vantagens e economiza muitas linhas de programação, essa operação permite reunir várias consultas num só resultado.
Intersecção (INTERSECTION): R ∩ S
É outra relação Z que inclui todas as tuplas que estão em ambas às relações R e S. É importante salientar que a diferença entre a primeira e segunda relação não é o mesmo do inverso, ou seja, da segunda pela primeira. Com isso podemos dizer que a operação de diferença não é comutativa.
Diferença (DIFFERENCE): R - S
É outra relação Z que inclui todas as tuplas de R, mas não em S
Note que as operações UNION e INTERSECTION são operações comutativas:
R U S = S U 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 U (S U T) = (R U S) U T, e
R ∩ (S ∩ T) = (R ∩ S) ∩ T.
A operação DIFFERENCE não é comutativa:
R - S ≠ S - R.
4) Explique a Operação CARTESIAN PRODUCT. Quando usar, Para que usar, Como usar, etc.
A operação CARTESIAN PRODUCT, denotada por x, é 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) x 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 RxS terá nR*nS tuplas. Para ilustrar, considere que se deseja recuperar para cada empregado do sexo feminino uma lista de nomes de seus dependentes.
5) Explique as Operações de junção (JOIN) e divisão (DIVISION). Quando usar, Para que usar, Como usar, etc
Operação de Junção (JOIN)
A operação de junção é utilizada para combinar tuplas de duas relações partindo dos atributos comuns a ambas. O resultado conterá as colunas das duas relações que estão participando da junção. Esta operação é de extrema importância em bancos de dados relacionais, pois é através dela que nos é permitido fazer relacionamento.
Representação gráfica:
Simbologia: |x|
Sintaxe: (Relação 1) |x|
Obs.: Uma condição de junção pode ser formada por mais de uma condição simples, apenas aplicando os operadores relacionais AND ou OR.
Exemplo utilizando as seguintes relações:
ALUNOS
nome | sobrenome | turma |
Cecília | Ortiz Rezende | 2TI |
João | da Silva | 1TI |
Laura | Nogueira | 2TI |
Elaine | Cristina | 2TI |
TURMAS
cod_turma | descricao |
1TI | 1º Módulo - Informática |
2TI | 2º Módulo - Informática |
1TA | 1º Módulo - Administração |
2TA | 2º Módulo - Administração |
ALU_TUR <----- ALUNOS |x| TURMA=cod_turma TURMAS, resulta em:
nome | sobrenome | turma | cod_turma | descricao |
Cecília | Ortiz Rezende | 2TI | 2TI | 2º Módulo - Informática |
João | da Silva | 1TI | 1TI | 1º Módulo - Informática |
Laura | Nogueira | 2TI | 2TI | 2º Módulo - Informática |
Elaine | Cristina | 2TI | 2TI | 2º Módulo - Informática |
E finalmente, podemos usar um conjunto de operações para trazer, por exemplo, apenas os alunos que cursam o 1 º módulo de Informática:
RESULT <----- cod_turma >=1TI ( NOME, SOBRENOME, DESCRICAO (ALUNOS |x| TURMA=COD_TURMA TURMAS)), que resulta em:
nome | sobrenome | descricao |
Cecilia | Ortiz Rezende | 2º Módulo - Informática |
Laura | Nogueira | 2º Módulo - Informática |
Elaine | Cristina | 2º Módulo - Informática |
Existe mais de uma operação (JOIN).
INNER JOIN
NNER JOIN (junção interna) é uma operação JOIN que permite especificar uma cláusula de junção explícita. Permite juntar informações de duas tabelas.
Sintaxe
ExpressãoTabela [ INNER ] JOIN ExpressãoTabela { ON ExpressãoBooleana }
LEFT OUTER JOIN
LEFT OUTER JOIN é uma operação JOIN permite especificar a cláusula de junção. Preserva as linhas sem correspondência da primeira tabela (esquerda), juntando-as com uma linha nula na forma da segunda tabela (direita).
Sintaxe
ExpressãoTabela LEFT [ OUTER ] JOIN ExpressãoTabela
{
ON ExpressãoBooleana
}
RIGHT OUTER JOIN
RIGHT OUTER JOIN é uma operação JOINque permite especificar a cláusula de junção. Preserva as linhas sem correspondência da segunda tabela (direita), juntando-as com uma linha nula na forma da primeira tabela (esquerda). (A LEFT OUTER JOIN B) é equivalente a (B RIGHT OUTER JOIN A), com as colunas em uma ordem diferente.
Sintaxe
ExpressãoTabela RIGHT [ OUTER ] JOIN ExpressãoTabela
{
ON ExpressãoBooleana
}
Operação de Divisão (DIVISION)
É uma operação adicional que produz como resultado a projeção de todos os elementos da primeira relação que se relacionam com todos os elementos da segunda relação. Não é um operador primitivo, mas pode ter o resultado obtido por uma combinação de operadores primitivos.
Representação gráfica:
Símbologia: ÷
Sintaxe: (Relação 1) ÷ (Relação 2)
Exemplo utilizando as seguintes relações:
EQUIPE
id_emp | cod_proj |
17206-2 | 001 |
12584-7 | 002 |
16764-6 | 001 |
17206-2 | 002 |
15698-3 | 003 |
17206-2 | 003 |
PROJETOS
cod_proj | descricao |
001 | Sistema IRPF |
002 | Sistema RH |
003 | Sistema Banco |
FUNCIONARIO
id_emp | nome | cargo |
17206-2 | Jorge | Analista |
12584-7 | Paula | Programadora |
16764-6 | Frederico | DBA |
15698-3 | Heloisa | Web Master |
Imaginemos a situação em queremos saber quais os funcionários que trabalham em todos os projetos:
RESULT <----- ( COD_PROJ (PROJETOS)) ÷ ( ID_EMP, COD_PROJ (EQUIPE)), que resulta em:
id_emp |
17206-2 |
6-)Explique as Operações de AGREGAÇÃO. Quando usar, Para que usar, Como usar, etc.
Agregação: As funções de agregação operam em conjunto de linhas, de modo que fornecem
um resultado por grupo (tabela ou parte da tabela).
O operador de agrupamento reune as tuplas em grupos sobre os quais podem ser aplicadas funções agregadas.
As funções de agregação mais comuns são SOMA (SUM), MÉDIA(AVG), MÁXIMO(MAX), MÍNIMO(MIN) e CONTAR(COUNT).
Exemplos:
Considerando a relação: R1 (C1, C2,C3), o agrupamento pode ser aplicado da seguinte maneira:
C1 ? C1, SUM(C2) (R1)
Expressão a ser resolvida conforme os passos a seguir:
As tuplas da relação R1 são particionadas em grupos, conforme o valor de C1. Ou seja, as tuplas que possuírem o mesmo valor em C1 serão reunidas em um grupo. Caso não exista coluna informada na lista de colunas agrupadoras, apenas um grupo com todas as tuplas da relação é formado.
Para cada grupo, uma nova tupla é produzida. Caso nenhuma coluna projetada ou função tenha sido informada, a tupla será composta apenas pelos valores resultantes do agrupamento. Caso contrário, a nova tupla será composta por:
As colunas projetadas.
A aplicação das funções agrupadoras ao grupo. No exemplo, para cada grupo, a coluna C2 será somada, produzindo o valor da nova tupla.
Outros exemplos:
C3 ? (R1)
Produz uma nova relação agrupando os valores da coluna C3.
? MAX(C3) (R1)
Produz uma nova relação com apenas uma tupla, contendo o maior valor da coluna C3.
C1 ? C1, SUM(C3)->SOMA (R1)
Produz uma nova relação a partir do agrupamento das tuplas a partir da coluna C1, contento a coluna C1 e o resultado da soma da coluna C3 renomeado para SOMA.