Nomes de atributos
1. Os nomes de atributos/colunas devem ser atribuídos de forma a caracterizar a individualidade do dado no contexto do CNJ e não apenas no ambiente da aplicação.
2. Todos os nomes utilizados devem obedecer a uma estrutura composta de dois elementos básicos:
- Classe do dado;
- Objeto(s), com ou sem qualificador(es). O qualificador poderá ser posicionado imediatamente após a classe do dado ou após o objeto, objetivando o melhor significado do dado.
3. Na definição dos elementos básicos constituintes dos nomes de atributos/colunas devem ser consideradas as observações da Tabela 1. Exemplos de nomes de atributos/colunas podem ser vistos na Tabela 2 .
4. Na composição do nome de atributo/coluna deve ser utilizada somente a abreviatura de sua classe obtida do Glossário de Classes (vide Tabela 3). Os tipos de dados da Tabela 3 servem como referência, devendo ser adequados ao caso específico quando não forem coerentes com os dados que serão armazenados.
5. Quando da criação de um nome de atributo/coluna, devem ser evitadas as seguintes anomalias:
- nomes distintos para dados iguais;
- nomes iguais para dados distintos;
- nomes que não retratam o significado do dado;
- nomes demasiadamente longos ou curtos;
- abreviaturas fora de critérios estabelecidos nesta norma.
6. Caso haja mais de 30 caracteres, devem ser seguidos os critérios de abreviação definidos no item Regras específicas para criação de nomes.
7. Em modelos multidimensionais, para a composição de nomes de atributos/colunas que sejam provenientes do operacional, desde que sejam redundantes e somente em tabelas fato, deve ser incluída como infixo a sigla nat logo após a sigla que identifica a classe do dado.
Exemplo:
NUM_NAT_PROTOCOLO
8. As tabelas consideradas críticas (ou seja, àquelas que, de acordo com as características da aplicação e necessidades do usuário demandante são consideradas críticas e necessitam ser auditadas) devem incluir colunas de auditoria com os nomes e tipos de dados especificados na Tabela 4.
9. Em modelos multidimensionais, as tabelas de dimensão consideradas críticas (ou seja, àquelas que, de acordo com as características da aplicação e necessidades do usuário demandante são consideradas críticas e necessitam ser auditadas) devem conter colunas de auditoria adicionais, com os seguintes nomes e tipos de dados especificados na Tabela 5.
Tabela 1
Classe do dado |
Identifica a natureza do dado. Deve ser obrigatoriamente a primeira palavra na estrutura e constar no Glossário de Classe (vide Tabela 3 ). A classe deve ser única no nome do atributo/campo, isto é, não poderá haver nome de atributo/campo iniciado com duas classes. Exemplos de classes: código, número, data, valor, nome, etc. |
Objeto |
Retrata a entidade, o relacionamento, o arquivo ou o registro, ao qual o dado pertence. Na estrutura do nome de atributo/coluna, sua existência é obrigatória e pode ocorrer mais de uma vez. Quando necessário, para atender ao limite de tamanho do nome (máximo de 30 caracteres), o(os) objeto(s) poderá(ão) ser abreviado(s), tomando-se o devido cuidado com a perda de significado. Exemplo de objetos: servidor, processo, ministro, departamento. |
Qualificador |
Detalha e completa o significado do dado, caracterizando, seja a classe, seja(m) o(s) objeto(s) que compõem um nome de atributo/campo. Quando se refere a um objeto, o qualificador geralmente é identificado como um atributo de uma entidade ou de um relacionamento entre entidades. Haverá situações em que somente um qualificador é suficiente para individualizar um dado, assim como haverá casos em que o qualificador é dispensável. Exemplos de qualificadores: atual, inicial, final, parcial, último, primeiro, etc. |
Tabela 2
Nome do dado |
Classe do dado |
Objeto |
Qualificador |
NUM_PROCESSO_VINCULADOR |
NUM |
PROCESSO |
VINCULADOR |
FLG_JUSTICA_GRATUITA |
FLG |
JUSTICA_GRATUITA |
- |
DAT_ULT_JULGAMENTO |
DAT |
JULGAMENTO |
ULTIMO |
Tabela 3
Classe |
Abrev. |
Tipo de dado |
Utilização/Exemplos |
|
Arquivos e documentos binários |
Campo longo binário |
BIN |
MySQL: BLOB Oracle: BLOB PostgreSQL: BYTEA |
Para dados binários longos de até 4 gigabytes. Exemplos: BIN_ASSINATURA_DIGITAL BIM_ARQUIVO_ELETRONICO |
Imagem |
IMG |
MySQL: LONGBLOB Oracle: BLOB PostgreSQL: BYTEA |
Para dados que armazenam imagens. Exemplos: IMG_FOTOGRAFIA_MINISTRO IMG_PRODUTO |
|
Dados textuais ou cadeias de caracteres |
Campo longo textual |
DOC |
MySQL: LONGTEXT Oracle: CLOB PostgreSQL: TEXT |
MySQL: para dados textuais longos. Oracle: para dados textuais longos de até 4 gigabytes. Exemplos: DOC_ATA_DISTRIBUICAO DOC_DECISAO |
Código |
COD |
MySQL: VARCHAR(X) Oracle: VARCHAR2(X) PostgreSQL: CHARACTER VARYING(X) |
Para conjuntos de símbolos alfanuméricos organizados intencionalmente de modo a denotar objetos. Veja também a utilização/exemplo da classe de dado sigla. Exemplos: COD_TIPO_JULGAMENTO COD_SETOR COD_CPF COD_CEP |
|
Descrição |
DSC |
MySQL: VARCHAR(X) Oracle: VARCHAR2(X) PostgreSQL: CHARACTER VARYING(X) |
Para dados descritivos de objetos ou situações. Exemplos: DSC_CLASSE DSC_CATEGORIA_PROCESSO |
|
Nome |
NOM |
MySQL: VARCHAR(X) Oracle: VARCHAR2(X) PostgreSQL: CHARACTER VARYING(X) |
Para palavra ou expressão que designa, por extenso ou abreviadamente, um objeto concreto ou abstrato. Exemplos: NOM_PESSOA NOM_MAE |
|
Sigla |
SIG |
MySQL: VARCHAR(X) Oracle: VARCHAR2(X) PostgreSQL: CHARACTER VARYING(X) |
Para classificar um modo particular de código. Distingue-se dos outros tipos de código pelo fato de ser formada por um processo de redução de palavras ou expressões. Exemplos: SIG_CLASSE SIG_USUARIO |
|
Texto |
TXT |
MySQL: TEXT(X) ou LONGTEXT Oracle: VARCHAR2(X) PostgreSQL: TEXT |
Para dados textuais diversos que não se enquadrem em outras categorias. Obs.: classes textuais mais específicas como NOM , DSC e DOC devem ser preferidas, sempre que apropriadas. Exemplos: TXT_COMPLEMENTO TXT_COMENTARIO TXT_DISPOSITIVO_LEGAL |
|
XML |
XML |
MySQL: LONGTEXT Oracle: CLOB(X) ou XMLTYPE PostgreSQL: XML |
Para domínios de dados que irão armazenar documentos XML. Exemplos: XML_CONFIGURACAO XML_CABECALHO |
|
Dados temporais |
Hora |
HR |
MySQL: TIME Oracle: não tem um tipo de dado somente para hora. PostgreSQL: TIME |
Para dados referentes a data, data com a hora, hora ou somete o ano. Exemplos: DAT_INCLUSAO DAT_ENTRADA_PROTOCOLO DAT_RECEBIMENTO_DESTINO HR_INICIO_FUNCIONAMENTO NUM_ANO_BASE NUM_MES_BASE |
Data e data-hora |
DAT |
MySQL: DATE ; DATETIME Oracle: DATE PostgreSQL: DATE ou TIMESTAMP |
||
Mês |
NUM |
MySQL: INT(2) Oracle: NUMBER(2) PostgreSQL: NUMERIC(2) |
||
Ano |
NUM |
MySQL: YEAR Oracle: NUMBER(X) PostgreSQL: NUMERIC(X) |
||
Dados numéricos |
Dígito verificador |
DV |
MySQL: INT(X) Oracle: NUMBER(X) PostgreSQL: NUMERIC(X) |
Para dados de controle sobre um dado, utilizados para crítica. Exemplos: DV_PROCESSO DV_AGENCIA_PAGAMENTO |
Número |
NUM |
MySQL: INT(X) Oracle: NUMBER(X) PostgreSQL: NUMERIC(X) |
Para dado numérico que individualiza ou caracteriza um objeto. Exemplos: NUM_TITULO_ELEITOR NUM_PROCESSO NUM_PROTOCOLO |
|
Percentual |
PERC |
MySQL: INT(X[,X]) Oracle: NUMBER(X[,X]) PostgreSQL: NUMERIC(X[,X]) |
Para dados que expressam uma proporção sob a forma de percentual. Exemplos: PERC_MULTA PERC_ADICIONAL_PAGO |
|
Quantidade |
QTD |
MySQL: INT(X[,X]) Oracle: NUMBER(X[,X]) PostgreSQL: NUMERIC(X[,X]) |
Para dados que exprimem uma contagem ou medida quantificadora. Exemplos: QTD_JUNTADA_LINHA QTD_APENSO QTD_DIA_AUSENCIA QTD_DIA_FERIAS |
|
Sequencial |
SEQ |
MySQL: INT(10) Oracle: NUMBER(10) PostgreSQL: INTEGER(10) |
Para dados numéricos sequenciais que são gerados automaticamente. Obs.: exclusivamente em modelos multidimensionais deve ser utilizada a sigla ID. Exemplos: SEQ_CUSTA_PROCESSUAL SEQ_AGENDAMENTO_PROCESSO |
|
Valor |
VLR |
MySQL: DEC(X,Y) Oracle: NUMBER(X,Y) PostgreSQL: NUMERIC(X,Y) |
Para dados numéricos que expressam quantias em dinheiro. Exemplos: VLR_CUSTA_PROCESSUAL VLR_IMPETRANTE_EXCEDENTE VLR_DEDUCAO_LEGAL |
|
Alternativas lógicas |
Flag |
FLG |
MySQL: CHAR(1) ou INT(1) Oracle: VARCHAR2(1) ou NUMBER(1) PostgreSQL: CHARACTER(1) ou NUMERIC(1) ou BOOLEAN |
Para dados que indicam status ou possibilidades lógicas – sim ou não; 0 (falso) ou 1 (verdadeiro). Obs.: exclusivamente em modelos multidimensionais deve sempre ser utilizado o tipo NUMBER(1) e são admitidos os seguintes valores de domínio: 0 (falso); 1 (verdadeiro); -1 (não-informado); ou -2 (não se aplica). Exemplos: FLG_BAIXADO FLG_ADVOGADO FLG_ATIVO |
Opções de classificação ou tipificação |
Tipo |
TIP |
MySQL: CHAR(X) quando armazenar letras; INT(X) quando armazenar números. Oracle: VARCHAR2(X) quando armazenar letras; NUMBER(X) quando armazenar números. PostgreSQL: CHARACTER VARYING(X) quando armazenar letras; NUMERIC(X) quando armazenar números. |
Para dados de classificação ou tipificação cujos domínios não possuam uma tabela de relacionamento que contenha suas descrições. A descrição dos domínios deve ser explicitada no comentário do atributo. Obs.: a utilização de uma tabela é recomendada e deve sempre ser avaliada. Esta classe deve ser usada exclusivamente para domínios de dados estáveis e pouco numerosos. Exemplos: TIP_JULGAMENTO TIP_CONFIDENCIALIDADE TIP_ENDERECO |
Tabela 4
Nome da coluna |
Tipo de dado |
Comentário |
USU_INCLUSAO |
MySQL:VARCHAR(30) Oracle:VARCHAR2(30) PostgreSQL:CHARACTER VARYING(X) |
Coluna alimentada por uma trigger de auditoria ou por uma função controlada pela própria aplicação com o login do usuário que efetuou a inclusão do registro. Esta coluna é alimentada uma única vez, somente na inclusão do registro. |
DAT_INCLUSAO |
MySQL: DATETIME Oracle: DATE PostgreSQL: DATE |
Coluna alimentada por uma trigger de auditoria ou por uma função controlada pela própria aplicação com a data que o registro foi incluído. Esta coluna é alimentada uma única vez na inclusão do registro. |
USU_ALTERACAO |
MySQL: VARCHAR(30) Oracle: VARCHAR2(30) PostgreSQL:CHARACTER VARYING(X) |
Coluna alimentada por uma trigger de auditoria ou por uma função controlada pela própria aplicação com o login do usuário que efetuou a alteração do registro. Esta coluna é alimentada todas as vezes que o usuário efetuar uma alteração no registro. |
DAT_ALTERACAO |
MySQL: DATETIME Oracle: DATE PostgreSQL: DATE |
Coluna alimentada por uma trigger de auditoria ou por uma função controlada pela própria aplicação com a data que o registro foi alterado. Esta coluna é alimentada toda vez que ocorrer alteração no registro. |
Tabela 5
Nome da coluna |
Tipo de dado |
DAT_MOVIMENTO |
MySQL: DATETIME Oracle: DATE PostgreSQL: DATE |
ID_MOVIMENTO |
MySQL: INT(10) Oracle: NUMBER(10) PostgreSQL: NUMERIC(10) |
FLG_OPERACIONAL_ATIVO |
MySQL: INT(1) Oracle: NUMBER(1) PostgreSQL: NUMERIC(1) |