quarta-feira, 21 de novembro de 2012

Trabalho Final

BDI

Trabalho - (link para arquivo)


Faculdade de Educação São Luís - Jaboticabal/SP
Curso de Sistemas de Informação - 6º. Semestre


Integrantes do grupo do Trabalho Final
Fábio Anselmo de Moraes
Gildo Júnior
Junio Pimentel
Richard Nabuco
Vinicius Rafael

segunda-feira, 19 de novembro de 2012

COMANDOS E CONCEITOS DO SQL

01 - 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.

R: A sigla SQL significa Structured Query Language, ou Linguagem de Consulta Estruturada. SQL apresenta uma série de comandos que permitem à definição dos dados (chamada DDL – Data Definition Language), que é 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. Ela é dividida em:

DML - Linguagem de Manipulação de Dados - Primeiro há os elementos da DML (Data Manipulation Language). A DML é um subconjunto da linguagem usada para inserir, atualizar e apagar dados.

INSERT é usada para inserir um registro (formalmente uma tupla) a uma tabela existente.
UPDATE para mudar os valores de dados em uma ou mais linhas da tabela existente.
DELETE permite remover linhas existentes de uma tabela.

DDL - Linguagem de Definição de Dados - O segundo grupo é a DDL (Data Definition Language - Linguagem de Definição de Dados). Uma DDL permite ao utilizador definir tabelas novas e elementos associados. A maioria dos bancos de dados de SQL comerciais tem extensões proprietárias no DDL.

CREATE -  cria um objeto (uma Tabela, por exemplo) dentro da base de dados.
DROP - apaga um objeto do banco de dados.

DCL - Linguagem de Controle de Dados - O terceiro grupo é o DCL (Data Control Language - Linguagem de Controle de Dados). DCL controla os aspectos de autorização de dados e licenças de usuários para controlar quem tem acesso para ver ou manipular dados dentro do banco de dados.

Duas palavras-chaves da DCL:

GRANT - autoriza ao usuário executar ou setar operações.
REVOKE - remove ou restringe a capacidade de um usuário de executar operações.
Outros comandos DCL:

ALTER PASSWORD
CREATE SYNONYM
DTL - Linguagem de Transação de Dados

BEGIN WORK (ou START TRANSACTION, dependendo do dialeto SQL) pode ser usado para marcar o começo de uma transação de banco de dados que pode ser completada ou não.
COMMIT envia todos os dados das mudanças permanentemente.
ROLLBACK faz com que as mudanças nos dados existentes desde que o último COMMIT ou ROLLBACK sejam descartadas.

DQL - Linguagem de Consulta de Dados - Embora tenha apenas um comando, a DQL é a parte da SQL mais utilizada. O comando SELECT permite ao usuário especificar uma consulta ("query") como uma descrição do resultado desejado. Esse comando é composto de várias cláusulas e opções, possibilitando elaborar consultas das mais simples às mais elaboradas.


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


R: TINYINT: Valores numéricos inteiros variando de 0 até 256

SMALLINT: Valores numéricos inteiros variando de –32.768 até 32.767

INT: Valores numéricos inteiros variando de -2.147.483.648 até 2.147.483.647

BIGINT: Valores numéricos inteiros variando de –92.23.372.036.854.775.808 até 9.223.372.036.854.775.807

BIT: Somente pode assumir os valores 0 ou 1. Utilizado para armazenar valores lógicos.

DECIMAL(I,D) e NUMERIC(I,D): Armazenam valores numéricos inteiros com casas decimais utilizando precisão. I deve ser substituído pela quantidade de dígitos total do número e D deve ser substituído pela quantidade de dígitos da parte decimal (após a vírgula). DECIMAL e NUMERIC possuem a mesma funcionalidade, porém DECIMAL faz parte do padrão ANSI e NUMERIC é mantido por compatibilidade.

SMALLMONEY: Valores numéricos decimais variando de -214.748,3648 até 214.748,3647

MONEY: Valores numéricos decimais variando de -922.337.203.685.477,5808 até 922.337.203.685.477,5807

REAL: Valores numéricos aproximados com precisão de ponto flutuante, indo de -3.40E + 38 até 3.40E + 38

FLOAT: Valores numéricos aproximados com precisão de ponto flutuante, indo de -1.79E + 308 até 1.79E + 308

SMALLDATETIME: Armazena hora e data variando de 1 de janeiro de 1900 até 6 de junho de 2079. A precisão de hora é armazenada até os segundos.

