Vivendo e Aprendendo

Experiência prática na administração de Banco de Dados

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:

.tbs Tablespace (Tablespace)- Script de criação do(s) espaço(s) de armazenamento
.vw View (visão)-Script de criação da visões
.usr 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)
.grt Grant (Permissão)- Script que estabelece as permissões a outros usuário e a role de aplicação
.rvk Revoke (Permissão)- Script que revoga as permissões a outros usuário e a role de aplicação
.syn Synonym (Sinônimo)- Script que estabelece os sinônimos dos objetos a outros usuários
.tab Table (Tabela)- Script de criação das tabelas
.con Constraint (Restrição)- Script de criação das restrições de integridade
.ind Index (Índice)- Script de criação dos índeces
.trg Trigger (Gatilho)- Script de criação dos gatilhos
.seq Sequence (Sequência)- Script de criação das sequências
.prc Stored Procedure (Procedimento Armazenado)- Script de criação de procedimentos armazenados
.fnc Stored Function (Função Armazenada)- Script de criação de funções armazenadas
.pks Package Specification (Especificação de Pacote) - Script de criação das especificações dos pacotes
.pkb Package Body (Corpo de Pacote) - Script de criação do corpo dos pacotes
.sql 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?

comments powered by Disqus