Padronizando Nomes de Objeto - Banco de Dados
by Gilberto C. Andrade on 08 maio 2009
Tagged as: Database, nomear-objeto, padrão,
Primeiro definimos a extensão dos arquivos que conterão as sentenças de criação dos objetos do banco de dados:
|
Tablespace (Tablespace)- Script de criação do(s) espaço(s) de armazenamento |
|
View (visão)-Script de criação da visões |
|
Schema (esquema)- Criação do Proprietário do Módulo (Schema), juntamente com a role(papel) de aplicação e usário(s) correspondente(s) |
|
Grant (Permissão)- Script que estabelece as permissões a outros usuário e a role de aplicação |
|
Revoke (Permissão)- Script que revoga as permissões a outros usuário e a role de aplicação |
|
Synonym (Sinônimo)- Script que estabelece os sinônimos dos objetos a outros usuários |
|
Table (Tabela)- Script de criação das tabelas |
|
Constraint (Restrição)- Script de criação das restrições de integridade |
|
Index (Índice)- Script de criação dos índeces |
|
Trigger (Gatilho)- Script de criação dos gatilhos |
|
Sequence (Sequência)- Script de criação das sequências |
|
Stored Procedure (Procedimento Armazenado)- Script de criação de procedimentos armazenados |
|
Stored Function (Função Armazenada)- Script de criação de funções armazenadas |
|
Package Specification (Especificação de Pacote) - Script de criação das especificações dos pacotes |
|
Package Body (Corpo de Pacote) - Script de criação do corpo dos pacotes |
|
Reponsável por chamar/executar os outros arquivos em uma sequencia apropriada |
Para Tabelas | Descrição | Exemplo |
---|---|---|
<prefixo>_<nometabela> |
onde <prefixo> deverá ser letras representando o módulo em que esta tabela pertença. |
ger_pessoa |
Para Visão | Descrição | Exemplo |
---|---|---|
<prefixo>_<nomevisao>_vw |
onde <prefixo> deverá ser letras representando o módulo em que esta tabela pertença. |
ger_funcionario_vw |
Para Sequências | Descrição | Exemplo |
---|---|---|
<prefixo>_<nometabela>_sequence |
onde <prefixo> deverá ser letras representando o módulo em que esta tabela pertença. |
ger_funcionario_sequence |
Para Colunas | Descrição | Exemplo |
---|---|---|
<cd>_<nometabela> |
para coluna representando a chave primaria da tabela. |
cd_pessoa |
<cd>_<nometabelaestrangeira> |
para coluna(s) representando a presença de chave estrangeira. |
cd_municipio |
<cd>_<nometabelaestrangeira><significadodorelacionamento> |
para coluna(s) representando a presença de chave estrangeira. |
cd_municipionaturalidade |
<fl>_<nomecampo> |
para coluna representando campo lógico(verdadeiro ou falso). |
fl_dependente, fl_encerrado |
<dt>_<nomecampo> |
para coluna representando campo data. |
dt_nascimento |
<hr>_<nomecampo> |
para coluna representando campo tempo. |
hr_saida |
<nu>_<nomecampo> |
para coluna representando campo numerico. |
nu_leicriacao |
Para nomear constraints, devemos usar um padrão porque não pode haver repetição de nomes dos mesmos (limitado a 30 caracteres - limitação do oracle).
Para Constraints | Descrição | Exemplo |
---|---|---|
<nome da tabela com prefixo>_<pk> |
para chave primaria. |
constraint sys_usuario_pk primary key (cd_usuario) enable |
<nome da tabela com prefixo>_<uk> |
para indice unico. |
constraint sys_usuario_uk unique (login, email) enable |
<nome da tabela origem sem prefixo>_<to>_<nome da tabela atual(destino sem prefixo>_<fk> |
para coluna(s) representando a presença de chave estrangeira. |
constraint entidade_to_subentidade_fk foreign key (id_entidade) references kira.sys_entidade (id_entidade) enable |
<nome da tabela sem prefixo>_<nome da coluna>_<ck>_<um digito - caso ocorra repeticao> |
para check. |
create table ergon.ergon_regras_compara_ff ( regra number(6,0) constraint regras_compara_ff_regra_ck_0 not null enable, fl_ativa_1 char(1 byte) default ‘n’ constraint rg_cp_ff_fl_ativa_1_ck_0 not null enable, fl_ativa_2 char(1 byte) default ‘n’ constraint rg_cp_ff_fl_ativa_2_ck_0 not null enable, fl_ativa_3 char(1 byte) default ‘n’ constraint rg_cp_ff_fl_ativa_3_ck_0 not null enable, limite_diferenca number(11,2), constraint ergon_regras_compara_ff_pk primary key (regra) enable, constraint rg_cp_ff_fl_ativa_1_ck_1 check (fl_ativa_1 in (‘s’, ‘n’)) enable novalidate, constraint rg_cp_ff_fl_ativa_2_ck_2 check (fl_ativa_2 in (‘s’, ‘n’)) enable novalidate, constraint rg_cp_ff_fl_ativa_3_ck_3 check (fl_ativa_3 in (‘s’, ‘n’)) enable novalidate ) ; |
Nota: em todos os casos acima, sendo o nome do objeto grande, devemos abreviar o nome do mesmo. ex.:
aplicacoes = apli (4)
aplicacao_funcoes = apfu (2:2)
aplicacao_funcao_papeis = apfp (2:1:1)
aplicacao_funcao_papel_bananas = afpb (1:1:1:1)
aplicacao_funcao_papel_banana_macas = (Seja criativo!)
REFERENCIA: NamingConventions
Uso essa estratégia há algum tempo e fica muito fácil de trabalhar e manter.
Você adota uma notação? Qual notação você usa?