• Nenhum resultado encontrado

Projeto e Implementação do Sistema BDR

B. Nm_Atributo_Virtual = 'Nm_Departamento' AND

5.5.2 Coletor de Fontes

Objetivo:

Informar a(s) fonte(s) que pode(m) atender a cada item da estrutura de dados

Consulta. Tabelas e atributos virtuais que participam de junções, somente podem ser mapeadas em tabelas e campos, respectivamente, pertencentes a uma mesma fonte de dados. Por exemplo, dada a eqüijunção Professor.Código = Disciplina.Código do Professor, onde Professor.Código pode ser mapeado para tabelas e atributos pertencentes às fontes de dados hipotéticas 1 e 2, e Disciplina.Código do Professor para uma tabela e campo pertencente à fonte 1, então, pelo que mencionamos acima, o Coletor de Fontes escolhe a fonte 1 para atender a ambos.

Entrada:

Estrutura de dados Consulta.

Saída:

• Preenchimento do campo total de fontes, pertencente à estrutura de dados

Consulta;

• Preenchimento dos campos fonte, tabela e atributo, referentes à estrutura de dados Fontes.

Algoritmo:

Algoritmo de Coleta de Fontes de Dados

Para cada Atributo Virtual da Estrutura de Dados Consulta Faça

Procure no Metabanco de Dados a(s) Fonte(s) que pode(m) atender ao Atributo Virtual (Consulta.Tabela Virtual, Consulta.Atributo Virtual) (Tabela 5.45)

Insira o nome das Fontes, Tabelas e Atributos que podem atender ao atributo virtual no Conjunto A

Se Consulta.Junção =  Então

Procure no Metabanco de Dados a(s) Fonte(s) que pode(m) atender ao Atributo Virtual de Junção (Consulta.Tabela Virtual de Junção, Consulta.Atributo Virtual de Junção) (Tabela 5.47)

Insira o nome das Fontes, Tabelas e Atributos que podem atender ao atributo virtual de junção no Conjunto B

Faça a interseção dos conjuntos A e B pelo nome das fontes, inserindo o resultado no conjunto C

Para cada Fonte do Conjunto C Faça

Crie um registro na Estrutura de Dados Fontes Consulta.Fontes.Fonte = nome da fonte Consulta.Fontes.Tabela = nome da tabela Consulta.Fontes.Atributo = nome do campo

Consulta.Total de Fontes = Consulta.Total de Fontes + 1

Fim Para Fim Se Senão

Para cada Fonte do Conjunto A que atenda ao atributo Faça Crie um registro na Estrutura de Dados Fontes

Consulta.Fontes.Fonte = nome da fonte Consulta.Fontes.Tabela = nome da tabela Consulta.Fontes.Atributo = nome do campo

Consulta.Total de Fontes = Consulta.Total de Fontes + 1

Fim Para Fim Senão Fim Para

Para o nosso exemplo, precisamos encontrar as fontes de dados que atendem ao atributo Departamento.Cd_Departamento. Para tal, a seguinte consulta ao Metabanco de Dados é criada pelo Seletor de Fontes:

SELECT DISTINCT B.Nm_Banco, T.Nm_Tabela, A.Nm_Atributo

FROM Banco B, Tabela T, Atributo A, Tabela_Virtual TV, Atributo_Virtual AV,

Tab_Virt_Mapeada_Tabela TVMT, Atrib_Virt_Mapeado_Atributo AVMA, Esquema_Global EG, Esq_Glob_Possui_Tab_Virt EGPTV

WHERE T.Cd_Banco = B.Cd_Banco AND A.Cd_Tabela = T.Cd_Tabela AND

TV.Nm_Tabela_Virtual = 'Departamento' AND AV.Nm_Atributo_Virtual = 'Cd_Departamento' AND TVMT.Cd_Tabela = T.Cd_Tabela AND TVMT.Cd_Tabela_Virtual =

TV.Cd_Tabela_Virtual AND A.Cd_Atributo = AVMA.Cd_Atributo AND

AV.Cd_Atributo_Virtual = AVMA.Cd_Atributo_Virtual AND EG.Nm_Esquema_Global = 'Organização' AND EG.Cd_Esquema_Global = EGPTV.Cd_Esquema_Global AND

EGPTV.Cd_Tabela_Virtual = TV.Cd_Tabela_Virtual

ORDER BY B.Nm_Banco

Tabela 5.45 - Recupera as Fontes de Dados que Atendem ao Atributo Virtual

Departamento.Cd_Departamento

Pelo resultado retornado pelo Metabanco de Dados (ver Tabela 5.46), podemos concluir que o atributo Departamento.Cd_Departamento é atendido pelas fontes Companhia e Empresa.

Banco de Dados Tabela Atributo

Companhia Departamento Cd_Departamento Empresa Departamento Cd_Departamento

Tabela 5.46 - Resultado da Consulta Recupera as Fontes de Dados que Atendem ao Atributo Virtual Departamento.Cd_Departamento

