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
_ onde deverá ser letras representando o módulo em que esta tabela pertença. ger_pessoa
Para Visão Descrição Exemplo
__vw onde deverá ser letras representando o módulo em que esta tabela pertença. ger_funcionario_vw
Para Sequências Descrição Exemplo
__sequence onde deverá ser letras representando o módulo em que esta tabela pertença. ger_funcionario_sequence
Para Colunas Descrição Exemplo
_ para coluna representando a chave primaria da tabela. cd_pessoa
_ para coluna(s) representando a presença de chave estrangeira. cd_municipio
_ para coluna(s) representando a presença de chave estrangeira. cd_municipionaturalidade
_ para coluna representando campo lógico(verdadeiro ou falso). fl_dependente, fl_encerrado
_
para coluna representando campo data. dt_nascimento

_
para coluna representando campo tempo. hr_saida
_ 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
_ para chave primaria. constraint sys_usuario_pk primary key (cd_usuario) enable
_ para indice unico. constraint sys_usuario_uk unique (login, email) enable
__<nome da tabela atual(destino sem prefixo>_ 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
___ 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.php

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