quarta-feira, 2 de dezembro de 2009

Banco de Dados Adabas - Apresentação

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.

Structured Query Language, ou Linguagem de Consulta Estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional.Surgiu para padronizar a manipulação dos dados do BD. É dividida em:

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

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, DROP

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.
GRANT, REVOKE

DTL - Linguagem de Transação de Dados
BEGIN WORK, COMMIT, ROLLBACK

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.
FROM, WHERE, GROUP BY, HAVING, ORDER BY, DISTINCT.

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

Os dados podem ser armazenados em diferentes tipos, o tipo define as operações que poder ser executadas com determinado dado. Os tipos no SQL são:

Inteiros: integer, int, smallint e tinyint;
Reais: float, double, real, numeric;
Caracteres: char;
Texto: varchar, text;
Data: date


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.

O comando SELECT Instrui o programa principal do banco de dados para retornar a informação como um conjunto de registros.
Para executar esta operação, o programa principal de banco de dados procura a tabela ou tabelas especificadas, extrai as colunas escolhidas, seleciona as linhas que satisfazem o critério e classifica ou agrupa as linhas resultantes na ordem especificada.


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]

WHERE – Utilizada para especificar as condições que devem reunir os registros que serão selecionados.

GROUP BY – Utilizada para separar os registros selecionados em grupos específicos.

HAVING – Utilizada para expressar a condição que deve satisfazer cada grupo.

ORDER BY – Utilizada para ordenar os registros selecionados com uma ordem especifica.

Funções de Agregação.
As funções de soma se usam dentro de uma cláusula SELECT em grupos de registros para devolver um único valor que se aplica a um grupo de registros.

AVG – Utilizada para calcular a media dos valores de um campo determinado.

COUNT – Utilizada para devolver o número de registros da seleção.

SUM – Utilizada para devolver a soma de todos os valores de um campo determinado.

MAX – Utilizada para devolver o valor mais alto de um campo especificado.

MIN – Utilizada para devolver o valor mais baixo de um campo especificado.

Operadores Lógicos
AND – E lógico. Avalia as condições e devolve um valor verdadeiro caso ambos sejam corretos.
OR – OU lógico. Avalia as condições e devolve um valor verdadeiro se algum for correto.
NOT – Negação lógica. Devolve o valor contrário da expressão.

Operadores Relacionais

< – Menor que
> – Maior que
<> – Diferente de
<= – Menor ou Igual que
>= – Maior ou Igual que
= – Igual a

BETWEEN – Utilizado para especificar um intervalo de valores.

LIKE – Utilizado na comparação de um modelo e para especificar registros de um banco de
dados."Like" + extensão % vai significar buscar todos resultados com o mesmo início da extensão.

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

Uma view é uma maneira alternativa de observação de dados de uma ou mais entidades (tabelas), que compõem uma base de dados. Pode ser considerada como uma tabela virtual ou uma consulta armazenada. Geralmente e recomendável, uma view, implementada encapsulando uma instrução SELECT (busca de dados para exposição), guarda os dados em uma tabela virtual, armazenando também em cache, pois todas as consultas ao banco, encapsuladas ou não, ao serem executadas, são armazenadas em cache. Por este motivo, pode ser mais rápido ter uma consulta armazenada em forma de view, em vez de ter que retrabalhar uma instrução.
O comando para criar uma view é o CREATE VIEW.

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?

Stored Procedure é um conjunto de comandos, ao qual é atribuído um nome. Este conjunto fica armazenado no Banco de Dados e pode ser chamado a qualquer momento tanto pelo SGBD (sistema Gerenciador de Banco de Dados) quanto por um sistema que faz interface com o mesmo. A utilização de Stored Procedures é uma técnica eficiente de executarmos operações repetitivas. Ao invés de digitar os comandos cada vez que determinada operação necessite ser executada.

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

Um Trigger é bloco de comandos Transact-SQL que é automaticamente executado quando um comando INSERT , DELETE ou UPDATE for executado em uma tabela do banco de dados.
Os Triggers são usados para realizar tarefas relacionadas com validações , restrições de acesso , rotinas de segurança e consistência de dados ; desta forma estes controles deixam de ser executados pela aplicação e passam a ser executados pelos Triggers em determinadas situações :
Mecanismos de validação envolvendo múltiplas tabelas
Criação de contéudo de uma coluna derivada de outras colunas da tabela
Realizar análise e e atualizações em outras tabelas com base em alterações e/ou incluções da tabela atual
A criação de um Trigger envolve duas etapas :
Um comando SQL que vai disparar o Trigger ( INSERT , DELETE , UPDATE)
A ação que o Trigger vai executar ( Geralmente um bloco de códigos SQL )
Podemos criar um Trigger usando o comando Create Trigger

