banco - HemersonGH/sigesdp GitHub Wiki

< Home < Padrões de Código < Banco de dados

Padrões Banco de Dados

Criação de evolutions, external e seeds

Evolutions

Todo script SQL que altera a estrutura do banco no SCHEMA do projeto, isto é, criação de tabelas, alteração, inserção de dados necessários para o funcionamento do sistema (Condições, status, grants, etc) são chamadas de evolutions. Elas devem ser criadas de forma sequencial e após conclusão devem ser enviadas para validação da equipe de banco de dados. Após validação, a evolution não deverá sofrer alterações.

Externals

São scripts SQL que realizam alterações que necessitam de outro projeto configurado. Isto é, grants para outro Schema, FKs para tabelas de outros schemas e etc. devem ser criados como externals, de forma análoga a evolution, elas devem ser criadas de forma sequencial e após conclusão devem ser enviadas para validação da equipe de banco de dados. Após validação, a external não deverá sofrer alterações.

Seeds

É todo script SQL que tem como missão apenas popular o banco de dados para fins de teste, não devem ser aplicadas em ambientes de produção nem homologação. Seeds tratam basicamente de inserts no banco de dados.

Padrões Postgresql

O desenvolvimento do banco de dados será utilizando os padrões de banco de dados Postgresql.

  • O padrão de codificação segue o padrão PostgreSQL (PostgreSQL)

O seguintes padrões serão utilizados como REGRA no desenvolvimento do projeto:

  • Nomes de schemas, sequences, tabelas, colunas e funções devem ser escritas em minúsculo utilizando o underline '_' para separar as palavras.

Exemplo

sigesdp
  • Palavras reservadas do SQL devem ser escritas todas MAIÚSCULAS.

Exemplo

SELECT * FROM sigesdp.pessoa WHERE id = 1;
  • Toda primary key (PK) será id e toda sequence deverá ser criada utilizando o tipo "serial", que criará a sequence no padrão 'nome_tabela_id_seq'

Exemplo

CREATE TABLE schema.table
(
  id serial NOT NULL, -- Identificador único da entidade.
  CONSTRAINT pk_veiculo PRIMARY KEY (id)
);

-- Que terá como script de criação da sequence:
-- OBS: Colocando o tipo da PK como "serial", o mesmo já criará o script abaixo, não sendo necessário coloca-lo.

CREATE SEQUENCE schema.table_id_seq
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;

  • Toda Foreign Key (FK) será "fk" seguido de "" com a primeira letra da tabela origem seguido de "" com o nome da tabela destino. Como exemplo a tabela "pessoa" que possui um identificador "id_endereco" da tabela "endereco", irá ser criado a FK a seguinte forma:
    fk_p_endereco
CREATE TABLE schema.tabela1
(
  id serial NOT NULL, -- Identificador único da entidade.
  id_tabela2 integer NOT NULL, -- Identificador único da entidade que realiza o relacionamento entre as entidades tabela1 e tabela2.
  CONSTRAINT pk_tabela PRIMARY KEY (id),
  CONSTRAINT fk_tabela2 FOREIGN KEY (id_tabela2)
      REFERENCES schema.tabela2 (id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE NO ACTION
)
  • Toda tabela deverá possuir comentários explicando qual sua funcionalidade.

Exemplo

COMMENT ON TABLE schema.table IS 'Comentário da tabela.';
  • O mesmo vale para suas colunas.

Exemplo

COMMENT ON COLUMN schema.table.column IS 'Comentário da coluna.';