Padrão de Desenvolvimento - Banco de Dados
Padronização de nomenclatura de estrutura de dados e diretrizes para a criação de qualquer objeto no banco de dados tal como tabelas, colunas, chaves primárias, estrangeiras, índices, dentre outros.
Índice
NOMENCLATURA
CONSIDERAÇÕES GERAIS
Para a criação de qualquer objeto no banco de dados tenha em mente as seguintes premissas:
- Escrever em maiúsculo;
- Separe os nomes com underline;
- Deve conter até 30 caracteres;
- Não usar verbos;
- Não utilizar palavras no plural;
- Não usar preposições;
- Não usar acentuação;
Os comentários das tabelas e colunas deverão ser preenchidos.
Exemplos:
COMMENT ON TABLE OWNER.FUNCIONARIO IS ‘Quadro de funcionários da companhia’; |
COMMENT ON COLUMN OWNER.FUNCIONARIO.FUNC_NR_CPF IS ‘Número de cadastro de pessoa física’; |
TABELAS
Visando facilitar a identificação dos objetos associados as tabelas, definiremos um identificador para cada tabela. Este identificador será utilizado na composição dos nomes das colunas, chaves primárias e estrangeiras.
O identificador pode conter até 4 caracteres e deverá ser único em todo o banco de dados. Caso as regras abaixo gerem um identificador que já foi utilizado no banco de dados, escolha outra forma coerente de criá-lo.
Se o nome da tabela possui apenas uma palavra, o identificador será as 4 primeiras letras.
Exemplo:
TABELA PESSOA
IDENTIFICADOR PESS
Se o nome da tabela for composto de duas palavras, o identificador será as duas primeiras letras de cada palavra.
Exemplo:
TABELA PESSOA_CONTATO
IDENTIFICADOR PECO
Se o nome da tabela for composto de três palavras, o identificador será as duas primeiras letras da primeira palavra e a primeira letra das demais palavras.
Exemplo:
TABELA PESSOA_CONTATO_TIPO
IDENTIFICADOR PECT
Se o nome da tabela possui quatro palavras ou mais, o identificador será as duas primeiras letras da primeira palavra e a primeira letra de duas das demais palavras, escolha as duas palavras consideradas mais significativas.
Exemplo:
TABELA MM_CONTRATO_VITALICIO_PLANO
IDENTIFICADOR MMCP
TABELAS TEMPORÁRIAS
As tabelas temporárias deverão ser criadas utilizando o prefixo "TEMP" a fim de facilitar a sua identificação no banco de dados.
VIEWS
As views deverão ser criadas utilizando o prefixo "VW" a fim de facilitar a sua identificação no banco de dados.
COLUNAS
Regras gerais:
- Utilize um nome que identifique e individualize o dado dentro da tabela;
- Dê nomes distintos para dados distintos;
- Se a coluna armazena valores especifico de um domínio, adicione as possibilidades no comentário e se possível defina um valor default;
O nome da coluna deve ser formado do Identificador da tabela + Sigla do tipo de dado + Texto informativo (sempre que necessário).
Para definição da sigla do tipo de dado utilize como referência a tabela abaixo:
SIGLA | TIPO DE DADO | DESCRIÇÃO |
ID | NUMBER | Coluna que armazenará a chave primária da tabela.
Exemplo chave simples: PESS_ID No caso de chave composta cujas colunas são provenientes de outras tabelas, as colunas devem permanecer com os mesmos nomes da tabela de origem. Caso contrário, deve ser adicionado um texto informativo. |
TX | VARCHAR2 | Coluna que armazenará um valor com caracteres alfanuméricos.
Exemplos: PESS_TX_NOME, ESTA_TX_SIGLA, PROD_TX_DESCRICAO |
IN | NUMBER
VARCHAR2 |
Coluna que armazenará um valor pertencente a um dominio especifico.
Exemplos: PESS_IN_ATIVA (Valores: 0-Inativo, 1-Ativo) PESS_IN_SEXO (Valores: F-Feminino, M-Masculino, I-Indefinido) |
NR | NUMBER | Coluna que armazenará valores numéricos inteiros.
Exemplo: PESS_NR_IDENTIDADE |
VL | NUMBER | Coluna que armazenará valores numéricos com possibilidade de casas decimais.
Exemplo: PROD_VL_PRECO |
DT | DATE
TIMESTAMP |
Coluna que armazenará valores do tipo data.
Exemplo: PROD_DT_VENCIMENTO |
HR | DATE
TIMESTAMP |
Coluna que armazenará valores do tipo hora.
Exemplo: AVAL_HR_INICIAL |
CONSTRAINTS
CHAVE PRIMÁRIA
A chave primária deve ser criada utilizando o prefixo “PK” + Identificador da tabela. O índice associado a essa chave deverá levar o mesmo nome.
Exemplo:
TABELA PESSOA
COLUNA PESS_ID
CHAVE PRIMÁRIA PK_PESS
ÍNDICE CHAVE PRIMÁRIA PK_PESS
CHAVE ESTRANGEIRA
A chave estrangeira deve ser criada utilizando o prefixo “FK” + Identificador da tabela onde a chave estrageira será criada + Identificador da tabela de origem da chave estrangeira. Sendo que a coluna deve manter o mesmo nome da tabela de origem.
Exemplo:
TABELA PESSOA
COLUNA PESS_ID
TABELA FUNCIONARIO
COLUNA PESS_ID
CHAVE ESTRANGEIRA FK_FUNC_PESS
Se houver múltiplas chaves estrangeiras provenientes de uma mesma tabela, adicione um texto informativo apropriado ao final do nome da coluna e do identificador padrão da chave estrangeira.
Exemplo:
TABELA FUNCIONARIO
FK_FUNC_FUNC_GERENTE
FK_FUNC_FUNC_SUBSTITUTO
Deve ser criado um índice para cada chave estrangeira utilizando o prefixo “IN” + Identificador da chave estrangeira.
Exemplo:
IN_ FK_FUNC_PESS
ÍNDICES
O nome do índice deve ser formado pelo prefixo “IN” + Nome da coluna na tabela + Texto informativo (sempre que necessário). Exceto para chaves estrangeiras e primárias, conforme já definido.
SEQUENCE
O nome da sequence deve começar com o prefixo “SQ” + Nome da coluna na tabela que receberá o valor da sequence;
Exemplo:
TABELA PESSOA
COLUNA PESS_ID
SEQUENCE SQ_ PESS_ID
DIRETRIZES PARA UTILIZAÇÃO
Por questões de segurança a aplicação não irá se conectar ao banco de dados utilizando o usuário owner do schema, mas sim com um usuário exclusivo.
Sugestão:
SCHEMA/OWNER MODRED
USUÁRIO DA APLICAÇÃO MODRED_APLICACAO
PERMISSÃO
Para possibilitar ao usuário da aplicação a consulta e manipulação dos dados, devem ser atribuídas as devidas permissões para cada objeto criado no SCHEMA. Invés de atribuir automaticamente todas as permissões, faça uma análise crítica se cada uma delas realmente faz sentido para o objeto em questão.
Deverão ser criados dois ROLES, conforme explicado abaixo:
RMODRED_READ: todas as permissões de SELECT das tabelas devem ser atribuídas a este role;
RMODRED_WRITE: todas as permissões de INSERT, UPDATE e DELETE das tabelas e de SELECT das sequences devem ser atribuídas a este role;
O usuário da aplicação deve pertencer a ambos.
Exemplos:
GRANT SELECT ON MODRED.NOME_TABELA TO RMODRED_READ; |
GRANT INSERT, UPDATE, DELETE ON MODRED.NOME_TABELA TO RMODRED_WRITE; |
GRANT SELECT ON MODRED.NOME_SEQUENCE TO RMODRED_WRITE; |
SINÔNIMO
Com o objetivo de remover a necessidade de informar o owner, também deverão ser criados sinônimos para os objetos.
Exemplos:
CREATE OR REPLACE SYNONYM MODRED_APLICACAO.NOME_TABELA FOR MODRED.NOME_TABELA; |
CREATE OR REPLACE SYNONYM MODRED_APLICACAO.NOME_SEQUENCE FOR MODRED. NOME_SEQUENCE; |