Pular para conteúdo

Definições do Banco de Dados PostgreSQL

Este documento descreve a arquitetura do banco de dados, a estrutura de gerenciamento de permissões e as convenções para armazenamento de metadados.

1. Estrutura e Organização de Dados (Schemas)

A arquitetura do banco de dados utiliza schemas como o principal mecanismo de organização e segregação de dados.

Cada projeto gerenciado pela ferramenta é mapeado para um schema dedicado dentro do banco de dados PostgreSQL. Esta abordagem (ex: 1111-projeto-1, 2222-projeto-2, etc.) garante o isolamento lógico dos dados de cada projeto, encapsulando todas as tabelas, views, sequências e funções relacionadas estritamente a ele.

2. Gerenciamento de Acesso e Permissões (Roles)

O controle de acesso é implementado através de um sistema hierárquico de roles (grupos de privilégios). A estrutura utiliza aninhamento de roles, permitindo que roles de nível superior herdem automaticamente todas as permissões (INHERIT) das roles de nível inferior. Este design centraliza e simplifica a administração de privilégios.

Três níveis de roles foram definidos:

2.1. Nível 1: cobrape_nivel_1

Role de privilégio mais restrito, designada para operações de consulta e entrada de dados específica.

  • GRANT SELECT em tabelas de dados
  • GRANT INSERT na tabela metadados_camadas
  • GRANT INSERT, UPDATE na tabela de descrição de atributos de camadas

2.2. Nível 2: cobrape_nivel_2

Esta role herda (INHERITS) todas as permissões de cobrape_nivel_1.

  • Privilégios Adicionais: GRANT UPDATE na tabela metadados_camadas.

2.3. Nível 3: cobrape_admin

A role de mais alto privilégio, herda (INHERITS) todas as permissões de cobrape_nivel_2.

  • Privilégios Adicionais: Possui privilégios de administrador no banco.

  • Exclusividade na Exclusão: É a única role com permissão para executar operações de exclusão de dados (DELETE) e exclusão de estruturas, como tabelas (DROP TABLE).

2.4. Concessão de Acesso a Projetos

O acesso aos dados dos projetos (schemas) é concedido explicitamente às roles. Para um usuário ter acesso de consulta ao "Projeto Alpha", a role cobrape_nivel_1 (e, por herança, as demais) deve receber:

  • GRANT USAGE ON SCHEMA /nome_do_schema/ TO cobrape_nivel_1;

  • GRANT SELECT ON ALL TABLES IN SCHEMA /nome_do_schema/ TO cobrape_nivel_1;

3. Criação de Tabela de Metadados de Camadas