DATETIME: Armazena hora e data variando de 1 de janeiro de 1753 até 31 de Dezembro de 9999. A precisão de hora é armazenada até os centésimos de segundos.

CHAR(N): Armazena N caracteres fixos (até 8.000) no formato não Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo é preenchido com espaços em branco.

VARCHAR(N): Armazena N caracteres (até 8.000) no formato não Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo não é preenchido.

TEXT: Armazena caracteres (até 2.147.483.647) no formato não Unicode. Se a quantidade de caracteres armazenada no campo for menor que 2.147.483.647, o resto do campo não é preenchido. Procure não utilizar este tipo de dado diretamente, pois existem funções específicas para trabalhar com este tipo de dado.

NCHAR(N): Armazenam N caracteres fixos (até 4.000) no formato Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo é preenchido com espaços em branco.

NVARCHAR(N): Armazenam N caracteres (até 4.000) no formato Unicode. Se a quantidade de caracteres armazenada no campo for menor que o tamanho total especificado em N, o resto do campo não é preenchido.

NTEXT: Armazena caracteres (até 1.073.741.823) no formato Unicode. Se a quantidade de caracteres armazenada no campo for menor que 1.073.741.823, o resto do campo não é preenchido. Procure não utilizar este tipo de dado diretamente, pois existem funções específicas para trabalhar com este tipo de dado.


03 - 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.


R: SELECT é usada para selecionar um subconjunto de tuplas de uma relação as quais devem satisfazer uma condição de seleção.

SELECT {A1, A2,..., AN | * } FROM R1, R2, ...,RN WHERE P

EQUIVALE A

ΠA1, A2,..., AN (ΣP (R1 X R2 X...X RN))

ONDE CADA AI REPRESENTA UM ATRIBUTO E CADA RI É UMA RELAÇÃO.

Caso a cláusula where seja omitida, o predicado P é verdadeiro. A lista A1, A2,..., An de atributos pode ser substituída por um asterisco (*) para selecionar todos os atributos de todas as relações presentes na cláusula from.


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



R: Uma visão(view) é qualquer relação que não faz parte do modelo lógico do banco de dados, mas é visível ao usuário. Sua propriedade da visão é composta com linhas e colunas como se fosse uma tabela real, a utilidade esta ligada ao aumento de segurança obtendo assim uma visão limitada e controlada dos dados que podem ser obtidos e a performance que utilizada consulta otimizada.


05 - 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?


R: São procedimentos executados no servidor, ele serve como dispensamento de banco de dados eles permitem encapsular tarefas repetitivas aceita parâmetros de entrada e retorno um valor de status o que acaba reduzindo o trafego na rede e melhorando a performance.
 Comandos utilizados:
Create procedure busca
@nomedebusca varchar(50)
as
select nome1,nome2
from nome_da tabela
where nome = @nomebusca


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


R: Os Gatilhos ou TRIGGERS são maneiras para executar um programa quando o evento associado ocorrer, ela mantém a consistência dos dados ou então propaga as alterações de dados de uma tabela para outras, sua vantagem é que quando ocorrer alguma alteração na tabela ele é disparado e deixa gravadas todas as informações do usuário que fez a alteração, eles são criados e funcionam da seguinte forma:
CREATE TRIGGER nome_do_gatilho ON dono.nome_da_tabela
FOR INSERT (ou UPDATE OU DELETE)
As
Código da execução



NORMALIZAÇÃO

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

R:
Diretriz 1ª: Projetar um esquema de relação de maneira que seja simples descrever seu significado. Normalmente, isso significa que não se pode combinar atributos de múltiplos tipos de entidades e tipos de relacionamentos numa simples relação. Intuitivamente, se um esquema de relação corresponde a um tipo de entidade ou tipo de relacionamento, o significado tende a ser claro. Por outro lado, tende ser uma mistura de múltiplas entidades e relacionamentos e, assim, semanticamente não-clara.

Diretriz 2ª: Projetar esquemas de relações de maneira que nenhuma anomalia de alteração ocorra em relações. Se existir alguma anomalia, isso deverá ser considerado para que as modificações pelos programas ocorram corretamente.

Diretriz 3ª: Tanto quanto possível, evite colocar atributos em um esquema de relação base cujos valores possam ser null. Se for inevitável os valores nulls, esteja seguro que eles se apliquem apenas em casos excepcionais e não se apliquem na maioria das tuplas da relação.

Diretriz 4ª: Projetar esquemas de relações tal que, quando aplicadas operações JOINNATURAIS, os atributos nas condições-joins envolvam atributos que sejam ou chaves primárias ou chaves-estrangeiras de maneira a garantir que nenhuma tupla espúria seja gerada.


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


R:
Semântica de atributos : Assume-se que um certo significado esteja associado aos atributos, para todo agrupamento de atributos que formam uma relação esquema. Intuitivamente, verifica-se que cada relação pode ser interpretada como um conjunto de fatos ou declarações. Este significado, ou semântica, especifica como podem ser interpretados os valores de atributos armazenados em uma tupla da relação, em outras palavras, como os valores de atributos estão relacionados uns com os outros. Em geral, é mais simples descrever a semântica de relações, ao invés da semântica de atributos de uma relação.

Redução de valores redundantes em tuplas: Uma das metas do projeto de esquemas é a minimização do espaço de armazenamento que relações da base ocupam. O agrupamento de atributos em esquemas de relações tem um efeito significativo no espaço de armazenamento.

Redução de valores nulos em tuplas: Uma relação degenerada (tabelão), pode causar valores null, o que prejudica a interpretação dos dados.
Em alguns projetos de esquemas pode-se agrupar atributos em uma “grande” relação. Se muitos atributos não se aplicarem a todas as tuplas da relação, ter-se-á muitos valores nulls na relação. Isto pode despender espaço armazenamento e pode também trazer problemas de entendimento do significado dos atributos na especificação de operações JOIN´s. Um outro problema com valores nulls é que não se pode contá-los quando operações de agregação, tais como COUNT ou SUM são aplicadas. Mais que isso, os valores nulls podem ter múltiplas interpretações, tais como:
  • O atributo pode não se aplicar a tupla.
  • O valor de atributo para a tupla é desconhecido.
  • O valor é conhecido, porém não foi registrado ainda.
Não permissão de tuplas espúrias: Tabelas degeneradas, quando relacionadas poder gerar nformações / dados errôneos, isto é, tuplas espúrias.


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


R: Dependências Funcionais são restrições ao conjunto de relações válidas. Elas permitem expressar determinados fatos em banco de dados relativos ao empreendimento que se deseja modelar.
A noção de dependência funcional generaliza a noção de super chave. Para existir o destino (dependência à chave estrangeira) tem que exitir a origem (chave primária). O atributo deve realmente caracterizar na relação.


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


R:Normalização de dados relacionais é o processo de identificação dos agrupamentos necessários e da localização correta de cada atributo que consiste num conjunto de técnicas designadas, e ainda exercitar as definições relacionadas à normalização eliminando redundâncias e inconsistências de um banco de dados, com reorganização mínima dos dados:

  • Identificação das redundâncias e outros problemas
  • Reorganização do banco de dados
  • Reprojeto das aplicações

A normalização será utilizada quando houver redundâncias e a necessidade de reorganizar os dados, ela converte cada entidade gradualmente para Formas Normais através da aplicação sucessiva de regras que alteram o formato dos dados da 1 Forma Normal até a 5 Forma Normal.


05 - 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 que?

R: 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: A primeira forma normal enuncia que cada atributo de uma entidade ou relacionamento pode armazenar apenas um valor. Tabelas com atributos multi-valorados não são consideradas em 1NF.

Segunda Forma Normal: A segunda forma normal (2NF) descreve que todo atributo deve ser determinado unicamente pela chave primária. Se existem atributos que dependem apenas de parte da chave, estes devem ser separados em tabelas onde a 2NF seja obedecida.
Terceira Forma Normal: A terceira forma normal (3NF) exige que a tabela esteja em 2NF e que todos os atributos que não são chave sejam mutuamente independentes, isto é, que não existam funções que definam um ao outro. Portanto, sempre a chave por inteiro deve definir toda a tabela.

Forma normal Boyce/Codd (BCNF): Definição que engloba as outras formas normais, e define que uma tabela está em BCNF se, e somente se, todo determinante funcional for em relação a uma chave candidata. Na prática, uma tabela está em BCNF se estiver em 3NF e não existir dependência funcional dentro da chave primária.


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


R: Normalização de banco de dados relacional

Objetivo:
Eliminar redundâncias e inconsistências de um banco de dados, com reorganização mínima dos dados

Sub-Fases:
• Identificação das redundâncias e outros problemas
• Reorganização do banco de dados
• Reprojeto das aplicações
  
