sexta-feira, 1 de novembro de 2013

Perguntas & Respostas Banco de Dados 1 Parte 3

Alunos: Elliot Portugal
                Ezequiel Junior
                            Guilherme Napolitano
           William Silva

Álgebra Relacional 
Á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.
     R: 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.
 R: Operações SELECT e PROJECT:
O Operador SELECT: 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. Por exemplo, a seleção de um subconjunto de tuplas da relação EMPREGADOS que trabalham para o departamento 4 ou que tenham salário maior que 3000. Cada uma dessas condições é especificada individualmente usando a operação SELECT como segue:
NDEP = 4 (EMPREGADO)
SALÁRIO > 3000 (EMPREGADO)
Em geral, a operação SELECT é denotada por:
<condição de seleção> (<nome da relação>)
onde o símbolo é usado para denotar o operador SELECT, e a condição de seleção é uma
expressão Booleana especificada sobre atributos da relação especificada. A relação resultante da operação SELECT tem os mesmos atributos da relação especificada em <nome da relação>. A expressão Booleana especificada em <condição de seleção> é construída a partir de cláusulas da forma:
<nome de atributo> <operador de comparação> <valor constante>, ou
<nome de atributo> <operador de comparação> <nome de atributo>
 O Operador PROJECT
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)
A relação resultante é mostrada na figura 7.1b. A forma geral do operador PROJECT é:
<lista de atributos> (<nome da relação>)
onde é o símbolo usado para representar o operador PROJECT e <lista de atributos> é uma
lista de atributos da relação especificada por <nome da relação>. A relação resultante tem
apenas os atributos especificados em <lista de atributos> e aparecem na mesma ordem que
aparecem na lista. Assim, o grau é igual ao número de atributos em <lista de atributos>.

    3) 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.Pode-se definir as três operações UNION, INTERSECTION e DIFFERENCE sobre duasrelaçõ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.

      4) 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-seentão selecionar apenas as tuplas que estejam relacionadas especificando uma condição deseleçã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.

    5) Explique as Operações de junção (JOIN) e divisão (DIVISION). Quando usar, Para que usar, Como usar, etc.
 R: A Operação JOIN
A operação JOIN, denotada por x, é usada para combinar tuplas relacionadas de relações em
uma única tupla. Esta operação é muito importante para quaisquer bases de dados relacionais,
pois permite processar relacionamentos entre relações. Para ilustrar a operação JOIN, suponha
que se deseja recuperar os nomes dos gerentes de cada departamento. Para obter-se o nome
dos gerentes, é necessário combinar cada tupla de departamento com tuplas de empregados
cujo valor NSS seja igual ao valor de SNNGER na tupla departamento. Isto é feito usando a
operação JOIN, então projeta-se o resultado sobre aqueles atributos necessários:
55
DEPT_GER¬DEPARTAMENTO xSNNGER=NSS EMPREGADO
RESULT¬pDNOME, SNOME, PNOME (DEPT_GER)
 A Operação DIVISION
A operação DIVISION é útil para um tipo especial de consulta que ocorre freqüentemente em
aplicações de base de dados. Esta requisição pode ser ilustrada pela seguinte consulta:
“Recupere os nomes dos empregados que trabalham em todos os projetos em que ‘John
Smith’ trabalha. Para expressar esta consulta usando DIVISION deve-se fazer o seguinte:
primeiro recuperar a lista de números de projetos em que ‘John Smith’ trabalha em uma relação
intermediária SMITH_PNOS:
SMITH¬s PNOME = ‘John’ AND SNOME = ‘Smith’ (EMPREGADO)
SMITH_PNOS¬p PNRO (TRABALHA_EM * NSSEMP = NSS SMITH)
Depois, criar uma relação que inclua tuplas da forma <PNRO, NSSEMP> que lista todos os
empregados, cujo número do segura social é NSSEMP, que trabalham num determinado
projeto PNRO:
NSS_PNRO¬p PNRO, NSSEMP (TRABALHA_EM)
Finalmente, aplicar a operação DIVISION para as relações obtidas a fim de obter os números
dos seguros sociais desejados:
NSS_DESEJADO (NSS)¬NSS_PNRO ¸ SIMTH_PNOS
RESULT¬p PNOME, SNOME (NSS_DESEJADO * EMPREGADO)
    6) 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.

Álgebra Relacional - Exercícios
Seleção
1) Mostre o conteúdo da relação departamentos.
R: Signa(σ)(departamento)
2) Mostre os empregados que trabalham no departamento 4.
R: Sigma(σ)=4 (Departamento)
3) Mostre a(s) localização(ões) do departamento de pesquisa (5).
R: Signa(σ) = 5 (Locais_depto)
4) Mostre o(s) projeto(s) do departamento 4.
R: Signa(σ) = 4 (Projetos)
5) Mostre as informações de relação trabalha_em cujo número do projeto igual a 3.
σ) = 3 (Trabalha_em)Projeção
1) Mostre o número e o nome dos dependentes.
R:PI( π)nssemp, nomedep(Dependente)
2) Mostre o nome e a localização dos projetos
R: PI( π)pnome, plocalização(Projetos)
3) Mostre o nome e o código do gerente dos departamentos.
R: PI( π)DNOME, SNNGER (Departamento)
4) Mostre o nome e a data de nascimento dos empregados.

