» Início » Desenvolvimento » Banco de dados e SQL » Modelagem de Dados: Hierarquias - Parte 2
 
Avaliação: | Publicado em: 23/01/2007
Modelagem de Dados: Hierarquias - Parte 2


Vantagens

Simplicidade

Assim como o modelo adjacente, o modelo dos caminhos materializados é de implementação muito simples, dispensando qualquer tipo de mapeamento e (ou) rotinas adicionais.

Número de tabelas

A implementação do modelo dos caminhos materializados utiliza apenas uma única tabela para expressar todas as relações hierárquicas existentes.

Elaboração de consultas

No modelo dos caminhos materializados é possível realizar tanto consultas de relação imediata ou consultas que considerem níveis superiores e inferiores independentemente de se tratar de uma relação imediata ou não.

-- Selecionar todos os lançamentos dos centros de custo inferiores imediatos a TI
DECLARE
    @IdHierarquico VARCHAR(20)

SET @IdHierarquico = (SELECT IdHierarquico FROM CentrosCusto WHERE NomeCentroCusto = 'TI')

SELECT
    CEN.NomeCentroCusto, CEN.IdHierarquico,
    LAN.DataLancamento, LAN.ValorLancamento
FROM
    CentrosCusto AS CEN
    LEFT OUTER JOIN Lancamentos AS LAN
        ON LAN.IdCentroCusto = CEN.IdCentroCusto
WHERE
    CEN.IdHierarquico LIKE @IdHierarquico + '%' AND LEN(IdHierarquico) = 5
--  SUBSTRING(IdHierarquico,1,3) = @IdHierarquico AND LEN(IdHierarquico) = 5

-- Selecionar todos os lançamentos dos centros de custo inferiores a TI imediatos ou não
DECLARE
    @IdHierarquico VARCHAR(20)

SET @IdHierarquico = (SELECT IdHierarquico FROM CentrosCusto WHERE NomeCentroCusto = 'TI')

SELECT
    CEN.NomeCentroCusto, CEN.IdHierarquico,
    LAN.DataLancamento, LAN.ValorLancamento
FROM
    CentrosCusto AS CEN
    LEFT OUTER JOIN Lancamentos AS LAN
        ON LAN.IdCentroCusto = CEN.IdCentroCusto
WHERE
    CEN.IdHierarquico LIKE @IdHierarquico + '%'
--  SUBSTRING(IdHierarquico,1,3) = @IdHierarquico

-- Selecionar todos os lançamentos dos centros de custo superior imediato a TI
DECLARE
    @IdHierarquico VARCHAR(20)

SET @IdHierarquico = (SELECT IdHierarquico FROM CentrosCusto WHERE NomeCentroCusto = 'TI')

SELECT
    CEN.NomeCentroCusto, CEN.IdHierarquico,
    LAN.DataLancamento, LAN.ValorLancamento
FROM
    CentrosCusto AS CEN
    LEFT OUTER JOIN Lancamentos AS LAN
        ON LAN.IdCentroCusto = CEN.IdCentroCusto
WHERE
    IdHierarquico = LEFT(@IdHierarquico,LEN(@IdHierarquico)-2)

Espaço

Assim como o modelo adjacente, essa alternativa produz um modelo de dados econômico em termos de espaço. O tipo de dados variável (VARCHAR) garante a economia de espaço para a coluna utilizada na materialização dos identificadores independente do seu tamanho.

Este artigo é a parte 2 de 4 da seguinte série:

Gostei muito desses relacionamento com as tabelas, agora caro amigo gostaria de ter o programa MySql e gostaria qual o melhor banco de dados para se trabalhar? eu trabalho com paradox mais as pesoas falam que vai acabar , será mesmo?
Iolanda <iolanda.tp>
Oi!!!
Achei ótimo esse artigo era tudo o que eu precisava para fazer um trabalho da Facu e até o momento não tia encontrado, foi muito util.
Você está de parabens.

Inté espero outro artigo seu...