Redundâncias e inconsistências em atributos:
– atributo com domínio enumerável
• representado sem controle
– atributo multivalorado
• representado sem normalização
– atributo pertencente a chave
• ocorre com valor nulo
– atributo redundante
• inferido ou materializado sem controle
  
Tratamento de atributo com domínio enumerável:
 – criar tabela definindo o domínio:
• valor
• descrição, se for o caso
 – uniformizar os valores
 – controlar atualizações

Exemplo de tratamento de atributo com domínio enumerável:
– TIPO_AREA em AREAESPECIAL






ÁLGEBRA RELACIONAL - EXERCÍCIOS

--> SELEÇÃO

01 - Mostre o conteúdo da relação departamento.
R: σ (Departamento).
 
02 - Mostre os empregados que trabalham no departamento 4.

R: σ (Ndep = 4) (Empregado). 
03 - Mostre a(s) localização(ões) do departamento de pesquisa (5).
R: σ (Dnome) (Departamento).
 
04 - Mostre o(s) projetos(s) do departamento 4.

R: σ (Projeto) (Departamento).
05 - Mostre as informações de relação trabalha_em cujo número do projeto igual a 3.
R: σ (Pnro = 3) (Trabalha_em).

--> PROJEÇÃO

01 - Mostre o número e o nome dos dependentes.

R: π NSSEMP, Nome dependente (Dependente).
02 - Mostre o nome e a localização dos projetos.

R: π Pnome, Plocalização (Projeto).
03 - Mostre o nome do departamento e o código do gerente dos departamentos.
R: π Dnome, Sunger (Departamento).
04 - Mostre o nome e a data de nascimento dos empregados.
R: π Pnome, DataNasc (Empregado).
05 - Mostre o nome e o salário dos empregados.
R: π Pnome, Salario (Empregado).

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

01 - Mostre o código, nome e o salário dos empregados que ganham mais de 2500.
R: π NSS, Pnome, Salario (σ (Empregado) χ (Salario > 2500)).
02 -Mostre o nome e a localização dos projetos do departamento 5.
R: π Pnome, Plocalização (σ (Dnum = 5) χ (Projeto)).
 03 - Mostre o número do empregado e o número do projeto cujas horas são maiores que 10.
R: π NSSEMP, Pnro (σ (Horas > 10) χ (Trabalha_em)).
 04 - Mostre o nome e o sexo do dependente cujo número do empregado é igual a 123456789.
R: π Nomedependente, Sexo (σ (NSSEMP = 123456789) χ (Dependente)).
 05 - Mostre o nome, relação e a data do aniversário dos dependentes cujo número do empregado é igual a 333445555.
R: π Nomedependente, Relação, DataNasc (σ (NSSEMP = 333445555) χ (Dependente)).

--> JUNÇÃO

01 - Mostre o nome e o salário do empregado e o nome e a relação dos seus dependentes.
R: π Pnome, Salario, Nomedependente, Relação (Empregado χ NSS = NSSEMP Dependente). 

02 - Mostre o nome do departamento e o nome e o salário do empregado que é o seu gerente.
R: π Dnome, Pnome, Salario, SNNGER (Departamento χ Pnome = Salario SNNGER). 

03 - Mostre o nome do departamento e a sua localização.
R: π Dnome, D.Localização (Departamento D χ Dnumero = L.Dnumero Locais_Depto L). 

04 - Mostre o nome do projeto, sua localização e o departamento ao qual pertence.
R: π Pnome, PLocalização, Dnum (Projeto χ Pnome = PLocalização Dnum).

05 - Mostre o nome do empregado e o nome do projeto nos quais eles trabalharam.
R: π E. Pnome, P. Pnome (Empregado E χ ( E.NSS = NSSEMP Trabalha_em) χ
              (Pnro = Pnumero Projeto P)). 


--> AGREGAÇÃO

01 - Mostre a quantidade de empregados do sexo masculino e a quantidade de empregados do sexo feminino.
R: Sexo Á Count (Empregado). 

02 - Mostre a quantidade de dependentes do sexo masculino e a quantidade de dependentes do sexo feminino do empregado cujo número é 123456789.
R: Sexo Á Count (NSSEMP = 123456789) (Dependente). 

03 - Mostre o nome e o salário do empregado e a quantidade de dependentes que possui.
R: Pnome, Salario Á Count (Nomedependente) (Empregado χ NSS = NSSEMP Dependente).

04 - Mostre a despesa total de cada departamento com os salários dos empregados.
R: Ndep Á Count NSS, AVERAGE Salario (Empregado).