Normalização.

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

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.

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.

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.

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.

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

- Semântica de atributos – verifica se o atributo caracteriza mesmo aquela entidade;

- Redução de valores redundantes em tuplas – verifica se o atributos geram redundância e portanto desperdício de espaço;

- Redução de valores nulos em tuplas – uma relação degenerada 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 erradas.

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

Uma dependência funcional é uma restrição entre dois conjuntos de atributos de uma base de dados. Dados os atributos “A” e “B” de uma entidade, diz-se que “B” é funcionalmente dependente de “A” se e somente se, a cada valor de “A” está associado um único
valor de “B”.

* - Dependência Funcional Composta.
Dado um atributo ou um conjunto de atributos “B” de uma entidade, sendo a chave composta por um conjunto de atributos “A”, diz-se que “B” é completamente dependente
funcional da chave primária, se e somente se, a cada valor da chave (e não a parte dele), está associado um valor para cada atributo do conjunto “B”.

* - Dependência Funcional Transitiva.
Dados os atributos “A”, “B” e “C” de uma entidade, sendo “A” a chave, diz-se que “B” e “C” são dependentes transitivos se e somente se, forem funcionalmente dependente de “A” além de existir uma dependência funcional entre eles.


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 transformamos um Banco de Dados fora do padrão, num BD normalizado. Normalmente é usado em Banco de Dados antigos ou criados por pessoas não técnicas.

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

* Primeira Forma Normal (1FN)
Uma relação está na 1ª forma normal (1FN) quando:
- os domínios de todos os atributos consistem apenas em valores atômicos;
- não existem subgrupos de atributos repetidos.
Passagem de uma entidade à 1FN:
- Eliminar subgrupos repetidos, decompondo a relação em duas (ou mais) relações.


* - Segunda Forma Normal (2FN)
Uma relação está na 2ª forma normal (2FN) quando:
- estiver na 1FN;
- todos os atributos que não pertencem à chave dependem de toda a chave (e não de um subconjunto da chave).
Passagem de uma relação à 2FN:
- Separa os atributos que dependem de um subconjunto da chave, decompondo a relação em duas (ou mais) relações.


* - Terceira Forma Normal (3FN)
Uma relação está na 3ª forma normal (3FN) quando:
- estiver na 2FN;
- os atributos que não pertencem à chave não dependem de nenhum atributo que também não pertence à chave.
Passagem de uma relação à 3 FN:
- Separar os atributos que dependem de outro atributo não pertencente à chave, decompondo a relação em duas (ou mais) relações.

* - Forma Normal Boyce Codd
Caso especial 3FN é usada quando tem-se uma relação com varias chaves candidatas. Seu conceito diz que a relação está FNBC quando todo o determinante da relação for uma chave-candidata.

* - Quarta Forma Normal (4FN)
Uma relação está na 4ª forma normal (4FN) quando:
- estiver na 3FN;
- deve-se separar os atributos multi dependentes.

* - Quinta Forma Normal (5FN)
São raros os casos de se necessitar da 5 ª FN pois a sua aplicação pode implicar em relações inválidas.

Obs:Para obtermos melhorias na utilização do sistema, tratando de estabelecer um compromisso com a flexiblidade do sistema e a viabilidade da sua utlização. Pretende-se um esquema equilibrado que não ponha em risco a integridade da BD, mas que, simultaneamente, tenha um desempenho razoável. Por essa razão, na maioria dos casos, o processo de normalização pára na 3FN.


6) Dê exemplos de normalizações de uma relação.
Exemplo - Normalização de BDR.

Exemplo:

Considere que um analista mapeou a nota para o seguinte esquema relacional:
nota_fiscal = {num_nota, cod_cliente, nome_cliente, logradouro_cliente,
telefone_cliente, data_nota_fiscal, (cod_produto, desc_produto, qtdade,
valor_produto, valor_total)}
Ao analisarmos esta relação, notamos que mesma causará problemas de
inconsistência de dados. Bem, para evitarmos futuros problemas, vamos
aplicar as formas normais e corrigir erros na relação.

Primeira forma normal:
A relação não está na 1FN pois existem atributos mutivalorados e compostos.
Vamos então passar para a 1FN:
nota_fiscal = {num_nota, cod_cliente, rua_cliente, bairro_cliente, cep_cliente,
cidade_cliente, telefone_cliente,data_nota_fiscal}

nota_produto = {num_nota, cod_produto, desc_produto, qtdade, valor_produto,
valor_total}

2. Segunda forma normal:
A relação não está na 2FN pois existem atributos com dependência parcial da
chave primária:

nota_fiscal = {num_nota, cod_cliente, rua_cliente, bairro_cliente, cep_cliente,
cidade_cliente, telefone_cliente, data_nota_fiscal}

nota_produto = {num_nota, cod_produto, qtdade, valor_total}

produto = {cod_produto, desc_produto, valor_produto}

3. Terceira forma normal:
A relação não está na 3FN pois existem atributos com dependência transitiva:

nota_fiscal = {num_nota, cod_cliente, data_nota_fiscal}

cliente = {cod_cliente, rua_cliente, bairro_cliente, cep_cliente, cidade_cliente,
telefone_cliente}

nota_produto = {num_nota, cod_produto, qtdade, valor_total}

produto = {cod_produto, desc_produto, valor_produto}

quarta-feira, 18 de novembro de 2009

exercicios

Álgebra Relacional - Exercícios

ð Seleção

1-Mostre o conteúdo da relação departamento.

R: s (DEPARTAMENTO)

DEPARTAMENTO

DNOME

DNÚMERO

SNNGER

DATINICGER

Pesquisa

5

333445555

22-MAI-78

Administrativo

4

987654321

01-JAN-85

Gerencial

1

888665555

19-JUN-71

2- Mostre os empregados que trabalham no departamento 4.

R: s NDEP = 4 (EMPREGADO)

EMPREGADO

PNOME

NNOME

SNOME

NSS

DATANASC

ENDEREÇO

SEXO

SALARIO

NSSUPER

NDEP

Alicia

J

Zelaya

999887777

19-JUL-58

Av.C,3

F

2.500

987654321

4

Jennifer

S

Wallace

987654321

20-jun-31

Trav.D,4

F

4300

888665555

4

Ahmand

V

Jabbar

987987987

29-MAR-59

Av. G, 7

M

2.500

987654321

4

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

R: s DNÚMERO = 5 (LOCAIS_DEPTO)

LOCAIS_DEPTO

DNÚMERO

DLOCALIZAÇÃO

5

Bellaire

5

Sugariand

5

Houston

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

R: s DNUM = 4 (PROJETO)

PROJETO

PNOME

PNÚMERO

PLOCALIZAÇÃO

DNUM

Automação

10

Stafford

4

Beneficiamento

30

Stafford

4

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

R: s PNRO = 3 (TRABALHA_EM)

TRABALHA_EM

NSSEMP

PNRO

HORAS

666884444

3

40.0

333445555

3

10.0

ð Projeção

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

R: p NSSENP, NOMEDEPENDENTE (DEPENDENTE)

DEPEMDENTE

NSSEMP

NOMEDEPENDENTE

333445555

Alice

333445555

Theodore

333445555

Joy

987654321

Abner

123456789

Michael

123456789

Alice

123456789

Elizabeth

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

R: p PNOME, PLOCALIZAÇÃO (PROJETO)

PROJETO

PNOME

PLOCALIZAÇÃO

ProdutoX

Bellaire

ProdutoY

Surgarland

ProdutoZ

Houston

Automação

Stafford

Reorganização

Houston

Beneficiamento

Stafford

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

R: p DNOME, SNNGER (DEPARTAMENTO)

DEPARTAMENTO

DNOME

SNNGER

Pesquisa

333445555

Administrativo

987654321

Gerencial

888665555

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

R: p PNOME, DATANASC (EMPREGADO)

EMPREGADO

PNOME

DATANASC

John

09-JAN-55

Franklin

08-DEZ-45

Alicia

19-JUL-58

Jennifer

20-JUN-31

Ramesh

15-SET-52

Joyce

31-JUN-62

Ahmad

29-MAR-59

James

10-NOV-27

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

R: p PNOME, SALARIO (EMPREGADO)

EMPREGADO

PNOME

SALARIO

John

3000

Franklin

4000

Alicia

2500

Jennifer

4300

Ramesh

3800

Joyce

2500

Ahmad

2500

James

5500

ð Seleção+Projeção

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

R: p NSS, PNOME, SALARIO (s SALARIO > 2500 (EMPREGADO))

EMPRGADO

NSS

PNOME

SALARIO

123456789

John

3000

333445555

Franklin

4000

999887777

Alicia

2500

987654321

Jennifer

4300

666884444

Ramesh

3800

453453453

Joyce

2500

987987987

Ahmad

2500

888665555

James

5500

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

R: p PNOME, PLOCALIZAÇÃO (s DNUM = 5 (PROJETO))

PROJETO

PNOME

PLOCALIZAÇÃO

DNUM

ProdutoX

Bellaire

5

ProdutoY

Surgarland

5

ProdutoZ

Houston

5

3- Mostre o número do empregado e o número do projeto cujas horas são maiores que 10.