De forma semelhante, é necessário encontrar as fontes de dados que atendem ao atributo DepartamentoControlaProjeto.Cd_Departamento. Portanto, a seguinte consulta ao Metabanco de Dados é elaborada pelo Seletor de Fontes:

SELECT DISTINCT B.Nm_Banco, T.Nm_Tabela, A.Nm_Atributo

FROM Banco B, Tabela T, Atributo A, Tabela_Virtual TV, Atributo_Virtual AV,

Tab_Virt_Mapeada_Tabela TVMT, Atrib_Virt_Mapeado_Atributo AVMA, Esquema_Global EG, Esq_Glob_Possui_Tab_Virt EGPTV

WHERE T.Cd_Banco = B.Cd_Banco AND A.Cd_Tabela = T.Cd_Tabela AND

TV.Nm_Tabela_Virtual = 'DepartamentoControlaProjeto' AND AV.Nm_Atributo_Virtual = 'Cd_Departamento' AND TVMT.Cd_Tabela = T.Cd_Tabela AND

TVMT.Cd_Tabela_Virtual = TV.Cd_Tabela_Virtual AND A.Cd_Atributo = AVMA.Cd_Atributo

AND AV.Cd_Atributo_Virtual = AVMA.Cd_Atributo_Virtual AND EG.Nm_Esquema_Global = 'Organização' AND EG.Cd_Esquema_Global = EGPTV.Cd_Esquema_Global AND

EGPTV.Cd_Tabela_Virtual = TV.Cd_Tabela_Virtual

ORDER BY B.Nm_Banco

Tabela 5.47 - Recupera as Fontes de Dados que Atendem ao Atributo Virtual

DepartamentoControlaProjeto.Cd_Departamento

Pelo que podemos observar na Tabela 5.48, que mostra o resultado retornado pelo Metabanco de Dados para a consulta da Tabela 5.47, o atributo virtual

DepartamentoControlaProjeto.Cd_Departamento somente é atendido pela fonte de dados

Empresa.

Banco de Dados Tabela Atributo

Empresa DepartamentoControlaProjeto Cd_Departamento

Tabela 5.48 - Resultado da Consulta Recupera as Fontes de Dados que Atendem ao Atributo Virtual DepartamentoControlaProjeto.Cd_Departamento

Conforme dissemos no início da seção, as tabelas e atributos virtuais participantes de junções, somente podem ser mapeadas em tabelas e campos, respectivamente, pertencentes a uma mesma fonte de dados. Portanto, os atributos virtuais Departamento.Cd_Departamento e DepartamentoControlaProjeto.Cd_Departamento devem necessariamente ser atendidos por fontes de dados idênticas, visto que participam de uma junção. Em resumo, só podem ser atendidos pela fonte de dados

Empresa. O processo é o mesmo para todos os outros atributos virtuais inseridos na consulta.

Para o nosso exemplo o resultado final produzido pelo Algoritmo de Coleta de Fontes de Dados é: Consulta Índice do Atributo Virtual

Nome da Tabela Virtual Nome do Atributo

Virtual Selecionado

Função de

Agregação Filtro Junção OrderBy Total de Filtros Total de Junções Total de Fontes 1 Empregado Nm_Empregado   2 2 Empregado Cargo  1 3 Projeto Nm_Projeto   1 4 Departamento Nm_Departamento  1 2 5 Departamento Cd_Departamento  2 2 6 Empregado Cd_Departamento  1 2 7 Empregado Cd_Empregado  1 2 8 EmpregadoTrabalhaProjeto Cd_Empregado  1 1 9 Projeto Cd_Projeto  2 1 10 EmpregadoTrabalhaProjeto Cd_Projeto  1 1 11 DepartamentoControlaProjeto Cd_Projeto  1 1 12 DepartamentoControlaProjeto Cd_Departamento  1 1

Tabela 5.49 - Consulta: Resultado Produzido pelo Algoritmo de Coleta de Fontes de Dados

Fontes

Índice do Atributo Virtual

Fonte de

Dados Tabela Atributo

1 Companhia Empregado Nm_Empregado 1 Empresa Funcionario Nm_Funcionário 2 Companhia Empregado Cargo

3 Empresa Projeto Nm_Projeto 4 Companhia Departamento Nm_Departamento 4 Empresa Departamento Nm_Departamento 5 Companhia Departamento Cd_Departamento 5 Empresa Departamento Cd_Departamento 6 Companhia Empregado Cd_Departamento 6 Empresa Funcionario Cd_Departamento 7 Companhia Empregado Cd_Empregado 7 Empresa Funcionario Cd_Funcionario 8 Empresa FuncionarioTrabalhaProjeto Cd_Funcionario 9 Empresa Projeto Cd_Projeto 10 Empresa FuncionarioTrabalhaProjeto Cd_Projeto 11 Empresa DepartamentoControlaProjeto Cd_Projeto 12 Empresa DepartamentoControlaProjeto Cd_Departamento Tabela 5.50 - Fontes: Resultado Produzido pelo Algoritmo de Coleta de Fontes de Dados