Modelagem de Dados 1 - MD1
Aula 2
Apresentar o SGBD Interbase, criação de
banco de dados (CREATE DATABASE), criação e
remoção de tabelas (CREATE TABLE / DROP
TABLE), tipos de dados, alteração da estrutura das
tabelas (ALTER TABLE) e criação de índices
(CREATE INDEX).
O Interbase
O Interbase é um gerenciador de banco de dados relacional similar
aos melhores do mercado, podendo ser utilizado em aplicações mono ou
multiusuários, desktop ou em rede, sem limite de números de usuários.
O acesso aos dados pelos programas aplicativos ocorre através do
servidor Interbase que gerencia o acesso, tornando este produto capaz de:
O Interbase






Garantir um alto nível de segurança e integridade de dados.
Possibilitar o armazenamento e recuperação de grande volume de
dados.
Possuir recursos nativos de criação e recuperação de cópias de
segurança (backup/restore).
Possibilitar um melhor balanceamento e distribuição de cargas de
trabalho entre o servidor e as estações de trabalho, otimizando o
aproveitamento do processador.
Possibilitar a redução do volume de trafego pela rede, aumentando a
performance dos sistemas em geral.
E que caracteriza os sistemas comumente conhecidos como do tipo
cliente/servidor, que serão o objeto desta nossa obra.
O Interbase Console
O Interbase Console (Ibconsole) é uma ferramenta com
interface gráfica integrada para administração de banco de dados (a
qual
acompanha
o
Interbase),
englobando
funções
de
criação/manutenção de bancos de dados, geração e execução de
instruções SQL e testes de comunicação entre cliente e servidor.
É a partir do uso do Ibconsole que o analista/programador pode
criar seus bancos de dados, suas tabelas, etc. Como ele é possível:






Administrar a segurança dos bancos de dados.
Criar e modificar bancos de dados e tabelas.
Efetuar operações de Back-up e Restore de bancos de dados.
Efetuar manutenção de banco de dados.
Ativar e desativar (dar shutdown) do servidor Interbase.
Criar e executar instruções SQL.
O Interbase Console
O Interbase pode ser instalado em um servidor de rede,
formando uma arquitetura de duas camadas, assim como em múltiplos
servidores formando uma arquitetura multicamadas, ou então
diretamente em um desktop em uma arquitetura de camada única. Este
guia utiliza o Ibconsole como uma ferramenta desktop.
Criação de Banco de Dados
Para criar um banco de dados, deve-se conectar (login) ao
servidor Interbase, o que é realizado fornecendo o nome do usuário
(username) e sua senha (password).
A partir da tela do menu principal do Ibconsole, dê um duploclique sobre o ícone local server (remote server) e aparecerá uma caixa de
diálogo solicitando o nome do usuário principal (o administrador do
sistema). Esse usuário tem o nome de SYSDBA (grave este nome) e a sua
senha é masterkey (em minúsculo).
Criação de Banco de Dados
O usuário recém-chegado ao ambiente Cliente/Servidor está
agora sendo colocado na posição de uma figura até então desconhecida,
ou melhor, inexistente no ambiente de programação de processamento de
arquivos. Essa figura é a do administrador do SGBD-R, que é o
responsável por todos os aspectos fundamentais no tocante a:



Segurança de acesso às bases de dados (via concessão de acesso a
usuários).
Implementação das estruturas das bases de dados (via criação/
manutenção, etc.) .
Segurança física das bases de dados (via implementação de
backups/restore) .
Como administrador do SGBD-R, o leitor deve se lembrar de que o
ibconsole é a chave de seu reino, por isso é importante que se guardem em
segredo o código de acesso e a sua senha, pois é por intermédio deles que
suas bases de dados serão administradas.
Criação de Banco de Dados
A segurança de tudo que for criado depende do acesso seletivo,
delegado futuramente pelo administrador aos usuários de seus sistemas.
Tendo em vista que no futuro a criação de muitos objetos no
Interbase deve ser feita por você (entenda por objetos, entidades como
tabelas, campos, procedimentos, etc.), vamos relacionar as principais regras
para a criação deles, evitando assim erros e conflitos de sintaxe:



Os nomes dos objetos criados devem sempre começar por um
caractere alfabético, tipo A..Z ou a..z ).
Os nomes em geral estão limitados a 31 caracteres; nomes de eventos
podem ter no máximo 15 caracteres e nomes de restrições devem se
limitar a 27 caracteres .
Podem ser usados os caracteres alfabéticos, os símbolos cifrão ($) e
sublinhado(_).
Criação de Banco de Dados
Finalmente para criar o seu banco de dados, clique no menu
Database do ibconsole, e clique na opção Create Database, abrirá uma
janela onde você deverá indicar o alias <nome do banco de dados>.gbd e
o nome do filename (arquivo). Não se esqueça que este arquivo não é uma
tabela, mas um banco de dados com objetos pré-definidos, domains, tables,
views, store procedures, external functions, generators, exceptions, blob
filters, roles.
A criação de banco de dados em SQL normalmente utiliza o
comando CREATE DATABASE, seguido do nome do banco de dados.
Sintaxe:
CREATE DATABASE <nome do banco de dados>
A remoção de banco de dados em SQL faz-se normalmente com a
utilização do comando DROP DATABASE, seguido do nome do banco de
dados.
Sintaxe:
DROP DATABASE <nome do banco de dados>
Criação de Tabelas
Para criar uma tabela devemos clicar no ícone Interactive SQL e
escrever o código SQL correspondente para criação de tabela. A criação de
tabelas em SQL se faz com a utilização do comando CREATE TABLE,
seguido do nome da tabela, bem como de outros parâmetros para a
determinação de sua estrutura.
Sintaxe:
CREATE TABLE <nome da tabela>
(< nome do campo> <tipo> [null/not null] [default<valor>]
[auto_increment] [unique] [primary key]);
nome da tabela - nome da tabela a ser criada
nome do campo - nome do campo a ser criado
tipo - tipos de dados
unique – não permite valores repetidos.
Criação de Tabelas
null/not null - define se um campo aceita ou não valores nulos
default - permite determinar um valor padrão para o campo
auto_increment – determina se o campo será prenchido automaticamente,
sendo válido apenas para campos que aceitem valores inteiros
primary key – determina que o campo é a chave primária da tabela
Exemplo:
CREATE TABLE Clientes
(
nome char(50),
endereço char(40),
bairro char(20),
cidade char(20),
uf char(2),
código_cliente integer not null primary key
);
Tipos de Dados
As tabelas Interbase podem armazenar os seguintes tipos de dados
(ou seja, a característica de cada coluna pode ser do tipo):
O tipo numérico pode ser utilizado no tratamento de valores
numéricos inteiros ou reais. Estão disponíveis os seguintes tipos:
smallint[(tamanho)] – utiliza-se este tipo de dado quando houver a
necessidade de fazer uso de valores inteiros curtos entre a faixa de valores de
–32.768 ate 32.767, valores com 16 bits. O parâmetro tamanho é opcional e
permite estabelecer o tamanho máximo a ser exibido;
integer[(tamanho)] – utiliza-se este tipo de dado quando houver a necessidade
de fazer uso de valores inteiros longos entre a faixa de valores de –
2.147.483.648 até 2.147.483.647, valores com 32 bits. O parâmetro tamanho é
opcional e permite estabelecer o tamanho máximo a ser exibido;
float – utiliza-se este tipo de dado quando houver a necessidade de fazer uso
de valores com ponto flutante com sete dígitos de precisão decimais. Este tipo
permite trabalhar com valores na faixa de 3,4*10 –38 até 3,4*10 38;
Tipos de Dados
decimal[(tamanho [, decimal])] – utiliza-se este tipo de dado quando houver
a necessidade de fazer uso de valores com ponto flutuante. O parâmetro
tamanho é opcional e permite estabelecer o tamanho máximo do valor a ser
exibido. Se omitido, o tamanho assumido é 10. O parâmetro opcional decimal
permite estabelecer o tamanho máximo de casas decimais a ser exibido,
podendo ser um valor máximo 30.
numeric[(tamanho, decimal)] – utiliza-se este tipo de dado quando houver a
necessidade de fazer uso de valores com ponto flutuante, sendo semelhante ao
tipo decimal.
double precision[(tamanho, decimal)] – utiliza-se este tipo de dado quando
houver a necessidade de fazer uso de valores com ponto de dupla precisão. O
parâmetro tamanho deve estar entre 25 e 53 para estabelecer o tamanho
máximo. O parâmetro opcional decimal permite estabelecer o tamanho
máximo de casas decimais a ser exibido, podendo ser um valor máximo de
30.
Tipos de Dados
O tipo temporal pode ser utilizado no tratamento de valores
relacionados à data e horário. Estão disponíveis os seguintes tipos:
date – utiliza-se este tipo de dado quando houver a necessidade de fazer
uso de uma data de calendário. Armazena datas utilizando 32 bits. O
intervalo de armazenamento é de 1º de janeiro de 100 até 29 de fevereiro
de 32768, ou seja, de 01/01/100 a 29/02/32768
time – utiliza-se este tipo de dado quando houver a necessidade de fazer
uso de uma informação relacionada a um determinado horário na faixa de
00:00 AM até 23:59:9999 PM. Utiliza 32 bits para armazenar valores de
tempo.
timestamp – utiliza-se este tipo de dado quando houver a necessidade de
armazenar em uma única coluna informações referentes à data e hora.
Armazena data e hora utilizando 64 bits. O intervalo de armazenamento é
de 1º de janeiro de 100 até 29 de fevereiro de 32768, ou seja, de 01/01/100
a 29/02/32768 .
Tipos de Dados
O tipo literal pode ser para a recepção de valores baseados em
cadeias de caracteres (strings – dados alfanuméricos delimitados por aspas
ou apóstrofos). Estão disponíveis os seguintes tipos:
char(tamanho) ou character(tamanho) – utiliza-se este tipo de dado quando
houver a necessidade de fazer uso de sequências de caracteres no valor
máximo de “tamanho” (tamanho varia de 1 ao máximo de 32767). O
parametro tamanho determina o valor máximo em caracteres que pode
conter a sequência. As colunas tem tamanho fixo em função do valor de
“tamanho”.
varchar(tamanho) ou char varying (tamanho) ou character varying
(tamanho) - utiliza-se este tipo de dado quando houver a necessidade de
fazer uso de sequências de caracteres no valor máximo de “tamanho”
(tamanho varia de 1 ao máximo de 32767). A diferença entre varchar e o
char é que neste caso, os espaços em branco excedentes do lado direito da
sequência de caracteres não utilizados são automaticamente desprezados. O
parâmetro tamanho determina o valor máximo em caracteres que pode
conter a sequência.
Tipos de Dados
O tipo BLOB (Binary Large Object) possui tamanho variável e
permite armazenar grandes quantidades de dados, como, por exemplo,
gráficos, textos e sons digitalizados. Os dados são armazenados em segmentos
de no máximo 64K.
Ao definir um campo BLOB pode-se especificar o seu subtipo, que irá
determinar o tipo de conteúdo a ser armazenado. Os subtipos mais usados são
o 0 (conteúdo binário) e 1 (texto).
Remoção de Tabelas
A remoção de tabelas em SQL faz-se normalmente com a utilização
do comando DROP TABLE, seguido do nome da tabela.
Sintaxe:
DROP TABLE <nome da tabela >
Alteração da Estrutura das Tabelas
A estrutura de uma tabela é algo que pode ser modificado com o
tempo, devido a alguma necessidade específica. Existe uma grande
possibilidade de precisar incluir um determinado campo, retirá-lo ou até
mesmo modificar a sua estrutura. Para realizar esta ação, é disponibilizado o
comando ALTER TABLE.
Sintaxe:
ALTER TABLE <nome da tabela> <operação>;
<operação> - parâmetro que pode receber um dos seguintes valores:
add <nome do campo> <tipo> - utiliza-se este valor quando da necessidade de
inserção de um novo campo em uma determinada tabela.
drop <nome do campo> - utiliza-se este valor quando da necessidade de
remover um campo de uma determinada tabela.
add constraint <nome da_restrição> <restrição da tabela>
drop constraint <nome da_restrição>
Criação de Índices
A linguagem SQL fornece a seu usuário a possibilidade de criar
índices para suas tabelas. O índice é o recurso que facilita a localização de
informações dentro de uma tabela, além de possibilitar a peculiaridade de
exibir informações ordenadas: no caso de valores númericos a indexação pode
ser crescente ou decrescente, no caso de valores literais a indexação pode ser
ascendente ou descendente.
Apesar de útil, este recurso precisa ser usado com cuidado,pois o
excesso de índices em tabelas de um banco de dados pode ocasionar lentidão,
principalmente nas operações de atualização de dados executadas pelo
comando UPDATE.
Com relação aos campos que estejam definidos como chave primária,
não devem ser indexados. O fato de haver a chave primária definida já cria
indiretamente uma indexação. Assim sendo, a indexação é útil em situações
como:
Criação de Índices
Um determinado campo não deve conter valores duplicados, além do
campo definido como chave primária. Imagine que além do campo de
código de um cliente (que está definido como chave primária), o
campo que armazena o número do CNPJ não pode conter valores
duplicados. Neste caso, para o campo CNPJ pode ser criado um
índice.