R: p NSSEMP, PNRO (s HORAS > 10.0 (TRABALHA_EM))

TRABALHA_EM

NSSEMP

PNRO

HORAS

123456789

1

32.5

666884444

3

40.0

453435453

1

20.0

453453453

2

20.0

999887777

30

30.0

987987987

10

35.0

987654321

30

20.0

987654321

20

15.0

4-Mostre o nome e o sexo do dependente cujo número do empregado é igual a 123456789.

R: p NOMEDEPENDENTE, SEXO (s NSSEMP = 123456789 (DEPENDENTE))

DEPENDENTE

NSSEMP

NOMEDEPENDENTE

SEXO

123456789

Michael

M

123456789

Alice

F

123456789

Elizabeth

F

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

R: p NOMEDEPENDENTE, RELAÇÃO, DATANIV (s NSSEMP = 333445555 (DEPENDENTE))

DEPENDENTE

NSSEMP

NOMEDEPENDENTE

RELAÇÃO

DATANIV

333445555

Alice

FILHA

05-ABR-76

333445555

Theodore

FILHO

25-OUT-73

333445555

Joy

ESPOSA

03-MAI-48

ð Junção

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

R: p PNOME, SALARIO, NOMEDEPENDENTE, RELAÇÃO (EMPREGADO c NSS = NSSEMP DEPENDENTE)

PNOME

SALARIO

NOMEDEPENDENTE

RELAÇÃO

JOHN

3000

Michael

FILHO

JOHN

3000

Alice

FILHA

JOHN

3000

Elizabeth

ESPOSA

FRANKLIN

4000

Alice

FILHO

FRANKLIN

4000

Theodore

FILHA

FRANKLIN

4000

Joy

ESPOSA

JENIFER

4300

Abner

MARIDO

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

R: p DNOME, PNOME, SALARIO (DEPARTAMENTO c SNNGER = NSS EMPREGADO)

DNOME

PNOME

SALARIO

Pesquisa

Franklin

4000

Administrativo

Jennifer

4300

Gerencial

James

5500

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

R: p D.DNOME, L.DLOCALIZAÇÃO (DEPARTMENTO D c D.DNÚMERO = L.DNÚMERO LOCAIS _DEPTO L)

DNOME

DLOCALIZAÇÃO

Gerencial

Houston

Administrativo

Stafford

Pesquisa

Bellaire

Pesquisa

Sugariand

Pesquisa

Houston

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

R: p PNOME, PLOCALIZAÇÃO, DNOME (PROJETO c DNUM = DNÚMERO DEPARTAMENTO)

PNOME

PLOCALIZAÇÃO

DNOME

ProdutoX

Bellaire

Pesquisa

ProdutoY

Surgarland

Pesquisa

ProdutoZ

Houston

Pesquisa

Automação

Stafford

Administrativo

Reorganização

Houston

Gerencial

Beneficiamento

Stafford

Administrativo

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

R: p E.DNOME, P.PNOME ((EMPREGADO E c NSS = NSSEMP TRABALHA_EM T) c T.PNRO = P.PNÚMERO PROJETO P)

DNOME

PNOME

John

ProdutoX

John

ProdutoY

Ramesh

ProdutoZ

Joyce

ProdutoX

Joyce

ProdutoY

Franklin

ProdutoY

Franklin

ProdutoZ

Franklin

Automação

Franklin

Reorganização

Alicia

Beneficiamento

Alicia

Automação

Ahmad

Automação

Ahmad

Beneficiamento

Jannifer

Beneficiamento

Jannifer

Reorganização

James

Reorganização

ð Agregação

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

R: SEXO ¦ count NSS (EMPREGADO)

COUNT NSS

SEXO

Cuont NSS

M

5

F

3

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 ¦ Count (s NSSEMP = 123456789 (DEPENDENTE))

SEXO

Cuont NSSEMP = 123456789

M

1

F

2

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

R: p PNOME, SALARIO, ¦ Count NOMEDEPENDENTE (EMPREGADO c NSS = NSSEMP DEPEMDENTE)

PNOME

SALARIO

Count NOMEDEPENDENTE

John

3000

3

Franklin

4000

3

Alicia

2500

0

Jennifer

4300

1

Ramesh

3800

0

Joyce

2500

0

Ahmad

2500

0

James

5500

0

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

R: NDEP ¦ Sum SALARIO (EMPREGADO)

NDEP

Sum SALARIO

5

13300

4

9300

1

5500

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

R: PNRO ¦ Sum HORAS (TRABALHA_ EM)

PNRO

Sum HORAS

1

52.5

2

37.5

3

50.0

10

55.0

20

25.0

30

55.0