05 - Mostre a soma total das horas empregadas em cada projeto.
R: PNRO Á SUM NSSEMP, AVERAGE Horas (Trabalha_em).
 

quarta-feira, 14 de novembro de 2012

ÁLGEBRA RELACIONAL

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

R: A Álgebra Relacional é um conjunto de operações sobre modelos relacionais de dados e podem ser divididas em dois grupos, que são eles:

Operadores Tradicionais:
  • União
  • Intersecção
  • Diferença
  • Produto Cartesiano

Operadores Relacionais:
  • Seleção
  • Projeção
  • Junção
  • Divisão


02 - Explique a Operação SELECT e PROJECT. Quando usar, Para que usar, Como usar, diferenças, etc.

R:
SELECT

É usada para construir um subconjunto na horizontal e para selecionar tuplas de uma relação, estas tuplas devem satisfazer uma condição de seleção, por exemplo, a seleção de um subconjunto de tuplas da relação EMPREGADOS que trabalham para o departamento 5 ou que tenham salário maior que 5000, cada uma dessas condições é especificada individualmente usando a operação SELECT:

NDEP = 5 (EMPREGADO)
SALÁRIO > 5000 (EMPREGADO)
  
PROJECT

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, para cada empregado, os atributos PNOME, SNOME e SALÁRIO; pode-se usar o PROJECT:

SNOME, PNOME, SALÁRIO (EMPREGADO)



03 - Explique a Operação UNION, INTERSECTION e DIFFERENCE. Quando usar, Para que usar, Como usar, etc.

R: 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 DEFFERENCE. 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.
Podem-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.


04 - Explique a Operação CARTESIAN PRODUCT. Quando usar, Para que usar, Como usar, etc.

R: A operação CARTESIAN PRODUCT, denotada por c, é 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.
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 à sequê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 sequência como uma única operação. Assim, a operação CARTESIAN PRODUCT é raramente utilizada isoladamente.


05 - Explique as Operações de junção (JOIN) e divisão (DIVISION). Quando usar, Para que usar, Como usar, etc.

R: 
Operações de Junção (JOIN)
A combinação de uma operação de seleção aplicada sobre uma operação de produto cartesiano é usual em aplicações de BD. É através dela que dados de tabelas relacionadas são associados. Por isso, foi criada a operação de junção, que corresponde exatamente à seqüência de operações em questão.
A , é usada para combinar tuplas relacionadas dexoperação JOIN, denotada por  relações em uma única tupla. Esta operação é muito importante para quaisquer bases de dados relacionais, pois permite processar relacionamentos entre relações
É uma operação que produz uma combinação entre as linhas de uma tabela com as linhas correspondentes de outra tabela, sendo em princípio correspondente a uma seleção pelos atributos de relacionamento sobre um produto cartesiano dessas tabelas:
A |x| B A.chave1 = B.chave2 ( A x B ) s=
A operação de junção foi criada justamente porque esse tipo de combinação de tabelas é de uso muito comum, facilitando com isso a escrita de expressões. A tabela resultante de uma junção tem todas as colunas da primeira tabela e todas da segunda tabela. Isso faz com que os valores dos campos utilizados como critério para a correspondência entre as linhas apareça duplicado, já que um vem da primeira tabela e outro da segunda. Existe uma variação da junção, chamada junção natural, que fornece o mesmo resultado, mas sem essa repetição de valores, uma das colunas correspondentes aos atributos de relacionamento é descartada.

Operações de Divisão (Division)
É uma operação adicional que produz como resultado a projeção de todos os elementos da primeira tabela que se relacionam com todos os elementos da segunda tabela.
Ex.: queremos saber os nomes dos departamentos que possuem todos os cargos:
CdCargo p ¸NmDepto, CdCargo ( depto |x| funcionário )  p ( cargo )

 
06 - Explique as Operações de AGREGAÇÃO. Quando usar, Para que usar, Como usar, etc.

R: O primeiro tipo de consulta que não pode ser expressa na álgebra relacional é conhecido como funções agregadas sobre coleções de valores da base de dados. Por exemplo, pode-se querer recuperar a média ou total salarial de todos os empregados ou o número de tuplas de empregados. As funções normalmente aplicadas para coleções de valores numéricos são:
SUM, AVERAGE, MAXIMUM e MINIMUM. A função de contagem de tuplas é normalmente chamada COUNT. Cada uma destas funções pode ser aplicada a todas as tuplas de uma relação.