Quando consultas são realizadas com grande frequência sobre um
campo que não é o definido como chave primária. Por exemplo, podese consultar o cadastro de clientes pelo seu nome de cliente. Neste
caso, justifica a existência de um índice para o campo nome de cliente.
Sintaxe:
CREATE [unique] INDEX <indice>
ON <nome da tabela (nomes dos campos)>;
DROP INDEX <índice> { [ON <nome da tabela>]};
índice – nome definido para identificar a indexação da tabela.
nomes dos campos – caso haja mais de um campo, eles devem ser
separados por vírgula.

Inserção de Registros
A partir do momento em que uma tabela está criada, ele já pode
receber a entrada de dados. Normalmente os programas de gerenciamento de
banco de dados possuem recursos apropriados para executar esta ação, no
entanto a linguagem de consulta estruturada SQL possui o comando INSERT
INTO .
Sintaxe:
INSERT INTO <nome da tabela (nomes dos campos) >
VALUES <(valores)>;
Alteração de Registros
No processo de manutenção de registros em banco de dados é
necessário periodicamente atualizar dados e informações existentes. Para
tanto, é necessário utilizar o comando UPDATE.
Sintaxe:
UPDATE <nome da tabela >
SET <nome do campo> = <expressão> [condição];
Remoção de Registros
Dentre as várias atividades de manutenção de registro, existe a
possibilidade de efetuar a remoção de registros que não sejam mais desejados.
Para isoo deve-se utilizar o comando DELETE.
Sintaxe:
DELETE FROM <nome da tabela > [condição];