CAPÍTULO
5 Programação visual com Software Livre EDIT LIN EDITORIAL S.L, dos autores Daniel Campos Fernández e José Luis Redrejo. Prólogo de Benoit Minisini |
|
<< Anterior | Próximo >> |
Criar uma tabela |
|
Para criar uma tabela, como no caso do servidor, damos um duplo click para abrir a base e pressionamos o botão direito para obter seu menu contextual (Figura 10). |
![]() Figura 10.
Menu contextual da base
|
Este segundo parâmetro só faz sentido em determinados sistemas servidores, como MySQL, nos quais podemos indicar vários tipos de tabelas, optimizada para uma ou outra área concreta. Salvo que tenhamos necessidades especiais, podemos desejar os dados com valores padrão. | ![]() Figura 11. Janela para criar uma tabela. |
Uma vez que pressionemos OK, o gestor aparece no lado direito mostrando-nos a estrutura atual de nossa tabela dados (vazia), para que adicionemos a informação aos campos que apareceram. Portanto vamos manipular a aba Campos, com a qual criaremos uma tabela para |
|
armazenar dados dos
livros de nossa própria coleção. Os campos serão: identificador único, um número que por sua vez pegaremos no lombo (forrado) para busca-lo rapidamente, o título do livro, o autor, a faixa de adequação, o preço que pagamos por ele e uma breve descrição. |
![]() Figura 12.
Gestor d tabela
|
Agora temos que pensar nos tipos de dados que armazenaremos em cada campo: .Identificador: um
número inteiro. (integer)
Título: uma cadeia de texto. (string) Autor: uma cadeia de texto. (string) Data: um dado tipo data. (date) Preço: um número real. (float) Descrição: uma cadeia de texto. (string) |
|
Pensar nos tipos de dados evitará
posteriores problemas na hora
de fazermos buscas, ordenar os dados por diversos parâmetros,
assim como reduzir o tamanho da base de dados e optimizar a velocidade
de consulta. Este passo é muito importante e vale a pena
dedicar
algum tempo. |
|
Também
temos que
delimitar a chave principal, que é única e serve
para
identificar cada registro armazenado. A chave única
estará formada por vários campos ou um
só. Em
nosso caso trata-se do campo referido ao número de
identificação.
|
|
Alguns
programadores em outros
ambientes desenhavam tabelas sem chaves únicas,
já que
alguns sistemas de base de dados o permitem. Como resultado geravam-se
tabelas propensas a erros, com dados duplicados, lentas de manipular e
muito difícil de administrar, conforme passavam o tempo e os
dados aumentavam, corrompendo-se as vezes por
duplicações. Jamais devemos trabalhar deste modo:
se
perde toda a vantajem que pode ter uma base de dados relacional, e
impede a futura expansão e manutenção
de uma
aplicação.
|
|
Para criarmos o primeiro campo, modificaremos o que o próprio gestor criou como sugestão, indicando como Nome identificador e Tipo Integer (ou seja número inteiro). Deixaremos os demais campos em branco. |
|
Para o resto dos campos, pressionemos o botão com o ícone que representa uma folha em branco, e que serve para adicionar um novo campo. Se nos movermos pelos diversos ícones, aparece um texto de ajuda que nos indica o significado de cada um. | ![]() Figura 13. Criação do campo identificador. |
Conforme os criamos, preenchemos os dados com estes valores: .Nome:
título; Tipo: String; Tamanho: 40; Valor por default: (nada).
.Nome: autor; Tipo: String; Tamanho: 40; Valor por default: (nada). .Nome: data; Tipo: Data; Tamanho: (nada); Valor por default: (nada). .Nome: preço; Tipo: Float; Tamanho: (nada); Valor por default: (nada). .Nome: Descrição; Tipo: String; Tamanho: 40; Valor por default: (nada). A interface deverá ficar com este aspecto: |
|
![]() Figura 14. Aspecto final da criação dos campos. |
|
O dado Length
aplica-se apenas
aos campos do tipo String, e refere-se ao número de
caracteres
que podemos armazenar. Convém ajustar o máximo
possível o valor para que a base de dados não
cressa em
demasia e, tornando as buscas e modificações
posteriores
mais lentas. Mesmo que só guardamos um caracter em um campo
de
um dado registro, os sistemas de base de dados habituais, guardam todo
o tamanho indicado (em nosso caso 40 caracteres para o
título e
autor, e 200 para a descrição). Se
multiplicarmos
estes valores por um grande número de registros,
comprovaremos
rapidamente a economia que se consegue com um desenho prévio
dos
tamanhos.
|
|
O
tamanho máximo de um campo de texto pode ser 200 ou 255
caracteres, em muitos sistemas de base de dados. Por isso, devemos
levar em conta os tamanhos máximos se planejarmos trocar de
gestor de base de dados no futuro, sobre uma
aplicação
já desenvolvida.
|
|
Quando criamos um
novo
registro, o campo é preenchido, por padrão, com
um valor,
que só modificaremos para casos específico. Isto
é
útil se um dado se repete muitas vezes, e só
trocmos
ocasionalmente.
|
|
Como temos
observado, Gambas
realiza uma abstração dos tipos de dados,
permitindo
escolher entre uns muito concretos: Boolean (dois valores,
“sim” ou “não”),
Integer (número
inteiro), Float (numero real), String (cadeia de texto) e Data
(data/hora). Estes tipos abstraem os da própria base de
dados,
(alguns sistemas contemplam, por exemplo, “inteiro
grande”
ou “inteiro de um byte”) assemelhando-se aos do
Gambas e
simplificando a transação entre um sistema de
bases de
dados e outros.
|
|
Se existe
necessidade de
optimizar os tipos de base de dados para um sistema em especial, as
tabelas devem ser criadas com as ferramentas próprias desse
sistema de base de dados, em lugar da ferramenta genérica do
Gambas, mas ao trocar perde-se portabilidade. Quer dizer
será
mais difícil trocar de sistema gestor no futuro, se for
necessário por aumento no volume de dados, tecnologia ou
velocidade requeridas. Em geral, não é
necessário
recorrer a optimizações deste nível,
salvo
em casos muito especiais.
|
|
Quanto a chave
principal,
podemos observar na Figura 14 que o primeiro campo, identificador, tem
uma chave amarela marcada. Podemos pressionar sobre o primeiro elemento
de cada campo para que apareça ou desapareça tal
chave.
A soma de todos os campos que estão marcados com a chave, formam a chave principal ou identificador único de cada registro. Mesmo em nosso caso, que só temos um. Estes dados, até agora, encontram-se só em fase de desenho. Para gravar a nova tabela na base de dados, pressionemos o ícone que tem o símbolo de um floppy (disquete). A partir deste momento, a tabela aparece realmente na base, lista para adicionar dados ou consulta-los. |
|
Os nomes de campos usados no exemplo
não tem acentos. Em geral,
não devemos utilizar somente caracteres do alfabeto
inglês
e números. Usar símbolos como caracteres com til,
cedilha, separadores tais como o & ou espaço em
branco,
podem dar muitas dores de cabeça ao programador no futuro,
tanto
para uma simples consulta de dados, como para a
migração
futura a outro sistema de base de dados. É uma má
política de desenho, devemos evita-la sempre. |
|
Uma vez criada a
tabela, podemos editar os campos, adiciona ou deletar, seguindo o mesmo
procedimento.
Agora podemos passar a seguinte aba (Figura 15), Índices. Um índice serve ao gestor de base de dados para organizar a informação, de forma que mais tarde cada consulta execute-se o mais rápido possível. Por exemplo, pode ser que desejemos fazer frequentemente buscas indicando o autor, para saber os dados de todos os livros que tenhamos em nosa coleção. Para nossa pequena base de exemplo não utilizaremos índices, mas a gestão a partir deste programa é trivial: basta que os criemos, eliminemos ou modifiquemos do mesmo modo que fizemos para criar os campos da tabela. Cada índice pode ser formado por um ou mais campos, quer dizer, pode compreender, por exemplo, o nome do livro + o autor. Para isso, a interface proporciona dois botões. O primeiro, Novo índice, serve para adicionar um novo índice a tabela. Se for formado por um só campo, basta que indiquemos o nome desse campo. Se for vários, pressionaremos o botão novo campo de índice, tantas vezes quanto seja necessário, para indicar os demais campos que formam esse índice. O outro dado de relevância é o valor Unique, o qual determina se pode existir ou não dois registros nos quais os dados dos campos pertencentes a um índice sejam iguais. Por exemplo, em uma tabela que contenham os dados de Cds, pode interessar-nos ter um índice criado a partir dos campos discografia e data. E pode haver vários discos editado por essa discografia em um mesmo ano, portanto marcaremos o valor Unique como FALSE, para introduzirmos os dados de vários discos cujos campos sejam coincidentes. |
|
Pelo contrário, em uma base de dados de alunos pode interessar-nos um índice que compreenda o RG e seu nome. Neste caso, não há duas pessoas com o mesmo RG, logo esse índice é único, e marcaremos a opção Unique com o valor TRUE para proteger a tabela de dados duplicados. |
![]() Figura 15.
Geração de índices.
|
<< Anterior | Próximo >> |
HOME |
|
Cópia literal Extraído
do livro “GAMBAS, programação visual
com software
Livre”, da editora EDIT LIN EDITORIAL S.L, dos
autores Daniel Campos Fernández e José
Luis
Redrejo. Prólogo de Benoit
Minisini
LICENSA DESTE DOCUMENTO É
permitido a cópia e
distribuição da
totalidade ou parte desta obra sem fins lucrativo. Toda
cópia
total ou parcial devera expressar o nome do autor e da editora e
incluir esta mesma licença, adicionando se é uma
cópia literal “Cópia
literal”. Se é
autorizada a modificação e
tradução da
obra sem fins lucrativo sempre se deve constar na obra
resultante a modificação o nome da obra
original o
autor da obra original e o nome da editora e a obra resultante
também deverá ser livremente reproduzida,
distribuída, ao publico e transformada em termos similares
ao
exposto nesta licença.
Tradução Cientista (Antonio Sousa) |
|