Parte 10 - B ancos de Dados INTRODUÇÃO AOS BANCOS DE DADOS Quando você liga para uma pizzaria, realizando um pedido em domicílio, a primeira pergunta que lhe fazem é: “qual o seu telefone?”, que é então, consultado em um computador para que todos os seus dados sejam mostrados na tela e seja acelerado o processo de atendimento telefônico. Essa busca de informações através do seu telefone é feita em um arquivo que contém todos os dados referentes a você e aos outros clientes do estabelecimento. Este arquivo é chamado Banco de Dados. Banco de Dados é, na verdade, uma forma de armazenar informações estruturadamente, utilizando-se de campos para melhor dividir e encontrar esses dados. No conceito de Banco de Dados estão inseridas as estruturas que permitem o armazenamento e os processos que localizam e manipulam os dados. Verifique o exemplo abaixo: Nome Endereço Telefone Jorge Almeida Rua dos Pinhais, 37 3241-4242 Marília Azevedo Rua Demócrito de Souza Filho, 234 3221-2211 Antonio Carvalho Av. Padre Ibiapina, 143 3251-0423 Heitor Carneiro Leão Rua Rio Tejipió, 157 3446-6565 O exemplo anterior mostra uma tabela, com 3 colunas e 5 linhas (das quais, 1 é a de título, portanto restam 4 linhas de dados). Esse é um pequeno modelo de um banco de dados, Nome, Endereço e Telefone são Campos e as linhas de dados são chamadas de Registros. COMPONENTES BÁSICOS DE UM BANCO DE DADOS Tabela: Estrutura bidimensional formada por linhas e colunas, para armazenar os dados. Atualmente, um Banco de Dados é formado por várias tabelas. Campo: Divisão das tabelas, cada campo permite armazenar um tipo específico de informação, por exemplo, o campo Telefone armazena, para qualquer que seja o cliente, a informação do telefone dele. Normalmente, os campos são apresentados como as colunas. Registro: É o nome dado a uma informação completa da tabela. Por exemplo, Jorge Almeida, Rua dos Pinhais, 37 e 241-4242 formam um Registro. Cada cliente de uma pizzaria ocupa uma linha da tabela, portanto, cada cliente é um registro. TIPOS DE DADOS Um campo é uma divisão da tabela, portanto, um local para recebimento de um certo tipo de dado individual. Um campo aceita apenas um tipo de dado definido em sua estrutura, que pode ser, por exemplo: Número: armazena apenas valores numéricos, é usado para informações que possam passar por operações aritméticas; Texto: o campo aceita caracteres alfanuméricos, é necessário definir a quantidade de caracteres que o campo vai aceitar; Esses são os tipos de dados mais comuns em qualquer Banco de Dados, quando estudarmos isoladamente cada banco, veremos como as regras mudam de um para o outro. TIPOS DE BANCOS DE DADOS Há, e houve, vários tipos de bancos de dados diferentes, mas atualmente os bancos de dados mais usados podem ser classificados em: Banco de Dados Não-Relacional (ou Banco de Dados de Arquivo): Todos os dados estão armazenados em uma única tabela que está gravada em um único arquivo no disco do computador. Bando de Dados Relacional: Estruturados com várias tabelas cujos campos exercem uma relação com campos de outras tabelas. Atualmente é o tipo de Banco de Dados mais usado. Normalmente todos os componentes desse tipo de BD são armazenados em um único arquivo. Banco de Dados Orientado a Objeto: Utilizam a idéia de Orientação a Objetos (Objetos, propriedades, métodos) para armazenar dados. A Orientação a Objeto é uma “filosofia” aceita na maioria das linguagens de programação atualmente. Banco de Dados Distribuído: usa uma rede de computadores para armazenar dois ou mais arquivos relacionando-os para manter o sincronismo entre os dados dos diversos arquivos. SGBD – SISTEMA GERENCIADOR DE BANCOS DE DADOS São aplicativos (programas) que permitem criar, alterar, e excluir componentes da estrutura dos Bancos de Dados, bem como inserir, alterar e excluir dados nestes. Os SGBDs mais utilizados hoje em dia são o Access (fabricado pela Microsoft), que é muito utilizado para bancos de dados pessoais e menos robustos, SQL Server e Oracle, que são utilizados em projetos mais volumosos, em bancos de dados corporativos (de grandes empresas). Os bancos de dados desses programas são conhecidos como Bancos de Dados Relacionais, pois são formados por várias tabelas que se relacionam entre si. Portanto, podemos chamá-los de SGBDR (Sistemas Gerenciadores de Bancos de Dados Relacionais). BANCOS DE DADOS RELACIONAIS São, como já foi dito, bancos de dados formados por várias tabelas que estão relacionadas entre si por alguns campos comuns. Veja no exemplo a seguir, o banco de dados de uma clínica veterinária será o nosso exemplo. O que se deve guardar em um banco de dados de uma clínica veterinária? Dados dos clientes, dados dos animais, dados dos medicamentos, dados das consultas realizadas, dados sobre os fornecedores de medicamentos, entre outros. Figura 10.1 – Tabela Clientes Tudo certo até aqui? Já temos armazenados os dados dos clientes, como endereço, telefone, nome e um indicador importante apenas para o nosso banco de dados, o código (armazenado no campo Cod). A tabela acima foi construída com 5 campos apenas, mas podem ser usados mais, se o projetista do Banco de Dados assim quiser. Mas vamos ter que criar uma tabela para armazenar também os dados dos animais. Figura 10.2 – Tabela Animais Há necessidade de se criar tabelas para as consultas realizadas na clínica (registro de tudo o que acontece): Figura 10.3 – Tabela Consultas Em cada uma dessas três tabelas foi definido um campo para ser o indexador da tabela, esse campo é chamado Chave Primária. No caso das nossas tabelas, foi escolhido, como era de se esperar, o campo referente ao código de cada tabela. A Chave primária é um campo de uma tabela que recebe uma “patente” especial. A informação contida neste campo não pode se repetir em dois registros diferentes nem pode ter valor Nulo (vazio). Pode haver mais de um campo classificado como chave primária na mesma tabela. Pronto, já temos conhecimento da existência de três tabelas no nosso Banco de Dados, mas o que faz o Banco de Dados Relacional ser tão melhor que as tabelas separadas? (o que temos até agora é isso: apenas três tabelas separadas). RELACIONAMENTOS São as ligações entre campos de tabelas diferentes em um BD Relacional. Esses relacionamentos são usados para evitar a redundância de dados (repetição). Note que na tabela Animais (fig. 9.2) não há o nome do dono do animal, mas no campo Dono há apenas um número, já sabem o que este significa? Isso mesmo! É o código do cliente, que está armazenado na tabela Clientes. Escrevendo o código do cliente, não há necessidade de armazenar novamente o nome dele, nem nenhum dos seus outros dados (como endereço, telefone, etc.). OK, foi descrita uma relação do seguinte tipo: “Um único cliente cadastrado na clínica pode ser dono de vários animais cadastrados”. Isso constitui um relacionamento Um-paramuitos. Figura 10.4 – Relacionamento Clientes x Animais (um-para-muitos) Esses são os tipos de relacionamentos entre campos de BDs Relacionais. Vamos analisar esses relacionamentos usando duas tabelas fictícias A e B: Um-para-muitos: É a relação entre a chave primária de uma tabela (A) e um campo comum em outra tabela (B), ou seja, um registro na tabela A pode ter muitos registros coincidentes na tabela B, mas um registro na tabela B tem só um registro coincidente na tabela A. Este é o tipo mais comum de relacionamento que existe. Um-para-um: Cada registro na tabela A pode ter somente um registro coincidente na tabela B, e cada registro na tabela B pode ter somente um registro coincidente na tabela A. Esse tipo de relacionamento não é muito comum, visto que todos os campos das duas tabelas em questão poderiam pertencer a somente uma tabela. Um relacionamento um-para-um é criado quando ambos os campos relacionados são chaves primárias ou têm índices exclusivos (que significa: Não podem se repetir). Muitos-para-muitos: um registro na tabela A pode ter muitos registros coincidentes na tabela B, e um registro na tabela B pode ter muitos registros coincidentes na tabela A. Esse tipo de relacionamento só é possível definindo-se uma terceira tabela (denominada tabela de união). Sim, mas o que é uma chave estrangeira? É o nome dado ao campo da tabela B com quem a chave primária da tabela A se relaciona. No nosso exemplo, Cod é a chave primária da tabela Clientes e Dono é uma chave estrangeira na tabela Animais. Veja exemplos dos outros tipos de relacionamentos: Figura 10.5 – Relacionamento um-para-um Na figura acima, há uma tabela chamada Financeiro que armazena os dados financeiros dos clientes. Cada cliente possui um único código na tabela Clientes e também um único código na tabela Financeiro. É, eu sei o que você está pensando. Todos os dados existentes na tabela Financeiro poderiam estar na tabela Clientes, bastando, para isso, que se colocassem os campos na referida tabela. É como está explicado no relacionamento um-para-um. Normalmente ele é feito para separar grandes quantidades de campos em tabelas diferentes para agilizar a pesquisa de dados no banco. Figura 10.6 – Relacionamento muitos-para-muitos Note que há um relacionamento um-para-muitos entre o campo CodMed (chave primária da tabela Medicamentos) e Medicamento (na tabela Consultas). Também há um relacionamento um-para-muitos entre o campo CodigoA (chave primária da tabela Animais) e o campo CodigoA (na tabela Consultas). Isso constitui um relacionamento muitos-para-muitos entre as tabelas Medicamentos e Animais. Como explicar essa confusão? É simples: “Um animal pode tomar vários medicamentos e um medicamento pode ser tomado por vários Animais”. O momento exato em que um determinado animal é associado a um determinado medicamento está descrito na tabela Consultas, que registra o atendimento a um animal e o medicamento prescrito pelo veterinário. Veja a estrutura completa de relacionamentos de nosso Banco de exemplo: Figura 10.7 – Relacionamentos do Banco Os relacionamentos entre as tabelas são criados e mantidos para haver integridade e evitar a redundância nos dados existentes no Banco. INTEGRIDADE REFERENCIAL Já pensou em cadastrar um animal na tabela apropriada com um código de Dono que não se encontra na tabela Clientes? Isso não pode ser permitido em um BD se esses campos estão relacionados. Ou seja, devido ao relacionamento existente, só é permitida a inclusão de um animal se o código do Dono fosse encontrado no campo Cod de algum registro da tabela Clientes. Códigos de donos que não existem na tabela Clientes não serão aceitos no banco e o animal não poderá ser inserido na tabela Animais. Há um conjunto de regras impostas pelo BD para que se mantenha a integridade entre os dados que serão inseridos ou apagados. O criador do Banco pode, por exemplo, indicar que quando um registro for apagado da chave primária, sejam apagados todos os registros da chave estrangeira coincidente. Seria assim: se um cliente for excluído da tabela Clientes, todos os animais que o têm como Dono serão excluídos também. LINGUAGEM DE CONSULTA - SQL Armazenar os dados é, sem dúvida, a principal função dos Bancos de Dados, para isso usamos as tabelas. Mas os SGBD nos permitem selecionar e manipular dados específicos do banco, aumentando ainda mais a utilidade e a flexibilidade do mesmo. Para essa finalidade, usamos uma Linguagem de Consulta. Linguagem de Consulta é um conjunto de instruções que permitem ao usuário manipular os dados armazenados nas tabelas e a própria estrutura do Banco. A linguagem de consulta mais usada atualmente, em qualquer que seja o SGBD, é o SQL (Structured Query Language – ou Linguagem Estruturada de Consulta). Há dois tipos de instruções no SQL, as DML (Linguagem de Manipulação de Dados) que permitem inserções, alterações e exclusões nos registros, e as instruções DDL (Linguagem de Definição de Dados) que permitem alterações na estrutura do Banco, como a criação de tabelas e campos, a alteração e a exclusão dos mesmos. As principais instruções DML da Linguagem SQL são SELECT, INSERT INTO, UPDATE, DELETE. As principais instruções DDL são CREATE, ALTER e DROP. Esses comandos permitem ao usuário realizar alterações na estrutura do Banco de Dados. Vamos primeiro dar uma olhada nas instruções DML: Instrução SELECT Esta instrução seleciona registros e campos específicos de uma tabela. A sintaxe geral da instrução SELECT é a seguinte: SELECT Campos FROM Tabelas WHERE Critérios Vamos dar um exemplo e selecionar apenas os Cães da tabela Animais, mostrando todos os campos da tabela: SELECT * FROM Animais WHERE Especie=“Canino” Figura 10.8 – Resultado da Instrução SQL anterior Sobre a instrução acima, temos que: SELECT Campos: Instrução SQL que seleciona para apresentar os campos determinados. O sinal de * (asterisco) indica que TODOS os campos da entidade (tabela) serão mostrados. Se for necessário especificar os nomes dos campos a serem mostrados, deve-se separá-los por , (vírgula). FROM Tabelas: Indica de que tabelas os campos serão selecionados, para informar mais de uma tabela, separe seus nomes por , (vírgula). WHERE Critérios: Indica a condição que deverá ser respeitada (avaliada) para a seleção dos registros da tabela. A Expressão a seguir seleciona, da tabela Clientes, apenas os clientes que possuem código superior a 2 e apresenta apenas Nome e CPF no resultado: SELECT Nome, CPF FROM Clientes WHERE Cod>2 Figura 10.9 – Resultado da instrução anterior Caso o usuário deseje selecionar os animais que pertencem ao Cliente 2 ordenando a listagem pelo nome do Animal (ordem alfabética), e mostrando apenas o nome do Animal, sua espécie e sua raça, deve-se fazer o seguinte: SELECT Nome, Especie, Raça FROM Animais WHERE Dono=2 ORDER BY Nome Figura 10.10 – o uso da cláusula ORDER BY A Cláusula ORDER BY pode ser usada para informar ao SGBD que quando proceder com o resultado da consulta, ordene os dados pelo campo citado, no nosso caso, o Nome do animal. Se o usuário terminasse a instrução com ORDER BY Nome DESC, a ordenação aconteceria de forma decrescente (ou seja, de Z para A). Ainda, um usuário pode selecionar os animais que são da espécie canina e que tem raça indefinida mostrando seus nomes, donos e observações através do seguinte comando: SELECT Nome, Dono, Raça="Indefinida" Obs FROM Animais WHERE Especie="Canino" AND Figura 10.11 – Uso de dois critérios de seleção unidos pelo operador AND (“e”) No critério de uma instrução SELECT, podemos apresentar várias condições unidas por AND (“e”) e OR (“ou”); esses termos são conhecidos como Operadores Booleanos. Quando usamos AND, só serão selecionados os registros que satisfazem as duas condições (uma E outra). Quando usamos OR, serão selecionados os registros que satisfazem pelo menos uma das condições exigidas (uma OU outra, ou ainda AS DUAS). Caso a comunicação envolva mais de uma tabela e a apresentação de campos de ambas em uma mesma consulta, deve-se definir os campos através da sintaxe Tabela.Campo. Exemplo: para selecionar Nome e Telefone dos clientes e Nome e Espécie dos animais, devese escrever o seguinte: SELECT Clientes.Nome, Telefone, Animais.Nome, Especie FROM Clientes, Animais Note que só é necessário preceder o nome do campo a ser pesquisado com o nome da tabela se houver o mesmo nome de campo nas duas tabelas. Esse “Tabela” anterior ao nome do campo é apenas para diferenciá-los. Instrução INSERT INTO Permite inserir dados nas tabelas do BD. A Sintaxe geral é assim: INSERT INTO Tabela (campo1, campo2, campo3) VALUES (valor1, valor2, valor3) Por exemplo, caso o usuário deseja inserir um novo Animal de código 9, Nome Shazam, espécie Felino, Raça Persa e pertencente ao cliente 3 pode fazer o seguinte: INSERT INTO Animais (CodigoA, Nome, Especie, Raça, Dono ) VALUES (9, "Shazam", "Felino", "Persa", 3); A instrução INSERT INTO não retorna uma listagem de registros, como a instrução SELECT, mas modifica os dados de uma tabela, inserindo-lhe um registro novo no fim da tabela. Veja a nova tabela Animais depois da instrução anterior: Figura 10.12 – Novo animal adicionado na tabela Animais Instrução UPDATE A Instrução UPDATE da linguagem SQL permite que o usuário altere os valores contidos em um ou vários registros específicos da tabela. Esta instrução se escreve assim: UPDATE Tabela SET Campo=Valor WHERE Critérios Vamos dar um exemplo: se todos os animais do Cliente 2 forem, na verdade, gatos (tudo bem, deve-se demitir a pessoa que preencheu os dados do jeito como estão agora). Para alterar os campos dos animais deste cliente, pode-se fazer o seguinte: UPDATE Animais SET Especie=”Felino” WHERE Dono=2 Figura 10.13 – Resultado após a Instrução UPDATE (é, eu sei, as raças não ficaram combinando, mas aí é só você alterar com outros UPDATE) Instrução DELETE Como o nome já mostra, esta instrução exclui um ou mais registros de acordo com um critério. A sintaxe desta instrução é: DELETE * FROM Tabela WHERE Critérios Um exemplo pode ser o seguinte: Vamos excluir todos os gatos da tabela Animais do nosso Banco de Dados. DELETE * FROM Animais WHERE Especie="Felino" Figura 10.14 – Tabela após exclusão de registros Lembre-se, a instrução DELETE não apaga apenas um campo do registro (como por exemplo, apagar apenas os nomes dos animais), esta instrução exclui o registro inteiro da tabela. Agora chegou a vez das instruções DDL, que, como já foi dito, permitem alterações na estrutura das tabelas: Instrução CREATE Essa instrução cria diversas entidades diferentes num banco de dados, como tabelas e views (visões), entre outros. Para criar uma tabela, usamos a seguinte sintaxe: CREATE TABLE Tabela (Campo1 Tipo, Campo2 Tipo, etc.) Surgirá uma nova tabela no Banco com as configurações citadas na instrução acima. Instrução ALTER Esta instrução permite alterar a estrutura de uma tabela criada a partir da instrução CREATE TABLE. Com esse comando, podemos criar, modificar e excluir campos das tabelas do banco. A sintaxe básica para... ...adicionar um campo é: ALTER TABLE Tabela ADD COLUMN Campo Tipo(tamanho) ...modificar um campo é: ALTER TABLE Tabela ALTER COLUMN Campo Tipo(tamanho) ...excluir um campo é: ALTER TABLE Tabela DROP COLUMN Campo Exemplo: para adicionar, à tabela Animais, um campo chamado Sexo, do tipo texto, com um caractere (apenas espaço suficiente para preencher com M ou F), a instrução seria a seguinte: ALTER TABLE Animais ADD COLUMN Sexo TEXT(1) Para alterar o campo criado anteriormente, para que ele passe a aceitar 10 caracteres, deve usar essa expressão: ALTER TABLE Animais ALTER COLUMN Sexo TEXT(10) Para que referido campo seja excluído definitivamente da tabela, utiliza-se a seguinte expressão: ALTER TABLE Animais DROP COLUMN Sexo Instrução DROP A instrução DROP da linguagem SQL permite que o usuário exclua uma tabela do Banco de Dados. A sintaxe básica deste comando é: DROP Tabela Exemplo, se o projetista do banco deseja excluir a tabela de Animais (o que não seria muito inteligente num Banco de Dados de uma clínica veterinária), basta acionar o comando: DROP Animais CONHECENDO O MICROSOFT ACCESS O Microsoft Access é um SGBDR de pequeno porte para ser usado com Bancos de Dados pessoais e de pequenas e médias empresas. O Microsoft Access está inserido no Microsoft Office, a suíte de programas de escritório da Microsoft. Figura 10.15 – Painel principal do Banco de Dados da Clínica Veterinária, feito no Access Uma das principais características a respeito do Access é a sua facilidade de uso, tanto para a criação da estrutura do Banco de Dados em si, como para a manipulação de dados por parte dos usuários finais do Banco. O Microsoft Access permite que sejam criados e modificados vários objetos para o Banco de Dados. Esses componentes são: Tabelas (Tables): São as tabelas do banco, feitas para armazenar os dados. As tabelas são os componentes básicos de um BD. Sem tabelas não é possível criar qualquer um dos outros componentes. Consultas (Querys): São os objetos que buscam e alteram dados das tabelas. Na verdade, as consultas são apenas instruções SQL gravadas para uso posterior. A forma de criar as consultas é bastante simples, tornando desnecessário que o usuário conheça a linguagem SQL. Formulários (Forms): São as “janelas” que o projetista cria para fazer interface com o usuário que irá utilizar o Banco. Os formulários são uma espécie de “maquiagem” para as tabelas e consultas aparecem mais “agradáveis” na tela. Relatórios (Reports): São os documentos que serão impressos no Banco de Dados. Pode-se construir Relatórios para tabelas ou para Consultas. Macros: São conjuntos de ações escritas em seqüência para que o Access realize operações de forma automática. As macros no Access não têm o mesmo “formato” que no Excel ou Word. Módulos (Modules): São programas criados em VBA (Visual Basic for Applications), a linguagem de programação que acompanha os aplicativos do Microsoft Office. Os módulos estão para o Access assim como as Macros estão para o Word e Excel. Páginas (pages): Este recurso acompanha apenas as mais recentes versões do Microsoft Access e permite que o programa crie páginas dinâmicas para a Web que acessem os dados do Banco. Essas páginas serão construídas nas linguagens ASP + HTML. Tipos de Dados no Access Um tipo de dado de um campo é a característica que define que tipo de informação aquele campo poderá armazenar, como números, textos e até figuras. Cada tipo de dado é ideal para uma determinada informação, e cada tipo de dado gasta uma quantidade específica de Bytes para armazenar as informações na tabela. Os tipos de dados aceitos pelas tabelas do Access são: Autonumeração: Campos definidos com esse tipo recebem números que se incrementam automaticamente. O usuário do banco não poderá definir um valor para esse campo, o próprio Access define um valor exclusivo para cada registro da tabela; Esse campo armazena cada dado em 4 Bytes. Texto: Campos com esse tipo de dado recebem caracteres alfanuméricos (texto) de até 255 caracteres de comprimento. Esse tipo de dado é ideal para campos como nome, endereço, etc. Cada caractere escrito num campo com esse tipo gasta 1 Byte (ASCII) ou 2 Bytes (Unicode); Memorando: Este tipo define que o campo poderá receber textos com até 65.536 caracteres de comprimento. Se o campo deve armazenar textos longos, esta é a melhor opção; Número: Define que o campo só aceitará números; há vários tamanhos disponíveis para esse tipo de dados (verifique no próximo tópico); É ideal para qualquer tipo de dados numéricos, com exceção dos valores monetários; Moeda: usado para armazenar valores monetários e para evitar o arredondamento do valor do campo em cálculos matemáticos; Sim/Não: Armazena apenas dados que podem assumir dois valores 0/1, sim/não, verdadeiro/falso. Esse campo gasta apenas 1 bit (isso mesmo, um único bit); Data/Hora: usado para armazenar dados de Data e de Hora. Armazena 8 Bytes. Objeto OLE: em um campo definido com esse tipo de dados, podemos armazenar documentos do Word, planilhas do Excel, Figuras, Apresentações do PowerPoint, sons, etc. Esse tipo de dados permite armazenar qualquer objeto proveniente de qualquer aplicativo do Windows que permita as operações de Copiar e Colar (filosofia OLE). Esse campo pode armazenar até 1 GB de dados. Hyperlink: Permite armazenar um atalho para uma página da Internet ou um documento em qualquer computador da rede local ou dentro do próprio computador onde o Banco está armazenado. Assistente de Pesquisa: é um tipo de dados que apresentará uma listagem adquirida de outra tabela ou consulta do Banco. Para esse tipo de dados existir, é necessário que haja um relacionamento entre a tabela em questão e a entidade de onde os dados são pesquisados. Figura 10.16 – Tabela das consultas veterinárias sendo construída (tipos de dados sendo definidos para os campos) Tamanhos Para os Campos Numéricos Uma vez escolhido o tipo de dados Número para um campo, é necessário definir o tamanho do campo, ou seja, quantos bytes o Access vai gastar para armazenar o número em questão. Os tamanhos dos dados para um campo número são: Byte; Byte: permite armazenar números inteiros de 0 (zero) a 255. Este tamanho gasta 1 Inteiro: Gasta 2 Bytes, e armazena números inteiros (não-fracionários) de -32.768 até 32.767; Inteiro Longo: Gasta 4 Bytes e armazena números inteiros de -2 bilhões a +2 bilhões (é claro, isso é uma aproximação); Simples: Gasta 4 Bytes e armazena números fracionários com precisão de 7 casas decimais; bytes; Duplo: Armazena números fracionários com precisão de 15 casas decimais e gasta 8 Decimal: Armazena números com precisão de 28 casas decimais e consome, para isso, 12 Bytes por dado armazenado; Se você não entendeu as diferenças de tamanhos armazenados nesses campos, veja o exemplo: O número 126 caberia em um campo do tipo Byte e gastaria apenas 1 Byte, porque seria armazenado como uma seqüência binária de 8 bits (01111110). Se este mesmo número fosse armazenado, digamos, num campo tipo Inteiro (que armazena cada número como uma seqüência de 2 Bytes – 16 bits), ele seria assim: 00000000 01111110. Se o mesmo 126 fosse inserido em um campo tipo Inteiro Longo, ele seria traduzido como 00000000 00000000 00000000 01111110, e, com isso, gastaria 4 bytes para ser armazenado. A escolha do tamanho do campo numérico depende do tipo de informação que será armazenada pelo campo. Tipos de Consultas do Access Uma consulta, para o Access, é tão somente uma expressão SQL armazenada para uso posterior. Como há vários comandos na linguagem SQL, há vários tipos de consultas no Access, a saber: Consulta Seleção: É uma consulta construída a partir da instrução SELECT. Esta consulta serve para selecionar campos e registros definidos das tabelas do Banco; Consulta Acréscimo: É uma consulta feita a partir da instrução INSERT INTO. Esta consulta é utilizada para adicionar registros às tabelas; Consulta Exclusão: É uma consulta baseada na instrução DELETE. É utilizada para excluir registros de uma tabela; Consulta Atualização: É usada para alterar os valores de determinados campos em uma tabela. Essa consulta é construída por intermédio da instrução UPDATE; Consulta Criar Tabela: Uma consulta que permite a criação de uma tabela no Banco de Dados. Nessa consulta, é utilizada a instrução CREATE TABLE. Figura 10.17 – Os vários tipos de consultas do Microsoft Access Formulários e Relatórios no Access Formulários, no Access, são as janelas que o projetista cria para servir de interface entre o usuário e os componentes básicos do Banco (tabelas e consultas). As telas usadas pelos atendentes para preencher os dados dos cadastros dos clientes são os formulários. Figura 10.18 – Formulário de acesso à tabela Animais Relatórios são os documentos impressos que apresentarão dados das tabelas e consultas do Banco. Se um banco de dado tem que emitir uma “nota” ou “recibo” da consulta veterinária, esse documento será um relatório. Figura 10.19 – Visualização de um relatório Macros e Módulos Para automatizar tarefas no Access, podemos usar dois tipos de objetos, as Macros e os Módulos. Macros são seqüências de ações predefinidas pelo usuário usadas basicamente para realizar tarefas simples, que já estão definidas numa lista no Access. Uma macro pode ser acionada por um botão de comando em um formulário ou por outra macro. Figura 10.20 – Macro sendo criada Como se pôde perceber, para criar uma macro no Access, não é necessário saber programar, basta selecionar as ações predefinidas em seqüência e definir seus argumentos que o SGBD fará o resto durante a execução da mesma. Para fazer um módulo é mais complicado: o usuário normalmente precisa conhecer a linguagem de programação VBA, que acompanha o Microsoft Office. Veja um exemplo de Módulo em VBA: Figura 10.21 – Exemplo de módulo (em VBA) Claro que eu não escrevi esse módulo completamente (na verdade, eu não escrevi nada nesse módulo). O Access permite que o usuário crie uma Macro (bastante simples, como vimos) e a converta em módulo. As figuras 9.20 e 9.21 apresentam objetos diferentes (macro e módulo, respectivamente) que fazem a mesma coisa. O módulo mostrado na Figura 10.21 foi criado a partir da Macro mostrada na figura anterior. BANCOS DE DADOS NAS EMPRESAS Há alguns termos muito usados para definir alguns conceitos sobre os Bancos de Dados em ambientes empresariais, e que poderiam causar certas complicações nas provas de Concursos. Esses termos são muito simples e não deveriam gerar tanta preocupação. Data Warehouse: Bancos de dados enormes, que armazenam informações de todos os setores de uma empresa para dar suporte à tomada de decisões estratégicas. Exemplo: Os sistemas que armazenam dados de clientes, fornecedores, produtos, entradas, saídas, perdas, pessoal, contabilidade de uma empresa (todos juntos em um único banco). Data Mart: Bancos de dados que armazenam informações normalmente de um determinado setor da empresa. Serve, como o DW, para auxiliar na tomada de decisões vitais para a empresa, mas não resume dados de várias fontes ou setores. Data Mining: Algo como “Mineração de Dados”, definem as ações realizadas, no Banco de Dados, para detectar relacionamentos entre as informações armazenadas. Um exemplo: em redes varejistas, programas que identificam clientes com interessas comuns. OLAP: Significa “Processo Analítico On-line” e descreve uma ferramenta, usada pelos usuários finais, capaz de extrair dados de um Data Warehouse e analisá-los. A consulta ao DW é interativa, permitindo aos usuários verificarem o “porquê” dos resultados obtidos. Bussiness Intelligence: Ou “Inteligência de Negócios” é dos conceitos mais “na crista da onda” hoje em dia no que concerne a Gestão Empresarial. A inteligência resulta da coleta de dados, transformação desses dados em informação útil e, por fim a análise dessas informações contextualizadas para que sejam aplicadas a processos decisivos e gerem vantagens competitivas. Em suma, BI descreve uma série de componentes, técnicas e recursos para o armazenamento de dados e a sua utilização em prol da estratégia de negócios. SGBDs Corporativos O Access é um excelente Gerenciador de Bancos de Dados, mas é indicado para aplicações de pequeno porte. Para o gerenciamento de grandes volumes de dados, recomenda-se a utilização de um SGBDR mais robusto. Os dois nomes mais conhecidos são o Oracle, da Oracle Corp., SQL Server da Microsoft e o MySQL (SGBD Gratuito para ambientes Linux e Windows). O Oracle é o SGBDR preferido pela maioria das empresas, sua licença de uso é muito cara, mas ele está presente em grande parte dos sistemas de armazenamento de grandes volumes de dados. Figura 10.22 – Interface do Oracle O SQL Server, da Microsoft é o principal concorrente do Oracle. Sua facilidade de uso e configuração são suas principais vantagens (mas continuo dizendo que a maioria prefere o Oracle). Figura 10.23 – Interface do SQL Server Os imensos obstáculos para o uso dos SGBDs corporativos (normalmente esses “imensos” obstáculos são na verdade, os preços das licenças), levaram a “galera” do software livre a criar o MySQL, um SGBDR completamente gratuito para ser usado em ambientes LINUX (há versões para Windows também). Figura 10.24 – Interface do MySQL CONSIDERAÇÕES FINAIS Bem, amigos, acredito que chegamos ao fim desta nossa seção. Mas não resuma seus conhecimentos a respeito de Bancos de Dados somente a isso. Continue estudando, procure pela Internet em sites especializados. Leia mais e se informe melhor sobre os principais conceitos ligados aos Bancos de Dados. ser um site de um banco, por exemplo, pode criar uma conexão criptografada somente para que o cadeado apareça e o usuário acredite se tratar realmente do site do seu banco.