Está en la página 1de 9

Banco de Dados II - Adriano Cmara - UNIGRAN

11
1. ESTABELECENDO DOMNIUS (DOMAINS)
Um banco de dados relacional armazena dados em forma de tabelas, que so
estruturas que possuem linha e colunas. As colunas so os atributos que denem os objetos
que so chamados de entidades (tabelas). Quando voc dene uma tabela (entidade), voc
pode especicar o valor de cada coluna (campo) individualmente, ou seja, o tipo de dados,
tamanho, character set, nulo ou no. Mas voc pode informar que esta coluna (campo) pode
ser denida por um domnio previamente criado com todas as informaes necessrias.
Os domnius so usualmente denidos antes da criao das tabelas, para que voc
possa utiliz-los na denio das tabelas.
Os dominius so tipos de dados personalizados denidos a partir de um tipo de dados
Aula 01
TPICOS DE BANCO
DE DADOS
Banco de Dados II - Adriano Cmara - UNIGRAN
12
j existente. Uma vez que a coluna (campo) j esteja denida com um domnio qualquer
alterao no domnio se reete na coluna especicada com este tipo.
1.1. Trabalhando com os DOMNIOS
Para se criar um novo domnio:
Sintaxe: CREATE DOMAIN nome do domnio AS datatype
Para excluir um domnio:
Sintaxe: DROP DOMAIN nome do domnio
Para alterar um domnio:
Sintaxe: ALTER DOMAIN nome do domnio
Quando utilizamos diretamente o IBExpert basta somente utilizar as teclas de atalho
ou seus comando embutidos para alterar e excluir um domnio.
Vamos ver um exemplo prtico em nosso Banco de Dados Vendas_BD:

Foram criados cinco domnius.
CREATE DOMAIN VARCHPOS60 AS VARCHAR(60);
CREATE DOMAIN VARCHPO50 AS VARCHAR(50);
CREATE DOMAIN CHARPOS20 AS CHAR(20);
CREATE DOMAIN NUMVALOR AS NUMERIC(10,2);
CREATE DOMAIN DOMENDERECO AS VARCHAR(60);
Quando denimos o Diagrama de Relacionamento fsico do nosso Banco de Dados,
vericamos que algumas colunas (campos) possuem o mesmo tipo de dados e tamanhos.
Logo quando damos incio denio de nossa entidade (tabela), temos que car denindo o
tipo de dado e tamanho de todas as colunas (campos). Se estabelecermos um domnio padro
onde ele j possua o tipo de dados e tamanhos, isto facilita nossa incluso da coluna (campo),
bem como depois ajuda na sua manuteno.
Veja no exemplo abaixo, se em um determinado momento formos alterar o valor
Banco de Dados II - Adriano Cmara - UNIGRAN
13
do campo endereo de 60 para 80 caracteres, e este campo estiver em vrias tabelas, basta
somente alterar o tamanho do DOMNIO DOMENDERECO de VARCHAR(60) para
VARCHAR(80), e todos os domnios sero alterados automaticamente para 80 caracteres em
seu tamanho.

Com isto facilitamos a manuteno em nosso banco de dados e iremos tambm
padronizar as colunas (campos), o que tambm melhora o desempenho do banco de dados.
1.1.1 O parmetro DEFAULT
O parmetro DEFAULT especica um valor padro para ser usado se nenhum
valor for aplicado. O valor padro somente aplicado quando o registro inserido pela
primeira vez no banco de dados, se voc depois remover o valor original, o DEFAULT no
ser utilizado.
Sintaxe:
CREATE DOMAIN nome do domnio AS datatype DEFAULT [default value ,
Null]
DEFAULT geralmente utilizado nas seguintes situaes:
Para colunas (campos) caracteres, voc pode precisar indicar um valor Default
explicitamente, ou use NULL, para especicar um valor nulo.
Para colunas (campos) numricas, voc pode precisar indicar um valor default
explicitamente, ou use NULL, para especicar um valor nulo.
Para colunas (campos) data, voc pode precisar indicar um valor default
explicitamente, ou utilizar uma das seguintes palavras reservadas: YESTERDAY,
TODAY , NOW, TOMORROW (neste caso quando for denido no esquecer de
colocar entre aspas - now), ou NULL.
Vamos a um exemplo: CREATE DOMAIN CHARUF AS CHAR(2) DEFAULT
MS;
Banco de Dados II - Adriano Cmara - UNIGRAN
14
Denimos uma tabela CIDADE em nosso banco de dados, onde a UF utiliza o
domnio criado:

Neste caso quando formos inserir um dado nesta tabela, entramos com o CODCID
o NOMECID, no precisamos colocar a UF, pois ele est denido como DEFAULT MS,
neste caso o prprio BD ir preencher o valor.
1.1.2 A restrio CHECK
importante, em determinados casos, assegurar uma integridade de domnio,
garantindo assim que apenas entradas de tipos, valores ou intervalos de valores possam existir
para uma determinada coluna (campo). O CHECK testa o valor inserido dentro da coluna
(campo) denido pelo domnio para vericar se este valor satisfaz as condies da expresso.
Somente uma restrio CHECK pode ser utilizada por um domnio. Quando voc dene uma
coluna (campo) diretamente na tabela, a restrio CHECK possui opes adicionais.
Sintaxe:
CREATE DOMAIN nome do domnio AS datatype DEFAULT [default value ,
Null]
CHECK [ VALUE expresso]
Onde a expresso pode ser utilizada um dos seguintes comandos:
Expresso Descrio
= value Igual a
< value Menor que
> value Maior que
<= value Menor ou igual a
>= value Maior ou igual a
<> value Diferente de
!< value No menor que
!> value No maior que
Banco de Dados II - Adriano Cmara - UNIGRAN
15
!= value No igual a
BETWEEN value AND value Entre a faixa de valores especicada
LIKE value Busca de caracteres % para 0 ou mais _ para 1
IN (value, value,....value) Um dos elementos da lista
IS NULL Verica se o valor em questo nulo
IS NOT NULL Verica se o valor em questo no nulo
CONTAINIG value Procura uma cadeia de caracteres insensitive
STARTING WITH value Procura uma cadeia de caractere case-sentitive
Vamos criar um domnio:
CREATE DOMAIN UNIDADES AS CHAR(2) CHECK (VALUE IN
(UN,PC,CX) AND (VALUE IS NOT NULL))
Neste caso quando utilizarmos este domnio, na hora de inserir um campo no banco
de dados ele ir checar se os valores inseridos so: UN, PC, CX, como temos a clusula AND
ele tambm vericar se o valor no nulo. Somente se as duas condies forem verdadeiras
ele deixar o usurio inserir um valor na coluna (campo) que faz parte o domnio.

Neste caso vamos inserir um CODPROD, sua DESCRIO e tentar ir para o
prximo registro, veja a mensagem que aparece.

Ele informou que no pode inserir pois temos uma validao na coluna (campo)
UNIDADE que ele no pode ser NULL.
Banco de Dados II - Adriano Cmara - UNIGRAN
16
O Mesmo acontece quando tendo colocar um valor diferente de: UN, PC, CX

