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.';