Escolar Documentos
Profissional Documentos
Cultura Documentos
dados.
1. Objetivo
Este guia de desenvolvimento tem o objetivo de apresentar aos desenvolvedores da JIVE as diretrizes para criação dos objetos (bancos,
esquemas, tabelas, índices e demais) nos bancos de dados que compõe a base da dados do Sistema Interno de Gestão, conhecido pelo
codinome “INDIE“.
As equipes de Data Engeneering, Business Intelligence & Analytics (DB&A) e Arquitetura estão alinhadas com os padrões e apoiarão as
orientações estabelecidas neste Guia.
Situação não previstas neste documento deverão ser previamente analisadas e adicionadas a este de forma a garantir o padrão.
Deve ter um nome coerente com o seu objetivo, que não deixe dúvidas a que se destina;
Não devem ser utilizadas preposições;
Não devem conter nomes próprios, de assuntos específicos ou qualquer nome que restrinja sua utilidade;
Exemplos:
sig_main_db;
sig_load_db.
Deve ter um nome coerente com o seu objetivo, que não deixe dúvidas a que se destina;
Não devem ser utilizadas preposições;
Não devem conter nomes próprios, de assuntos específicos ou qualquer nome que restrinja sua utilidade.
Sugere-se que o nome faça referencia ao serviço ao qual as tabelas a serem criadas no mesmo pertençam.
Exemplos:
system;
core;
investment.
Campos.
Índices;
Tabelas auxiliares e/ou de domínio ;
Devem ser escritas com letras minúsculas, separando as palavras “_” (underline)
snake_case;
Caso ocorra, abrevie os complementos menos relevantes, de forma que seja possível seu entendimento no momento da leitura;
Deve ter um nome coerente com o seu objetivo, que não deixe dúvidas a que se destina;
Não devem ser utilizadas preposições;
Não devem conter nomes próprios, de assuntos específicos ou qualquer nome que restrinja sua utilidade.
As tabelas filho devem referenciar
Exemplos:
tbl_group;
tbl_user;
tbl_user_group.
4.2. Nomenclatura de Campos
Caso ocorra, abrevie os complementos menos relevantes, de forma que seja possível seu entendimento no momento da leitura;
Deve ter um nome coerente com o seu objetivo, que não deixe dúvidas a que se destina;
id Identificador (único) smallint, int, bigint, int4, int8, int16, smallserial, serial, bigserial, oid, uuid
Por convenção, toda tabela criada deverá, obrigatoriamente, conter os seguintes campos conforme lista disponibilizada:
Chave primária:
Conforme dito no item 4.2.1. deste, toda tabela criada deverá obrigatoriamente conter uma chave primária (constraint primary key), mesmo
as que sejam apenas uma “tabela ponte“ ou uma tabela de informações complementares. O nome da chave primária deverá ser composta
da seguinte maneira:
4.2.2.1. Campo
Prefixo: id
Exemplos:
tbl_group → id_group;
tbl_user → id_user;
tbl_user_group → id_user_group (bridge table);
Prefixo: cpk;
Exemplos:
tbl_group → cpk_group
tbl_user → cpk_user
tbl_user_group → cpk_user_group (bridge table)
Na necessidade de chaves estrangeiras (constraint foreign key), estas deverão ser compotas da seguinte maneira:
Prefixo: cfk;
Exemplos:
tbl_group
PK: id_group;
tbl_user
PK: id_user;
tbl_user_group (bridge table):
PK: id_user_group
FK: id_group → cfk_user_group_group
FK: id_user → cfk_user_group_user
Importante: todo campo que represente uma chave estrangeira deverá seguir exatamente a mesma nomenclatura utilizada na tabela pai.
Entende-se como exceção situações onde a mesma tabela pai será referenciada mais que uma vez. Neste caso, todas as ocorrências
deverão receber uma nomenclatura complementar que os diferencie:
Exemplos:
tbl_user: (padrão)
PK: id_user;
tbl_company: (exceções previstas)
FK: id_user_insert;
FK: id_user_update.
Na necessidade criação de limitações de preenchimento dos campos (constraint check value), estes deverão ser compotas da seguinte
maneira:
Prefixo: ccv;
Exemplos:
tbl_user:
ds_eletronic_mail → ccv_user_eletronic_mail ;
Exemplos:
tbl_user:
idx_user_01
tbl_company:
idx_company_01
idx_company_02
Não devem conter nomes próprios, de assuntos específicos ou qualquer nome que restrinja sua utilidade.
As tabelas filho devem referenciar
Exemplos:
aux_postal_code;
aux_status_user;
aux_status_investments.
Serão consideradas tabelas especiais, tabelas que forem elaborada para acumular a sequencia e data de eventos específicos, como por
exemplo, o histórico de estados de de um documento, cujo as variações possam gerar informação
Para estes caso deverão ser adotados os seguintes critérios para nomeação destas tabelas especias:
Exemplos:
tbl_investment;
tabela principal;
tbl_investment_status;
tabela que contem a “historificação” do campo id_status_investment;
aux_status_investments;
tabela auxiliar com o domínio do campo id_status_investment.
Entende-se por tabelas longas, tabelas que contenham uma quantidade de colunas superior a 20.
Entende-se por coluna de texto longo as que possuam uma largura superior a 4000 bytes.
Para estes casos especiais, recomenda-se que a tabela seja dividida em duas parte, mantendo os campos com baixa volatilidade ou sem
necessidade de atualizações na tabela principal e os campos de alta volatilidade em uma tabela complementar. Esta medida evitará a
fragmentação excessiva da base de dados e consequente lentidão no servido, reduzindo também a necessidade de manutenções.
Exemplos:
tbl_investment;
tabela principal com campos de baixa volatilidade;
tbl_investment_complement;
tabela complementar com campos de alta volatilidade;
tbl_investment_text;
tabela complementar com campos de texto longo;
5. Procedures & Funções
Este capítulo tem como objetivo detalhar os padrões de nomenclatura para criação de novas procedures e funções definidas pelos
usuários.
5.1. Procedures
5.1.1. C.R.U.D
5.1.3. Avulsas
5.2. Funções
6. Anexos
DB&A: Data, Business Intelligence & Analytics. Área da Jive responsável pela ingestão, armazenamento, manipulação e distribuição
interna de dados e informações;
Esquemas:
Índices:
Sequências:
Snake case: forma de notação em programação e/ou criação de objetos.
Exemplos de outras formas de notação:
UPPERCASE;
lowercase;
CamelCase;
snake_case.
Tabelas: