Ir ao topo

Tecnobyte

Logomarca da Tecnobyte
Contato por WhatsApp

WhatsApp

(69) 3421-6756

Contato por Telefone

(69) 3421-6756

(69) 3421-6757

Enviar mensagem

Enviar

mensagem

Contato por Facebook

Facebook

Vídeos

Vídeos

Atendimento de segunda a sexta, das 08h00 às 19h00 (horário de Brasília).

Banner

Firebird e Interbase

Criar e usar domínios (domain's)

No InterBase e FireBird domínios são como tipos de dados. Tais domínios têm grande semelhança com o conceito de domínio aplicado à matemática, ou seja, um domínio define um conjunto de valores válidos para uma dada situação.

Podemos criar qualquer banco de dados sem fazer uso explícito de domínios. No entanto usar domínios explicitamente pode deixar o banco de dados mais organizado, com regras claras e bem definidas, e ainda conseguir uma economia substancial de mão de obra na construção e manutenção do banco.

Para demonstrar a utilidade dos domínios, vamos criar dois exemplos.

Exemplo 1 - Sem uso explícito de domínios:

CREATE TABLE Cliente(
  Codigo  INTEGER NOT NULL,
  Nome    VARCHAR(40) NOT NULL,
  Fone    VARCHAR(20),
  Fax     VARCHAR(20),
  Celular VARCHAR(20),
  Renda   NUMERIC(9,2) DEFAULT 0 NOT NULL,
  CONSTRAINT PK_Cliente PRIMARY KEY(Codigo),
  CONSTRAINT CHK_Cliente_Codigo CHECK(Codigo > 0),
  CONSTRAINT CHK_Cliente_Renda CHECK(Renda >= 0));

Exemplo 2 - Com uso explícito de domínios:

CREATE DOMAIN DM_ChavePrimaria INTEGER NOT NULL CHECK(VALUE > 0);
CREATE DOMAIN DM_NomePessoa VARCHAR(40) NOT NULL;
CREATE DOMAIN DM_Fone VARCHAR(20);
CREATE DOMAIN DM_Renda NUMERIC(9,2) DEFAULT 0 NOT NULL CHECK(VALUE >= 0);

CREATE TABLE Cliente(
  Codigo  DM_ChavePrimaria,
  Nome    DM_NomePessoa,
  Fone    DM_Fone,
  Fax     DM_Fone,
  Celular DM_Fone,
  Renda   DM_Renda,
  CONSTRAINT PK_Cliente PRIMARY KEY(Codigo));

Comentários:

  • O benefício imediato do uso explícito de domínios é a organização do código que define as tabelas.
  • Como um mesmo domínio será usado em várias tabelas (exemplo: DM_NomePessoa), ganharemos muito tempo ao definir outras tabelas que comporão o banco de dados.
  • O domínio DM_Fone é um exemplo que demonstra como um mesmo domínio pode ser usado para colunas diferentes que possuem conteúdos semelhantes.
  • Os domínios DM_ChavePrimaria e DM_Renda mostram aspectos mais interessantes na declaração de domínios, tais como a especificação de um valor padrão (DEFAULT) e regras para validação (CHECK).
  • Se mais tarde resolvermos alterar os nomes de pessoas para 50 caracteres, ou seja, VARCHAR(50), bastará alterar a definição do domínio DM_NomePessoa e todos os campos definidos com este domínio serão automaticamente ajustados. Neste caso bastaria o comando ALTER DOMAIN DM_NomePessoa TYPE VARCHAR(50).
  • Nos bancos de dados que crio, uso domínios explicitamente para todos os campos de todas as tabelas, mesmo onde aparentemente são desnecessários. Mas é bom lembrar que domínios mal definidos podem trazer mais prejuízos do que benefícios. Portanto, antes de sair criando domínios deliberadamente, faça um estudo minucioso do banco de dados a ser construído.

O conteúdo desta página pode ajudar alguém? Compartilhe!