Tabela dual ou dummy


Este tipo especial de tabela, denominada em inglês de dummy, serve o propósito especial de fazer algumas operações sobre conjuntos sem aceder a tabelas de dados propriamente ditas. Isso alivia a carga do sistema e impede, por exemplo, que se façam utilizações indevidas a tabelas com muitas linhas.

Este tipo de tabelas pode ser utilizado para trabalhar com triggers ou, mais simplesmente, para obter uma marca temporal. Convém que a tabela dummy tenha uma única linha para evitar que o resultado se multiplique num output com o mesmo número de linhas da tabela.

Como fazer e utilizar?
Em primeiro lugar deve criar-se a tabela:
——————————————————–
–  DDL para a tabela LAMY
——————————————————–
CREATE TABLE lamy (
lam varchar(2)
);
Em segundo lugar insere-se uma linha na tabela:
INSERT INTO lamy (lam) VALUES (‘a’);
Aplicações:
  1. Obter a data actual do sistema:
    • select SYSDATE from lamy;
    • Resultado:
  2. Fazer um cálculo:
    • SELECT (2+4) / 2 FROM lamy;
  3. Criar uma tabela com 100000 linhas com dados aleatórios:
    • CREATE TABLE tabela_teste AS
      SELECT LEVEL id, SYSDATE+DBMS_RANDOM.VALUE(-1000, 1000) valor_data, DBMS_RANDOM.string(‘A’, 20) valor_texto
      FROM lamy
      CONNECT BY LEVEL <= 100000;
      • NOTA: O tempo necessário para inserir 100 000 linhas na tabela pode ser muito longo. Quem quiser pode experimentar com um número menor de linhas. O tempo de execução aumenta (quase) exponencialmente se a tabela lamy tiver mais do que uma linha.

DBA | Transacção


Uma transacção agrupa um conjunto de operações que transformam a base de dados de uma estado consistente n para outro estado consistente n+1. Pode considerar-se que há uma história – ou cronograma ou processo – que modela/transforma a execução em simultâneo (interleaved) de um conjunto de transacções numa série temporal de operações lienares sobre determinadas peças de informação.

Duas operações nesse cronograma entram em conflito quando pertencem a transacções distintas e, pelo menos, uma delas efectua uma operação de escrita sobre a mesma peça de informação. Uma peça de informação pode ser, por exemplo, uma linha de uma tabela, uma coluna de uma tabela, uma tabela inteira, ou um espaço de tabelas.

Uma história pode resumir-se num grafo de dependências que estabelece as marcas temporais no fluxo de dados entre transacções. Uma história é compreensível e é considerada realizável (serializable) quando é equivalente a um conjunto de eventos realizados em série, i.e., quando o seu grafo de dependências tem a mesma cronologia de uma história que execute sequencialmente (em série) as transacções.