segunda-feira, 30 de novembro de 2009

Normalização

1-Quais são as diretrizes informais para o projeto de esquema de relações? Explique resumidamente cada uma.

Semântica de Atributos: verifica se o atributo caracteriza (pertence) mesmo aquela entidade.

Informações Redundantes ou Anomalias de Atualização: verifica se os atributos geram redundância e, portanto desperdício de espaço.

Valor Null em Tuplas: uma relação degenerada (“Tabelão”) pode causar valores Null, o que prejudica a interpretação dos dados.

Não Permissão de Tuplas Espúrias: tabelas degeneradas, quando relacionadas podem gerar informações/dados errôneos (Tuplas espúrias).


2-Quais são as métricas de qualidade informal para projeto de esquemas de relações? Explique resumidamente cada uma delas.

São 4 diretrizes:
• Semântica de atributos.
Projete um esquema de relação de tal forma que seja fácil explicar o seu significado semântico.

• Redução de valores redundantes em tuplas.
Minimizam o espaço de armazenamento que as relações ocupam.

• Redução de valores nulos em tuplas.
Se muitos atributos não são aplicados a varias tuplas, ficam com muitos valores nulos, provocando desperdício de espaço.

• Não permissão de tuplas espúrias.
Projete esquemas de relação de tal forma que as junções entre as relações correspondentes possam ser feitas através de condições de igualdade sobre atributos que são chaves primárias ou chaves estrangeiras de forma a garantir a não geração de tuplas espúrias.

3-O que é e para que serve o conceito de dependência funcional? Quais são os tipos de dependência? Explique-os


Dependência funcional: para existir o destino (dependência → chave estrangeira) tem que existir a origem (chave primária). O atributo deve realmente caracterizar a relação.
É uma propriedade da semântica ou do significado dos atributos. Formalmente, uma dependência funcional entre dois conjuntos de atributos, x e y, que são subconjuntos de um esquema de relação R, denotada por x® y é uma restrição que estabelece que para quaisquer tuplas t1 e t2 de uma instância r de R, tal que, se temos t1[x] = t2[x], então também devemos ter que t1[y] = t2[y]. Em outras palavras, os valores do componente y em uma tupla de r dependem de (ou são determinados por) valores do componente x.
Se A determina B então B não é funcionalmente dependente de nenhum subconjunto de A.
Uma dependência funcional é representada por:
A --> B A _ denominado determinante.

4-O que é e para que serve normalização de dados relacionais? Quando será utilizada a normalização na maioria das vezes?


Normalização é o processo pelo qual formamos um bd fora do padrão do M-Rel, num bd normalizado (dentro do padrão M-Rel). Normalmente é usado em bd antigos ou criado por pessoa não técnica.

5-O que são e quantas são as formas formais de relação? Explique-as resumidamente. Para manter eficiência e a simplicidade de processamento em certos casos podemos normalizar as relações até a 3ºFN por quê?

O objetivo da normalização de um banco de dados é evitar os problemas que podem provocar falhas no projeto do banco de dados, bem como eliminar a mistura de assuntos e as correspondentes redundâncias dos dados desnecessárias. O processo de normalização aplica uma série de regras sobre as tabelas (também chamadas de relações) de um banco de dados, para verificar se estão corretamente projetadas.

Primeira Forma Normal (1FN)
A primeira forma normal é agora genericamente considerada como parte da definição formal de uma relação; historicamente foi definida para não permitir atributos multivalorados, compostos e suas combinações.

Segunda Forma Normal (2FN):
Um esquema de relação está na 2FN se: estiver na 1FN e, além disso, todo atributo que não pertença a alguma de suas chaves for totalmente dependente da sua chave primária. Em outras palavras, para que uma relação esteja na 2FN é preciso que esteja na 1FN e que, havendo uma chave primária composta, todos os dados que não são chaves dependem de toda a chave primária (a chave primária completa).

Terceira Forma Normal (3FN):
Um esquema de relação está na 3FN se: estiver na 2FN e, além disso, nenhum atributo que não pertença a alguma das suas chaves for transitivamente dependente da sua chave primária. Em outras palavras, para que uma relação esteja na 3FN é preciso que esteja na 2FN e todo atributo, que não pertença a alguma chave for não dependente de algum outro atributo, que também não pertença a alguma chave.


6-Dê exemplos de normalizações de uma relação.

FUNCIONÁRIOS = {CODFUNC + NOME + CARGO + {PROJETO + DATAINI + DATA FIM}}
Para colocar na 1FN:
FUNCIONÁRIOS = {CODFUNC + NOME + CARGO}
FUNC_PROJ = {CODFUNC + PROJETO + DATAINI + DATA FIM}

Comandos e Conceitos do SQL

1_O que significa a sigla SQL? Qual a finalidade dessa linguagem? Como ela se divide? Quais são os comandos principais de cada divisão? Explique-os resumidamente.

SQL (estructured query language) linguagem de consulta estruturada.
• Desenvolvida na década de 70 pela IBM para bd relacionais com o nome de Sequel.
• Surgiu para padronizar a manipulação dos dados de bd.
• Padronizada pela ANSI e pela ISO em 92,99 e 2003.
• Em 99 incorporou os conceitosde trigger, stored procedure, consultas recursivas e orientação a objetos.

DIVISÃO:
• DDL (data defition linguage) linguagem de definição de dados, responsável pela criação da estrutura do bd

Principais comandos:
• Creat cria
• Drop apaga
• Alter altera
* Objetos (tabelas, views ,procedures e etc)

• DML (data manipulation language) linguagem de manipulação de dados, responsável pela entrada e saída de dados

Principais comandos:
• Insert insere
• Delete deleta
• Update altera
* Dados na tabela

• DCL (data control language) linguagem de controle de dados, responsável pela segurança nos SGBD

Comandos:
• Grant atribuir autoriza
• Revoke retira desautoriza
*permissão a manipulação dos dados.


2_Quais são os tipos de dados que a linguagem SQL padrão (ANSI) suporta? Explique cada um resumidamente.

A SQL estabeleceu-se como linguagem padrão de Banco de Dados Relacional. SQL apresenta uma série de comandos que permitem a definição dos dados, chamada de DDL (Data Definition Language), composta entre outros pelos comandos Create, que é destinado a criação do Banco de Dados, das Tabelas que o compõe, além das relações existentes entre as tabelas. Como exemplo de comandos da classe DDL temos os comandos Create, Alter e Drop. Os comandos da série DML (Data Manipulation Language), destinados a consultas, inserções, exclusões e alterações em um ou mais registros de uma ou mais tabelas de maneira simultânea. Como exemplo de comandos da classe DML temos os comandos Select, Insert, Update e Delete. Uma subclasse de comandos DML, a DCL (Data Control Language), dispõe de comandos de controle como Grant e Revoke.


3_Explique o comando SELECT. Sua sintaxe, características básicas, Cláusula Where, operadores, conectores, subconsultas, funções de agregação, cláusula order by, group by, having e compute by.

SELECT: Instrui o programa principal do banco de dados para retornar a informação como um conjunto de registros.

Sintaxe

