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 SELECTem tabelas de dadosGRANT INSERTna tabelametadados_camadasGRANT INSERT, UPDATEna 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 UPDATEna tabelametadados_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 | |
- Refere-se ao nome do schema no banco que corresponde ao projeto.
- Identificador da linha de registro na tabela.
- Nome estruturado da camada que contém todo informação nencessária para sua identificação.
- Tipo de dados da camada (VETOR ou RASTER).
- 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. - Faz referência para a origem dos dados.
- Ano de origem dos dados, que pode ser da coleta/criação ou publicação quando for informado.
- Escala informada da coleta/criação dos dados.
- Categoria da camada conforme estabelecido pelos administradores do Banco de dados.
Pode ser consultada em: Categoria de Dados - Refere-se a extensão geográfica de abrangência da camada informada nominalmente pelo usuário.
- Indica se os dados foram adaptados da fonte original.
É indicado por uma resposta booleana (Sim ou Não). - Indica o tipo de geometria para camadas vetoriais:
- Ponto
- Linha
- Polígono - Tipo de sigilo aplico aos dados da camada:
- Público
- Privado
- Restrito - Indica o Sistema de Referência de Coordenadas(SRC) da camada.
- Valor da latitude norte para extensão espacial da camada.
- Valor da latitude sul para extensão espacial da camada.
- Valor da longitude leste para extensão espacial da camada.
- Valor da longitude oeste para extensão espacial da camada.
- Texto que descreve em detalhes os dados da camada.
- Texto complementar ao resumo que pode indicar qualquer característica ou aspecto relavante sobre a camada.
- Indicação qual a codificação dos dados da camada.
- Mostra o número de feiçõe sexistentes na camada.
- Apresenta os nomes das colunas de atributos da camada.
- 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. - Idioma dos dados nas tabelas de atributos da camada.
- Indica o número de bandas para camadas do tipo raster.
- Apresenta a dimensão de linhas da camada raster com base na unidade de medida de pixels.
- Apresenta a dimensão de colunas da camada raster com base na unidade de medida de pixels.
- Indica o tamanho do pixel na mesma unidade de medida do SRC da camada.
- Contém a referência bibliográfica completa no formato ABTN para os dados da camada.
- Apresenta a URL de origem dos dados.
- Indica o status do registro da camada no Banco de Dados:
- solicitado_inclusao
- homologado. - Apresenta a data de registro de forma automatizada, configurada no Banco de Dados.
- Apresenta o nome do usuário do Banco de Dados que realizou o registro.
- Apresenta o nome do usuário do sistema da máquina que realizou o registro.