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:

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