Segue abaixo o código SQL para a criação da tabela de metadados de camadas:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
CREATE TABLE /nome_do_schema/.metadados_camadas (                   -- (1)
    id SERIAL NOT NULL,                                             -- (2)
    nome_camada VARCHAR(200) PRIMARY KEY,                           -- (3)
    tipo_dados VARCHAR(100),                                        -- (4)
    fonte_camada TEXT,                                              -- (5)
    referencia_dados VARCHAR(200),                                  -- (6)  
    ano_dados INTEGER,                                              -- (7)
    escala VARCHAR(100),                                            -- (8)
    categoria VARCHAR(200),                                         -- (9)
    extensao_abrangencia VARCHAR(200),                              -- (10)
    adaptado_fonte VARCHAR(10),                                     -- (11)
    tipo_geometria VARCHAR(50),                                     -- (12)
    sigilo_dados VARCHAR(50),                                       -- (13)
    src VARCHAR(200),                                               -- (14)
    latitude_norte NUMERIC,                                         -- (15)
    latitude_sul NUMERIC,                                           -- (16)
    longitude_leste NUMERIC,                                        -- (17)
    longitude_oeste NUMERIC,                                        -- (18)
    resumo TEXT,                                                    -- (19)
    informacoes_adicionais TEXT,                                    -- (20)
    codificacao VARCHAR(50),                                        -- (21)
    numero_feicoes INTEGER,                                         -- (22)
    atributos TEXT,                                                 -- (23)
    fonte_atributos TEXT,                                           -- (24)
    idioma VARCHAR(50),                                             -- (25)
    numero_bandas INTEGER,                                          -- (26)
    linhas_pixel INTEGER,                                           -- (27)
    colunas_pixel INTEGER,                                          -- (28)
    tamanho_pixel VARCHAR(100),                                     -- (29)
    referencia_bibliografica TEXT,                                  -- (30)
    url_referencia TEXT,                                            -- (31)
    situacao_registro VARCHAR(50) DEFAULT 'solicitado_inclusao',    -- (32)
    data_registro TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT NOW(),  -- (33)
    usuario_registro_DB VARCHAR(200) DEFAULT CURRENT_USER,          -- (34)
    usuario_registro_COB VARCHAR(200)                               -- (35)
);
  1. Refere-se ao nome do schema no banco que corresponde ao projeto.
  2. Identificador da linha de registro na tabela.
  3. Nome estruturado da camada que contém todo informação nencessária para sua identificação.
  4. Tipo de dados da camada (VETOR ou RASTER).
  5. Contém o caminho do local onde os dados estão salvos.
    Considera se os dados estão salvos como arquivo (.shp ou .gpkg) ou como tabela no Banco de Dados.
  6. Faz referência para a origem dos dados.
  7. Ano de origem dos dados, que pode ser da coleta/criação ou publicação quando for informado.
  8. Escala informada da coleta/criação dos dados.
  9. Categoria da camada conforme estabelecido pelos administradores do Banco de dados.
    Pode ser consultada em: Categoria de Dados
  10. Refere-se a extensão geográfica de abrangência da camada informada nominalmente pelo usuário.
  11. Indica se os dados foram adaptados da fonte original.
    É indicado por uma resposta booleana (Sim ou Não).
  12. Indica o tipo de geometria para camadas vetoriais:
    - Ponto
    - Linha
    - Polígono
  13. Tipo de sigilo aplico aos dados da camada:
    - Público
    - Privado
    - Restrito
  14. Indica o Sistema de Referência de Coordenadas(SRC) da camada.
  15. Valor da latitude norte para extensão espacial da camada.
  16. Valor da latitude sul para extensão espacial da camada.
  17. Valor da longitude leste para extensão espacial da camada.
  18. Valor da longitude oeste para extensão espacial da camada.
  19. Texto que descreve em detalhes os dados da camada.
  20. Texto complementar ao resumo que pode indicar qualquer característica ou aspecto relavante sobre a camada.
  21. Indicação qual a codificação dos dados da camada.
  22. Mostra o número de feiçõe sexistentes na camada.
  23. Apresenta os nomes das colunas de atributos da camada.
  24. Contém o caminho do local onde a tabela de descrição dos atributos estão.
    Considera se a tabela está salva como arquivo ou no Banco de Dados.
  25. Idioma dos dados nas tabelas de atributos da camada.
  26. Indica o número de bandas para camadas do tipo raster.
  27. Apresenta a dimensão de linhas da camada raster com base na unidade de medida de pixels.
  28. Apresenta a dimensão de colunas da camada raster com base na unidade de medida de pixels.
  29. Indica o tamanho do pixel na mesma unidade de medida do SRC da camada.
  30. Contém a referência bibliográfica completa no formato ABTN para os dados da camada.
  31. Apresenta a URL de origem dos dados.
  32. Indica o status do registro da camada no Banco de Dados:
    - solicitado_inclusao
    - homologado.
  33. Apresenta a data de registro de forma automatizada, configurada no Banco de Dados.
  34. Apresenta o nome do usuário do Banco de Dados que realizou o registro.
  35. Apresenta o nome do usuário do sistema da máquina que realizou o registro.