sábado, 9 de março de 2013

Database - Nomenclarutra dos objetos

Neste post apresentarei algumas regras para a nomenclatura dos objetos no banco de dados Oracle.
Todos os objetos no banco de dados, até mesmo as colunas das tabelas, deverão ser nomeados de acordo com as seguintes regras.
  • Minimo 1 caractere;
  • Máximo 30 caracteres;
  • O primeiro caractere deve ser uma letra;
  • Além de número e letras, apenas os caracteres especiais  "$", "_" e "#" são permitidos. 
  • Acentuação não é permitida.
  • Não podem coincidir com as palavras reservadas (CREATE, TABLE, COLUMN, NUMBER, FROM, SELECT...)
  • Ser único no namespace do objeto.
Outro aspecto que vale citar aqui é a diferenciação de maiúsculas e minúsculas, mais conhecido por Case insensitive/Case sensitive. Por padrão, todos objetos são criados de forma Case Insensitive, ou seja, o objeto pode ser referenciado sem a diferenciação de maiúsculas e minúsculas. Porém, também é possível criar objetos com nomes no estilo case sensitive. Não vejo nenhum beneficio em utilizar nomeclatura em formato case sensitive, mas é importate conhecer como funciona. Abaixo demonstrarei com fazer isto.

Criarei uma tabela simples, observe que a primeira letra é maiúscula e o restante minúsculo. Também utilizei números e um caracter especial apenas para enfatizar que eles podem ser utilizados.
SQL> create table Tabela123# (id number(4), descricao varchar2(50));

Table created.

Agora, vamos ver como ela foi criada pelo banco.
SQL> select table_name from user_tables where table_name='Tabela123#'; 

no rows selected

SQL> select table_name from user_tables where table_name='TABELA123#';

TABLE_NAME
------------------------------
TABELA123#

Ok, o banco criou em tudo maiusculo. Mas vamos fazer um teste selecionando a tabela de diversas formas.
SQL> select count(*) from tabela123#;

  COUNT(*)
----------
         0

SQL> select count(*) from TABELA123#;

  COUNT(*)
----------
         0

SQL> select count(*) from Tabela123#;

  COUNT(*)
----------
         0
Ótimo, está case insensitive. Os SQL funcionaram tanto para maiúsculo quanto minúsculo.

Agora vou mostrar como criar uma tabela com nome no estilo case sensitive. Fazer isto é muito simples, basta utilizar aspas duplas no nome do objeto.
SQL> create table "Tabela456#" (id number, descricao varchar2(30));

Table created.

SQL> select table_name from all_tables where upper(table_name) like 'TABELA%';

TABLE_NAME
------------------------------
TABELA123#
Tabela456#

Quando se utiliza esta forma de nomeclatura para o objeto, o mesmo deve ser sempre referenciado utilizando aspas duplas, caso contrário o banco irá retornar ORA-00942 informando que o objeto nao foi encontrado.
SQL> select * from Tabela456#;
select * from Tabela456#
              *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> select * from TABELA456#;
select * from TABELA456#
              *
ERROR at line 1:
ORA-00942: table or view does not exist


SQL> select * from "Tabela456#";

no rows selected


As regras que apresentei são válidas para outros objetos do banco, como View, Procedure, Function, Synonym, Package, Triggers e etc. Procure utilizar um padrão de nomenclatura para todo o sistema e sempre da forma mais intuitivo possível, isto facilitará a manutenção no futuro.

Nenhum comentário:

Postar um comentário