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
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
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
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
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
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
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)