1.1.3 A clusula Collate
Esta clusula utilizada somente para as colunas (campos) que possurem o tipo
CHAR e VARCHAR, voc pode especicar uma seqncia de COLLATE vlido para o
caracter set utilizado. O character set denido como parte da denio do banco de dados ou
com o tipo de dados. Collate a maneira que o FIREBIRD utiliza para ordenar e/ou comparar
strings no banco de dados. Isso afeta diretamente, por exemplo, a maneira que caracteres
acentuados so tratados durante uma ordenao ou uma comparao entre strings.
Sintaxe: COLLATE collation_sequence
Para utilizar caracteres acentuados e obter uma ordenao correta nos ndices, dena
o CHARACTER SET WIN1252 e nos campos onde houver indexao, use COLLATE PXW_
INTL850. Fazendo isto o FIREBIRD utilizar a ordenao correta para o portugus.
Exemplo:
CREATE DOMAIN NOMECID VARCHAR ( 50) COLLATE PXW_INTL850
2. CHAVES ESTRANGEIRAS (FOREING KEY)
Em um relacionamento de chave estrangeira importantssimo por manter a
integridade do banco de dados. Quando criamos os relacionamentos entre PK X FK entre
as duas colunas (campos) das duas tabelas teremos ento assegurado a integridade do nosso
banco de dados.
Temos um relacionamento entre as tabelas CLIENTE X CIDADE, onde na tabela
CLIENTE a chave estrangeira (FK) CODCID e ela est relacionada na tabela CIDADE com
a chave primria (PK) CODCID.
Banco de Dados II - Adriano Cmara - UNIGRAN
17
A integridade deste banco de dados provada quando um usurio tentar inserir na
tabela CLIENTE uma cidade que no exista na tabela CIDADE, o Firebird automaticamente
retorna um erro de integridade.
Quando denimos a nossa chave estrangeira (FK), existem duas clusulas opcionais
ON UPDATE e ON DELETE, da restrio FK que especicam o que acontece quando um
valor referencial em uma chave primria (PK) for alterado ou apagado.
Ambas as instrues obedecem as seguintes regras:
3. ENTENDENDO OS NDICES
Um ndice um mecanismo utilizado para acelerar a recuperao de dados em
resposta a certas condies de pesquisa, e para reforar as restries de unicidade em colunas
(campos). Exatamente como voc pesquisa o ndice de um livro para rapidamente encontrar
as pginas que quer ler, um ndice de banco de dados fornece um apontamento lgico para
uma localizao fsica (endereo) de uma linha (registro) em uma tabela. Um ndice guarda
cada valor da coluna indexada e ponteiros. Quando uma consulta SQL submetida, o Firebird
primeiramente checa se existe algum ndice para a tabela referenciada, em seguida determina
se melhor pesquisar a tabela inteira ou utilizar o ndice para processar a consulta. No caso
CLAUSULAS Quando o valor PK alterado ou removido
NO ACTION O valor da FK no sofre mudanas
CASCADE O valor da FK muda de acordo com as mudanas feita na PK, ou removido.
SET DEFAULT O valor da FK recebe o valor denido como DEFAULT daquela coluna
SET NULL O valor da FK recebe NULL
Banco de Dados II - Adriano Cmara - UNIGRAN
18
de decidir pela utilizao do ndice ele pesquisa no ndice para achar a chave solicitada, e
segue os ponteiros para localizar as linhas (registros) que contm os valores solicitados.
Em geral, as pesquisa realizadas sobre ndices so extremamente rpidas porque os
valores constantes no ndice esto ordenados, alm do que, os ndices so muito pequenos o
que requer do servidor muito poucas fetches (requisies de dados, retorno da consulta) para
o posicionamento e localizao dos dados requeridos na consulta.
Existe uma srie de situaes que justicam a criao de ndices, principalmente
quando se desejam pesquisas (requisies de dados) de forma mais rpida:
Quando condies de pesquisa frequentemente referenciam colunas (campos) que
podem ser indexados;
Quando h JOINS sobre colunas (campos) que pode ser indexados;
Temos que tomar cuidado somente para no criar ndices quando temos as
seguintes situaes:
J fazem parte de ndices de integridade referencial Chave Primria (PK) e chaves
Secundrias (FK);
Raramente faro parte de condies de pesquisa;
Mantm um domnio de dados muito pequeno, por exemplo, uma coluna (campo)
que mantm o domnio restrito a masculino e feminino.
Temos abaixo a tabela cliente, no qual possui dois ndices criados atravs das chaves
PK e FK, no qual possuem seu nome, coluna (campo) que est sendo indexado, bem como se
possuem valores nicos (Unique), se esto ativos e qual o tipo de ordenao, no caso os dois
esto ASCENDING( ascendente).
Dentro do IBExpert a forma mais rpida de criar um ndice e posicionar em INDICES,
e clicar com o boto direto, logo ir aparecer uma nova janela, selecione New Index.
Em seguida coloque o nome do ndice, campo, Unique, Active e Sorting.
Sintaxe: CREATE INDEX nome do ndice ON Table_name(column1.....
columnN);
Banco de Dados II - Adriano Cmara - UNIGRAN
19
Exemplo: CREATE INDEX EMAILIDX ON CLIENTE(NOME,EMAIL)
ATIVIDADES
As atividades referentes a esta aula esto disponibilizadas na ferramenta
Atividades. Aps respond-las, envie-nas por meio do Portflio- ferramenta do
ambiente de aprendizagem UNIGRAN Virtual. Em caso de dvidas, utilize as ferramentas
apropriadas para se comunicar com o professor.

También podría gustarte