Olá, aluno(a)! Nesta lição, aprenderemos sobre uma das áreas mais importantes e comuns da Ciência da Computação, que são os bancos de dados. Já por muito tempo eles existem, e nos últimos anos têm recebido uma atenção especial, por meio de técnicas de busca de dados. Afinal de contas, eles contêm o que é considerado hoje o bem mais precioso de uma empresa: informação.
Já parou para pensar um pouco em quantos bancos de dados você possui cadastro?
Já vou adiantar que são muitos. Por exemplo, quando você fez seu RG, você passou a figurar em um banco de dados, possivelmente da Polícia Civil. Quando você fez seu título de eleitor, você passou a fazer parte de um banco de dados do Tribunal Eleitoral. Quando você criou sua conta de e-mail, seu Insta, seu Face, seu login para um curso na internet. Em todas essas situações, você está em um banco de dados diferente. E qual o motivo?
Uma estrutura de banco de dados permite que ocorra, por exemplo, a identificação do usuário. Por exemplo, toda vez que você faz login em sua conta do Instagram, fornecendo seu usuário e senha, é realizada uma consulta no banco de dados para verificar se essas duas informações realmente estão interligadas. Isso significa que será verificado se para aquele usuário digitado existe uma senha como a que foi digitada.
Portanto, não tenha dúvidas de que os bancos de dados são mais comuns em nossas vidas do que parece! No entanto, temos um problema que evolui a cada dia, que tem a ver com a quantidade de dados gerados todos os dias. Será que as tecnologias conseguirão continuar gerando informações à medida que os dados aumentam em quantidade?
Essas estruturas estão espalhadas por todos os lugares em que interagimos e possibilitam, por meio dos dados armazenados, a descoberta e formação de uma informação para tomada de decisão. Talvez você não se recorde, mas, antigamente, para comprar uma passagem, um eletrodoméstico ou uma roupa, era necessário muito esforço de visitar cada loja, verificar o preço, realizar perguntas, anotar as respostas, até que você tomasse uma decisão final.
As tecnologias em banco de dados, juntamente com a internet, mudaram totalmente essa situação. Hoje, você tem vários sites que consultam enormes bases de dados e já entregam todas as informações para sua tomada de decisão. Informações como valores, prazo de entrega, disponibilidade, condições de pagamento, histórico do preço e outras são rastreadas em questão de segundos, e isso melhora muito as condições para que você decida comprar ou não. Visite, por exemplo, um desses sites e veja como as consultas são rápidas e de qualidade:
www.buscape.com.br - busca pelo melhor preço e mostra histórico de média de preço do produto.
www.skyscanner.com.br - busca por preços de voos.
Qual seria a maneira mais fácil de entender o que é um banco de dados?
Sempre que vou explicar o que é um banco de dados, utilizo como referência um dicionário. Embora estejamos em um mundo digital, você com certeza conhece ou tem um dicionário. Esse livro, na verdade, é um bom exemplo, porque ele contém um grande número de informações que estão organizadas e disponibilizadas em um formato em que é possível acessá-las facilmente. Nesse caso, as palavras estão organizadas em ordem alfabética, tanto para a sequência como internamente, em cada letra.
De acordo com Guimarães e Lages (2005), banco de dados pode ser explicado como uma coleção de dados relacionados entre si, organizada e armazenada com o objetivo de facilitar a manipulação. Em um banco de dados, temos uma série de tabelas que são compostas por um conjunto de linhas e colunas. As colunas representam informações de cada linha. Temos, a seguir, um exemplo de uma tabela:
Conforme pode ser observado nessa tabela, temos um exemplo bem simples, mas que evidencia o que é um banco de dados. Podemos dar um nome a essa tabela, como, por exemplo, jogadores. As linhas constituem um registro de informação. Nessas tabelas, é importante existir uma coluna que será a referência para as informações nas demais tabelas. Por exemplo, nesse caso, a coluna 1 seria a chave primária que poderia ser relacionada a outras tabelas. Em um banco de dados, não poderíamos ter um personagem com mais de um código. Cada um seria associado a um código único. Pode-se observar isso na Tabela 2:
Poderíamos chamar essa segunda tabela de Gols por Jogador. Percebeu o que é um banco relacionado? É fácil, mas ao mesmo tempo é um recurso excepcional. Viu que na segunda tabela não tivemos a repetição do nome do jogador? Isso é o relacionamento entre o campo Código da Tabela Jogadores com o campo Jogador da Tabela Gols por Jogador. Assim, economizamos espaço no banco e facilitamos o acesso às informações. Daria para estruturar e otimizar ainda mais o nosso banco?
Com certeza, isso seria possível. Por exemplo, poderíamos ter uma tabela Times, sendo que cada time teria um código atribuído a ele. Assim, a tabela Jogadores teria os códigos relacionados no campo Time em vez do nome de cada um. Mais uma vez, conseguiríamos otimizar e reduzir o armazenamento em nosso banco. Como ficaria a tabela Times? Veja a Tabela 3:
Como ficaria agora a nossa tabela Jogadores? Ficaria diferente? Sim, estaria mais otimizada e rápida, pois a busca e o conteúdo a ser exibido se daria pelo relacionamento entre tabela.campo. Seria assim: Jogadores. Times relacionados com Times. Código. Veja como ela ficaria:
Percebeu que agora não precisamos mais repetir os nomes dos times em nenhuma outra tabela? Basta armazenar o código correspondente da Tabela Times. Além dessa estrutura que auxilia e otimiza a busca de dados, outra tarefa importante ao pensar em construir um banco é pensar nos tipos dos dados. Para cada campo que você criar, é necessário escolher o tipo de dado que será armazenado. Da mesma maneira que você escolhe o tipo da variável em algumas linguagens de programação, em banco de dados, é necessário também fazer essa escolha.
Isso é importante porque pode dar mais segurança, economia e otimização ao banco. Portanto, sempre procure fazer a escolha certa. É importante lembrar que isso muda de banco de dados para banco de dados. Ou seja, quando você precisar migrar de um modelo de banco para outro, você pode ter problemas na importação/exportação dos dados.
Por exemplo, para o banco de dados MySQL, temos como opções para tipos numéricos: Tinyint, Smallint, Mediumint, Int e Bigint. Cada um deles é indicado para uma determinada situação em que você precise armazenar e manipular números. Se você precisar armazenar datas, você pode escolher as seguintes opções em MySQL: Datetime, Date, Timestamp, Time, Year.
Já se você for trabalhar com palavras ou textos, você tem os tipos que pertencem à categoria String: Char, Varchar. É muito importante conhecer como cada tipo atua, pois isso faz diferença na performance do seu banco de dados. É verdade que, no início, você não vai perceber muita diferença, mas à medida que o banco vai ficando populoso, isso pode fazer total diferença no tempo de resposta das buscas que ele fizer.
No caso das strings, por exemplo, se escolhêssemos char tamanho 30 para o campo Nome da nossa tabela Jogadores, ele utilizaria o tamanho 30 para armazenar “Lionel Messi”, que na verdade precisaria apenas de tamanho 12. Dessa maneira, o mais indicado seria utilizar o tipo varchar, que utiliza apenas o que o campo contém, no caso, tamanho 12.
Para gerenciar um banco de dados, existem os SGBDs (Sistemas Gerenciadores de Banco de Dados). Trata-se de programas utilizados para criar e manter bancos de dados. Como exemplos, temos: MySQL, PostgreSQL, Firebird, Oracle, DB2, SQLServer. Podemos citar várias vantagens de se utilizar um banco de dados, tais como: consistência, integração, organização e segurança.
A linguagem SQL (Structured Query Language) foi desenvolvida com a finalidade de manipular e controlar um banco de dados. Através dela, podemos criar um banco de dados, criar tabelas, inserir registros, atualizar registros, elaborar consultas, excluir registros etc. Ela funciona por meio de comandos em que você precisa conectar-se ao banco por meio de um login e senha autorizados para depois criar as consultas e realizar a busca pelas informações.
Muitas tecnologias atuais já são preparadas para criar consultas e gerar informações de forma automática. Vários softwares para Inteligência nos Negócios ou BI (Business Intelligence) realizam isso. No entanto, a cada dia, o volume de transações nos banco de dados e a necessidade de criar e estabelecer boas estruturas tem se tornado um verdadeiro desafio.
O tema banco de dados é uma área superimportante na Ciência da Computação. Tanto que, dentro do curso técnico que você está cursando, temos uma disciplina inteiramente dedicada a esse tema, na qual aprenderá as técnicas e conceitos para estruturação, gerenciamento e armazenamento de dados. Porém, para esta lição, é fundamental que você compreenda este campo de estudos como um pilar fundamental para o mundo da computação, principalmente para os desenvolvedores de sistemas.
Ao pensar em uma estrutura de banco de dados, precisamos tentar abstrair o que ocorre no mundo real para daí pensarmos nas tabelas, campos, tipos de dados e nos relacionamentos que deverão existir. Isso será fundamental para que depois você construa o seu software. Nesse sentido, tente sempre planejar bem o seu banco de dados para evitar armazenar dados em redundância, explorar toda potencialidade dos relacionamentos e, assim, criar uma estrutura que poderá ser utilizada por bastante tempo.
Armazenar dados é um dos grandes desafios das organizações, e bancos de dados mal construídos causam muita preocupação com perda de informações, impossibilidade e dificuldade de entender como os dados estão ou onde eles estão. Para ajudar nesse sentido, é sempre importante você também construir o que chamamos de dicionário de dados.
Essa é uma estrutura que explica cada tabela, seu objetivo, seus campos, seus relacionamentos. Isso é importante porque muitos desenvolvedores, para facilitar seu trabalho, acabam por escolher nomes bastante simplificados para as tabelas ou mesmo para os campos que compõem as tabelas. Com o passar do tempo, isso dificulta muito novas interações ou manutenções para programadores que não participaram da criação do banco.
GUIMARÃES, A. M.; LAGES, N. A. Introdução à Ciência da Computação. Rio de Janeiro: LTC, 2005.