quinta-feira, 13 de junho de 2013

Estruturas de Banco de Dados : "TABELAS". - PARTE I

 Olá como estão todos? Espero que bem, neste artigo nós iremos bater um papo sobre uma das estruturas do nosso banco de dados Oracle, que compõe de uma certa maneira a parte mais importante do mesmo, pois é onde fazemos nossos planejamentos de como será nossas aplicações, que relacionamentos irão ter e como podem se comunicar entre si, para assegurar assim uma melhor performance e agilidade em nossos aplicativos. Eu estou aqui me referindo as TABELAS, estruturas coorelacionadas que dão vida a um modelo de dados lógico.


CONCEITUANDO TABELA

Muitos autores tem como conceituação de o que vem a ser uma tabela, como uma espécie de unidade de armazenamento de dados, realizado em forma de linhas e colunas como uma planilha.
Tendo em vista que não somente podemos encarar dessa forma a definição de tabela vejamos o que diz o autor Bob Bryla ( DBA HANDBOOK - Oracle Press ) sobre a questão :

"Uma tabela é uma unidade de armazenamento em um banco de dados Oracle. Sem tabelas um banco de dados não tem valor para uma empresa. Independentemente do tipo de tabela os seus dados são armazenados em linhas e colunas, similar ao modo como os dados são armazenados em uma planilha. Mas as semelhanças terminam aí. A robustez de uma tabela de banco de dados Oracle torna uma planilha uma segunda opção ineficiente ao decidir sobre um local para armazenar informações importantes."

A explicação utilizada pelo autor é mais do que perfeita e traduz o sentimento que todo DBA deve ter com relação a este tipo de segmento de banco de dados.


Dentre as inúmeras aplicabilidades de uma tabela vale salientar anteriormente a isso, quais são as características de uma tabela em si, o que a compõe e quais as possibilidades neste sentido.

CARACTERÍSTICAS DE UMA TABELA ORACLE

Para toda e qualquer composição de uma tabela oracle há diversas combinações para determinados tipos de armazenamento de dados, cada um recomendado para a informação que será resgatada através das instruções SQL, veja por exemplo as características princiais :
  • nome das colunas, tipos de dados,armazenamento do tipo de dados e especificações de precisão.
  • especificações de armazenamento relacionadas à tabela geral
  • restrições (constraints) relacionadas à tabela
  • propriedades associadas à tabela
  • especificações de partições
  • associação de recursos especiais como a tabela, como compactação ou desativação de registro em log ( nologging)

TIPOS DE DADOS DAS TABELAS ORACLE

Além de possuir muitas características combinadas ou não, as tabelas ainda contam com  uma grande quantidade de tipificações para os dados que nelas serão armazenados, veremos abaixo cada um deles e onde se aplicam.

Os tipos de dados mais conhecidos pelos desenvolvedores, administradores de dados e DBA's em geral são :


  • VARCHAR2 : utilizado de forma muito comum em diferentes tipos de modelos de dados, são usados frequentemente para armazenar informações do tipo CHARACTER ou seja, letras, números, mescla de letras e números, tudo depende de como as entradas de dados serão realizadas pelos responsáveis. Sua capacidade máxima é de 4000 bytes. 
Obs: Lembrem-se sempre que no caso de bancos de dados em português, de acordo com a nossa linguá, cada acentuação é um byte a mais para o Oracle, portanto se você for realizar um cálculo minucioso a cerca de tamanhos de linhas em bytes, nunce despreze a acentuação.

  • NUMBER : são como o próprio nome já sugere, utilizados no armazenamento de números, que poderão ou não serem frutos de cálculos ou resultados de operações matemáticas em geral. Podemos ainda atribuir no caso de informações de valores monetários, ou qualquer outro tipo de medida que requeira um armazenamento diferenciado, utilizarmos a opção de precisão numérica.
  • LONG : via de regra são usados para armazenamento de dados com um comprimento maior do que habitual, e sua capacidade é no máximo até 2GB.
  • DATE : tipo de dados utilizado para manipulações de diversos formatos e entradas de dados relacionadas a periodos. Possui um range muito grande de aceitação que compreende de 1 de Janeiro de 4712 A.C até 31 de Dezembro de 9999 A.D.
  • TIMESTAMP : não contém informações sobre fuso horário e tem um poder de armazenamento que compreende a precisão de segundos com até 9 digitos.
  • TIMESTAMP com TIME ZONE : a unica diferença deste para o anterior é que ele possui mais duas colunas, compreendendo TIME_ZONE_HOUR e TIME_ZONE_MINUTE.
  • TIMESTAMP com LOCAL TIME ZONE : diferente do anterior ele é igual ao TIMESTAMP original, mas é do tipo normalizado utilizando-se do fuso armazenado em banco de dados, onde suas consultas são orientadas e ajustadas a este fuso.
  • RAW : este tipo de datatype é mais dificil de ser encontrado, pois ele armazena dados do tipo "cru", binários com até 2000 bytes. Pelo fato de a Oracle recomendar o uso do BLOB ele é pouco visto nos ambientes em geral.
  • LONG RAW : uma extensão do RAW com uma capacidade um pouco mais agressiva, de até 2GB de dados binários. Segue a mesma linha de raciocinio do RAW, se puder usar BLOB no lugar, faça-o.
  • ROWID : é no jargão popular dos DBA's, o endereçamento da linha, ou melhor, do registro em si. É composto por um valor muitas vezes do tipo HASH que corresponderá exatamente a linha de uma tabela que representa consequentemente uma informação um dado armazenado.
  • UROWID : esse é menos comentado no dia-a-dia, mas ele contém o endereçamento lógico da linha na tabela, não em qualquer tabela, apenas nas IOT ( Index Organization Table) ou tabela organizada por indice. 
  • CLOB : muito utilizado para armazenar dados do tipo character com grandes quantidades, tem capacidade máxima de 4GB na release 9i, na release 10g é um pouco mais agressivo.
  • NCLOB : orientado pelo character set do banco de dados, ele é usado para dados do tipo character, baseados em unicode, tem capacidade máxima de 4GB.
  • BLOB/BFILE : o primeiro é um dos mais conhecidos datatypes, utilizados por aqueles que armazenam grandes objetos binários em banco de dados, já o segundo tipo BFILE é mais uma orientação , onde o arquivo fica armazenado externamente, porém possui um ponteiramento lógico dentro da camada de banco de dados, e obedece a capacidade de até 4GB.
  • BINARY_FLOAT/BINARY_DOUBLE : o primeiro é baseado no ANSI_IEEE 754, para dados flutuantes de dupla precisão ( 32 bits), requer no minimo 5 bytes para armazenamento. O segundo tipo obedece a mesma padronização porém difere no minimo de bytes requeridos para armazenamento, no caso aqui são 9 bytes.

Bem, para que o assunto não se torne massante, irei parar por aqui neste post, volto em um próximo abordando alguns pontos que acredito serem importantes sobre o uso dos variados tipos de dados ( datatypes) e suas considerações, para que possamos discutir futuramente em nossas respectivas modelagens, suas aplicablidades mais coerentes e corretas.

Espero que vocês tenham gostado até aqui, até a próxima.

SUCESSO SEMPRE!!!