• Nenhum resultado encontrado

EXERCÍCIO

No documento BANCO DE DADOS I (páginas 60-63)

1. Crie um relacionamento recursivo que identifique o funcionário que é subordinado a um gerente.

2. Responda Verdadeiro(V) ou Falso (F) de acordo com o modelo de dados a seguir:

( ) Objeto C pode retratar uma hierarquia.

( ) Objeto A pode retratar uma hierarquia.

( ) Objeto C pode retratar uma hierarquia.

( ) Este tipo de arranjo entre os objetos não é possível de ocorrer.

( ) Objeto B não apresentará chave estrangeira.

( ) Haverá um objeto de resolução entre B e C.

( ) Haverá um objeto de resolução no relacionamento B : B.

( ) Quando um objeto é self-relation, ele só poderá se relacionar com outro objeto self-relation.

REVISÃO

ESTUDO DE CASO: RECRUTAMENTO E SELEÇÃO

Revista SQL MAGAZINE edição 29 A empresa Recruta deseja automatizar o controle gerencial de seu departamento de recrutamento e seleção. Qualquer pessoa, para se inscrever como candidato, deve ser indicado por um funcionário para um cargo específico.

Todo candidato possui um número de inscrição único, mesmo que tenha recebido várias indicações, ou se candidate a vários cargos (um funcionário não pode indicar o mesmo candidato mais de uma vez para o mesmo cargo).

Cada cargo possui testes específicos que deverão ser realizados pelos candidatos como parte do processo seletivo. Um candidato só é considerado apto para a fase de entrevista se tiver nota superior a 7 em todos os testes previstos.

No caso do candidato se inscrever em mais de um cargo que exija o mesmo teste, este não poderá ser realizado apenas uma vez. Durante os seis meses de validade de cada teste, este não poderá ser repetido pelo candidato, devendo ser utilizada a nota tirada (após seis meses, os testes são destruídos, exceto se o candidato se tornou funcionário). Os testes são corrigidos por funcionários que ocupam um cargo para o qual o teste se aplica, exceto os testes de cândidos indicados por eles.

A gerência necessita das seguintes informações:

• Relação dos candidatos (número de inscrição, cpf, nome) e seus respectivos testes já realizados (código do teste, data) mas ainda não corrigidos, e os cargos (descrição) para os quais cada um foi indicado.

• Para um determinado candidato, informe o cpf, nome, matrícula, cargo (código) e o departamento (código e nome) de todos os funcionários que indicaram esse candidato (não importando o cargo para o qual ele foi indicado).

• Relação dos funcionários oriundos do processo seletivo normal com seus testes realizados e as notas.

• Informe todos os funcionários que foram indicados por determinado funcionário.

• Informe todos os candidatos que se inscreveram para um determinado cargo.

• Para um determinado candidato, informe o código e nome de todos os cargos para o qual ele se candidatou, e para cada um desses cargos informe a matrícula e nome dos funcionários que o indicaram para este cargo.

• Para um determinado candidato, informe a matrícula e o nome dos funcionários que o indicaram, e para cada um desses funcionários informe o código e nome de todos os cargos para o qual ele indicou o candidato.

DICA: observar os detalhes importantes no descritivo acima.

NORMALIZAÇÃO

Conjunto de regras (chamadas de Formas Normais) que possuem os seguintes objetivos:

• Garantir a integridade dos dados;

• Organizar e dividir as tabelas de maneira eficiente, diminuindo ou eliminando a redundância de dados;

• Tabelas flexíveis e de fácil manutenção.

As regras de normalização são aplicadas durante o transcorrer de toda a construção do modelo de dados. Devem ser aplicadas quantas vezes for necessário para que se obtenha um modelo estável (nome dado a um modelo normalizado, que esteja atendendo às Formas Normais).

Existem seis formas normais:

• 1FN (1ª Forma Normal);

Com as três primeiras, resolvemos mais de 99% dos problemas de modelagem de dados e somente em casos muito especiais se faz necessária a aplicação das demais Formas Normais.

As Formas Normais são aplicadas em seqüência, sempre verificando a situação do conjunto de dados com relação à Primeira Forma Normal (1FN), depois com relação à Segunda Forma Normal (2FN), depois com relação à Terceira Forma Normal (3FN) e assim sucessivamente. A cada revisão que se faça, inicia-se novamente pela 1FN, depois a 2FN e assim por diante.

Após a aplicação da normalização, conseguimos os seguintes benefícios:

Tabelas flexíveis e de fácil manutenção;

Eliminação de redundâncias.

ANTES DE MAIS NADA, VAMOS REVER ALGUNS CONCEITOS IMPORTANTES:

Chave candidata Æ atributo ou conjunto de atributos que são únicos para cada instância do objeto. Exemplo: cpf.

Chave primária Æ entre as chaves candidatas, escolhe-se aquele atributo que será o identificador principal da tabela.

Chave alternativa Æ chaves candidatas, que não foram utilizadas como chave primária.

Chave estrangeira Æ atributo ou conjunto de atributos que faz ligação com uma chave candidata de outra tabela.

Dependência funcional Æ relacionamento entre dois ou mais atributos de forma que o valor de um atributo identifique o valor para cada um dos outros atributos, ou seja, um atributo está relacionado a outro.

A seguir vamos discutir cada uma das três Formas Normais utilizando como exemplo o fluxo de dados de uma Ordem de Compra.

ORDEM DE COMPRA

Código: 159735 Data: 30/08/2007

FORNECEDOR

Número: 123 Nome: Distribuidora Praiana Inscrição Estadual: 9.878 MATERIAL

Código Nome Quantidade Preço Unitário

302 Arroz 5 9,00

801 Biscoito 10 1,50

Descrevendo o fluxo de dados:

Ordem_Compra =

Uma tupla está na 1FN, se para cada ocorrência do objeto, existir apenas um valor de cada atributo. Ou seja:

• Eliminar as múltiplas ocorrências das tuplas ou instâncias (atributos multivalorados);

• Eliminar atributos repetidos como telefone1, telefone2 etc.

• Todos os registros precisam ser diferentes;

• Cada atributo deve ter somente um tipo de dado.

Quando se aplica a 1FN os atributos com múltipla ocorrência, formam outro objeto e se constitui um relacionamento com cardinalidade 1 : N.

Voltando ao exemplo do fluxo acima, o início do processo de modelagem se dá através da criação do objeto ORDEM COMPRA, e teremos a seguinte situação:

ORDEM_COMPRA

# cd_ordem_compra

dt_emissao_ordem_compra cd_fornecedor

nm_fornecedor

cd_inscricao_estadual_fornecedor {cd_material

nm_material

No documento BANCO DE DADOS I (páginas 60-63)

Documentos relacionados