SELECT [predicado { * | tabela.* | [tabela.]campo1 [AS alias1] [, [tabela.]campo2 [AS alias2] [, ...]]}
FROM expressãotabela [, ...] [IN bancodedadosexterno]
[WHERE... ]
[GROUP BY... ]
[HAVING... ]
[ORDER BY... ]
[WITH OWNERACCESS OPTION]

A cláusula "where" corresponde ao operador restrição da álgebra relacional. Contém a condição que as tuplas devem obedecer a fim de serem listadas. Ela pode comparar valores em colunas, literais, expressões aritméticas ou funções.


Operadores lógicos

Operador Significado
= --> igual a
> --> maior que
>= --> maior que ou igual a
< --> menor que
<= --> menor que ou igual a





Demais Operadores

Operador Significado
between ... and ... entre dois valores ( inclusive )
in ( .... ) lista de valores
like com um padrao de caracteres
is null é um valor nulo

Operadores Negativos

operador descrição
<> diferente
not nome_coluna = diferente da coluna
not nome_coluna > não maior que
not between não entre dois valores informados
not in não existente numa dada lista de valores
not like diferente do padrao de caracteres informado
is not null não é um valor nulo


Funções Agregadas (ou de Agrupamento)

função retorno
avg(n) média do valor n, ignorando nulos
count(expr) vezes que o número da expr avalia para algo nao nulo
max(expr) maior valor da expr
min(expr) menor valor da expr
sum(n) soma dos valores de n, ignorando nulos

As Sub-Consultas

Uma sub-consulta é um comando "select" que é aninhado dentro de outro "select" e que devolve resultados intermediários.

A cláusula "HAVING" pode ser utilizada para especificar quais grupos deverão ser exibidos, portanto restringindo-os.

GROUP BY é opcional. Valores de resumo são omitidos se não houver qualquer função aggregate SQL na instrução SELECT. Os valores Null nos campos GROUP BY são agrupados e não omitidos. No entanto, os valores Null não são avaliados em qualquer função aggregate SQL. Use a cláusula WHERE para excluir linhas que você não quer agrupadas e use a cláusula HAVING para filtrar os registros após eles terem sido agrupados.

ORDER BY é opcional. Entretanto, se você quiser exibir seus dados na ordem classificada, você deve utilizar ORDER BY. O padrão ordem de classificação é ascendente (A a Z, 0 a 9). Os dois exemplos abaixo classificam os nomes dos funcionários pelo sobrenome.

4_O que é uma visão (view) em SQL? Explique suas propriedades, utilidades e os comandos para a sua manipulação.

Uma visão (view) é uma forma alternativa de olhar os dados contidos em uma ou mais tabelas. Para definir uma visão, usa-se um comando SELECT que faz uma consulta sobre as tabelas. A visão aparece depois como se fosse uma tabela.
Visões têm as seguintes vantagens:
* Uma visão pode restringir quais as colunas da tabela que podem ser acessadas (para leitura ou para modificação)
* Uma consulta SELECT que é usada muito freqüentemente pode ser criada como visão. Com isso, a cada vez que ela é necessária, basta selecionar dados da visão.
* Visões podem conter valores calculados ou valores de resumo, o que simplifica a operação.
Uma visão pode ser usada para exportar dados para outras aplicações.

Criando uma visão com comandos SQL

Para criar uma visão através de SQL, use o comando CREATE VIEW. Esse comando tem a seguinte sintaxe:
CREATE VIEW nome_visão [(coluna [,...n])]
[WITH ENCRYPTION]
AS
declaração_SELECT
[WITH CHECK OPTION]

5_O que são procedimentos armazenados (stored procedure)? Para que servem, o que eles permite fazer e quais comandos podemos utilizar no seu corpo e para criá-los?

Procedimento armazenado ou Stored Procedure é uma coleção de comandos em SQL para dispensamento de Banco de dados. Encapsula tarefas repetitivas, aceita parâmetros de entrada e retorna um valor de status (para indicar aceitação ou falha na execução). O procedimento armazenado pode reduzir o tráfego na rede, melhorar o desempenho, criar mecanismos de segurança, etc.

Stored procedures são criadas através do comando CREATE PROCEDURE que tem a seguinte sintaxe:

CREATE PROCEDURE NomedaProcedure

RETURNS

AS

BEGIN

END
Os parâmetros de entrada permitem à aplicação cliente passar os valores que serão usados para modificar o comportamento da stored procedure. Por exemplo, se o objetivo da stored procedure é calcular o total mensal da folha de pagamento para a um determinado departamento, o número do departamento deverá ser passado para a stored procedure como um parâmetro de entrada. Parâmetros de saída ou de retorno são é o meio pelo qual a
stored procedure retorna informações para a aplicação cliente. Em nosso exemplo, o total da folha de pagamento mensal para o departamento passado deverá ser retornado em um parâmetro de saída. Um parâmetro pode ser de qualquer tipo de dados do Firebird exceto BLOB ou ARRAY.


6_O que são gatilhos (TRIGGERS)? Para que servem, quais as vantagens na sua utilização, como funcionam e como criá-los?

O gatilho define um conjunto de ações a serem executadas quando ocorre um evento de banco de dados em uma determinada tabela. O evento de banco de dados é uma operação de exclusão, inserção ou de atualização. Por exemplo, se for definido um gatilho para exclusão em uma determinada tabela, a ação do gatilho ocorre sempre que se remove uma ou mais linhas da tabela.
Junto com as restrições, os gatilhos podem ajudar a impor regras de integridade com ações como exclusões ou atualizações em cascata. Os gatilhos também podem realizar várias funções como emitir alertas, atualizar outras tabelas, enviar e-mail, e outras ações úteis.
Pode ser definido qualquer número de gatilhos para uma única tabela, inclusive vários gatilhos para a mesma tabela para o mesmo evento.
Pode ser criado gatilho em qualquer esquema, exceto os começados por SYS. O gatilho não precisa residir no mesmo esquema da tabela para a qual é definido.
Se for especificado um nome de gatilho qualificado, o nome do esquema não poderá começar por SYS.
Vantagens
• Redução na manutenção das aplicações cliente.
• Você pode implementar um relatório de modificações para as tabelas.
• Generator's podem ser chamados automaticamente e seus valores atribuídos a campos.
• Notificação automática das aplicações pelo uso de Eventos.
Sintaxe básica

CREATE [OR ALTER] TRIGGER nome FOR nomedatabela
[ACTIVE | INACTIVE]
{BEFORE | AFTER} {INSERT | UPDATE | DELETE}
[OR {INSERT | UPDATE | DELETE}
[OR {INSERT | UPDATE | DELETE}]]
[POSITION numero]
AS

Comandos e Conceitos do SQL - Exercícios


Para resolver os exercícios abaixo, será necessário conhecer o programa ERWIN, cujos manuais estão na área de trabalho, conhecer um Sistema (ou) Gerenciador de Banco de Dados (SQL Server, Oracle, Access, Firebird, Interbase e etc). Caso não conheça realize somente a etapa 4.

Traduza ou Realize as consulta dos exercícios feitos em Álgebra Relacional para os comandos SQL, treinando assim a sua utilização.


--> SELEÇÃO

1-Mostre o conteúdo da relação departamento.
R: SELECT * FROM DEPARTAMENTO

2- Mostre os empregados que trabalham no departamento 4.

R: SELECT * FROM EMPREGADO WHERE NDEP = 4

3-Mostre a(s) localização(ões) do departamento de pesquisa (5).

R: SELECT * FROM LOCAIS-DEPTO WHERE DNÚMERO = 5

4-Mostre o(s) projetos(s) do departamento 4.

R: SELECT * FROM PROJETO WHERE DNUM = 4


5- Mostre as informações de relação trabalha_em cujo número do projeto igual a 3.

R: SELECT * FROM TRABALHA_EM WHERE PNRO = 3



--> PROJEÇÃO

1-Mostre o número e o nome dos dependentes

R: SELECT NSSENP, NOMEDEPENDENTE FROM DEPENDENTE

2- Mostre o nome e a localização dos projetos.

R: SELECT PNOME, PLOCALIZAÇÃO FROM PROJETO

3-Mostre o nome e o código do gerente dos departamentos.

R: SELECT DNOME, SNNGER FROM DEPARTAMENTO

4-Mostre o nome e a data de nascimento dos empregados.

R: SELECT PNOME, DATANASC FROM EMPREGADO

5-Mostre o nome e o salário dos empregados.

R: SELECT PNOME, SALARIO FROM EMPREGADO


--> SELEÇÃO + PROJEÇÃO

1-Mostre o código, nome e o salário dos empregados que ganham mais de 2500.

R: SELECT NSS, PNOME, SALARIO FROM EMPREGADO WHERE SALARIO > 2500

2- Mostre o nome e a localização dos projetos do departamento 5.

R: SELECT PNOME, PLOCALIZAÇÃO FROM PROJETO WHERE DNUM = 5

3- Mostre o número do empregado e o número do projeto cujas horas são maiores que 10.
R: SELECT NSSEMP, PNRO FROM TRABALHA_EM WHERE HORAS > 10.0

4-Mostre o nome e o sexo do dependente cujo número do empregado é igual a 123456789.
R: SELECT NOMEDEPENDENTE, SEXO FROM DEPENDENTE WHERE NSSEMP = 123456789

5-Mostre o nome, relação e a data do aniversário dos dependentes cujo número do empregado é igual a 333445555.

R: SELECT NOMEDEPENDENTE, RELAÇÃO, DATANIV FROM DEPENDENTE WHERE NSSEMP = 333445555


--> Junção


1-Mostre o nome e o salário do empregado e o nome e a relação dos seus dependentes.

R: SELECT PNOME, SALARIO FROM EMPREGADO INNER JOIN NOMEDEPENDENTE, RELAÇÃO FROM DEPENDENTE

2-Mostre o nome do departamento e o nome e o salário do empregado que é o seu gerente.

R: SELECT DNOME FROM DEPARTAMENTO INNER JOIN PNOME, SALARIO FROM EMPREGADO WHERE NSS = NSSGER

3-Mostre o nome do departamento e a sua localização.

R: SELECT DNOME FROM DEPARTAMENTO INNER JOIN DLOCALIZAÇÃO FROM LOCAIS_DEPTO

4-Mostre o nome do projeto, sua localização e o departamento ao qual pertence.

R: SELECT PNOME, PLOCALIZAÇÃO FROM PROJETO INNER JOIN DNOME FROM DEPARTAMENTO

5-Mostre o nome do empregado e o nome do projeto nos quais eles trabalharam.

R: SELECT PNOME FROM EMPREGADO INNER JOIN PNOME FROM PROJETO INNER JOIN TRABALHA_EM WHERE NSS = NSSEMP



--> Agregação


1-Mostre a quantidade de empregados do sexo masculino e a quantidade de empregados do sexo feminino.

R: SELECT COUNT SEXO FROM EMPREGADO GROUP BY SEXO


2-Mostre a quantidade de dependentes do sexo masculino e a quantidade de dependentes do sexo feminino do empregado cujo número é 123456789.

R: SELECT COUNT SEXO FROM DEPENDENTE WHERE NSSEMP = 123465789 GROUP BY SEXO

3-Mostre o nome e o salário do empregado e a quantidade de dependentes que possui.

R: SELECT PNOME, SALARIO FROM EMPREGADO INNER JOIN COUNT NOMEDEPENDENTE FROM DEPENDENTE

4-Mostre a despesa total de cada departamento com os salários dos empregados.

R: SELECT SUM SALARIO FROM EMPREGADO INNER JOIN DNUMERO FROM DEPARTAMENT WHERE NDEP =DNUMERO

5-Mostre a soma total das horas empregadas em cada projeto.

R: SELECT SUM HORAS FROM TRABALHA_EM GROUP BY PNRO








quinta-feira, 22 de outubro de 2009

Álgebra Relacional

1) Quantos e Quais são os grupos nos quais a álgebra relacional está dividida? Identifique quais operações pertencem a cada um deles.

As operações da álgebra relacional são normalmente divididas em dois grupos. O primeiro deles inclui um conjunto de operações da teoria de conjuntos. As operações são UNION, INTERSECTION, DIFFERENCE e CARTESIAN PRODUCT. O segundo grupo consiste de operações desenvolvidas especificamente para bases de dados relacionais, tais como: SELECT, PROJECT e JOIN entre outras

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:

SNOME, PNOME, SALÁRIO (EMPREGADO).


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| (Relação 2)
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.