R: PI( π)PNOME, DATANASC (Empregado)
5) Mostre o nome e o salário dos empregados.
R: PI( π)PNOME, SALÁRIO (Empregado)
Seleção + Projeção
1) Mostre o código, nome e o salário dos empregados que ganham mais de 2500.
R: PI( π)PNOME, NSS, SALARIO(Signa(σ)SALARIO>2500(EMPREGADO))
2) Mostre o nome e a localização dos projetos do departamento 5.
R: PI( π)PNOME, PLOCALIZAÇÃO(Signa(σ)DNUM=5(PROJETO))
3) Mostre o número do empregado e o número do projeto cujas horas são maiores que 10.
R: PI( π)NSSEMP, PNRO (G_horas > 10 (Trabalham_em))
4) Mostre o nome e o sexo do dependente cujo número do empregado é igual a 123456789.
R: PI( π)NOMEDEPENDENTE, SEXO (GNSSEMP=123456789(DEPENDENTE)
5) Mostre o nome, relação e a data do aniversário dos dependentes cujo número do empregado é igual a 333445555.
R: PI( π)NOMEDEPENDENTE, DATANIV, RELAÇÃO (GNSSEMP = 333445555 (DEPENDENTE)


Junção
1) Mostre o nome e o salário do empregado e o nome e a relação dos seus dependentes.
R: PI( π)PNOME, SALARIO, NOMEDEPENDENTE, RELAÇÃO (EMPREGADOҲNSS=NSSEMP DEPENDENTE)
2) Mostre o nome do departamento e o nome e o salário do empregado que é o seu gerente.
R: PI( π)D.DNOME,E.PNOME,E.SALARIO(EMPREGADO.E Ҳ E.NSS=DSSNGER DEPARTAMENTO.D)
3) Mostre o nome do departamento e a sua localização.
R: PI( π)DNOME, L.LOCALIZAÇÃO (DEPARTAMENTO D X DNUMERO = LNÚMERO LOCAIS – DEMO L)
4) Mostre o nome do projeto, sua localização e o departamento ao qual pertence.
R: PI( π)DNOME, PLOCALIZAÇÃO, DNOME (PROJETO X DNUMERO = NUMERO DEPARTAMENTO)
5) Mostre o nome do empregado e o nome do projeto nos quais eles trabalharam.
R: PI( π)DNOME, P.PNOME (EMPREGADO E X NSSEMP TRABALHAEMT ) X TPNRO = P.PNÚMERO PROJETO P)

Agregação

1) Mostre a quantidade de empregados do sexo masculino e a quantidade de empregados do sexo feminino.
R: SEXO (ƒ) CAUNT NSS(EMPREGADO)
2) Mostre a quantidade de dependentes do sexo masculino e a quantidade de dependentes do sexo feminino do empregado cujo número é 123456789.
R: SEXO (ƒ) CAUNT NSSEMP(Signa(σ) NSSEMP=123456789(DEPENDENTE))
3) Mostre o nome e o salário do empregado e a quantidade de dependentes que possui.
R: PI( π)DNOME, SALARIO, (ƒ) COUNT NOMEDEPENTE (EMPREGADO X NSS=NSSEMP DEPENDENTE)
4) Mostre a despesa total de cada departamento com os salários dos empregados.
R: DNOME (ƒ) SUM SALARIO (EMPREGADO X NDEP = DNÚMERO DEPARTAMENTO)
5) Mostre a soma total das horas empregadas em cada projeto.
R: PNRO (ƒ) SUM HORAS (TRABALHA_EM) PNOME (ƒ) SUM HORA( TRABALHA_EM X PNRO = PNUMERO PROJETO)

Normalização
1)Quais são as diretrizes informais para o projeto de esquema de relações? Explique resumidamente cada uma.R: Semântica de atributos: verificar se o atributo caracteriza (pertence) mesmo aquela entidade.
Informação redundante ou anomalias de atribuição: verificar 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 (tupla espúrias)
2)Quais são as métricas de qualidade informal para projeto de esquemas de relações? Explique resumidamente cada uma delas.
R: São quatro métricas (Semântica de Atributos, Informação redundante ou anomalias de atribuição, valor null em tuplas e não permissã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
R: dependência funcional: 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. Anteriormente foi definido o conceito de superchave. Para existir o destino (dependência –>chave estrangeira) tem que existir a origem (chave primaria). O atributo deve realmente caracterizar a relação.
4)O que é e para que serve normalização de dados relacionais? Quando será utilizada a normalização na maioria das vezes?
R: Eliminar redundâncias e inconsistências de um banco de dados, com reorganização mínima dos dados, é o processo pelo qual transformamos 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ê?
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.
6)Dê exemplos de normalizações de uma relação.
R: 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}