Baixe o app para aproveitar ainda mais
Prévia do material em texto
2013 PrincíPios de Banco de dados Prof. Décio Lehmkuhl Prof. Djayson Roberto Eger Copyright © UNIASSELVI 2013 Elaboração: Prof. Décio Lehmkuhl Prof. Djayson Roberto Eger Revisão, Diagramação e Produção: Centro Universitário Leonardo da Vinci – UNIASSELVI Ficha catalográfica elaborada na fonte pela Biblioteca Dante Alighieri UNIASSELVI – Indaial. 005.75 L523p Lehmkuhl, Décio Princípios de banco de dados / Décio Lehmkuhl; Djayson Roberto. Indaial : Uniasselvi, 2013. 189 p. : il ISBN 978-85-7830- 684-7 1. Banco de dados. I. Centro Universitário Leonardo da Vinci. Impresso por: III aPresentação Atualmente existem vários bancos de dados no mundo. Você já parou para pensar qual é a sua relação com os mesmos ou qual é a importância deles para a sociedade? Vamos relacionar alguns fatos para evidenciar uma possível resposta a este questionamento. A sociedade vive em torno de dados. Sua conta de energia elétrica, água, telefone e várias outras possuem dados relacionados que formam o valor a ser pago na fatura. Cada fornecedor desses serviços tem em sua base de dados o seu cadastro e o consumo que foi utilizado. Logo, pode-se concluir que o seu cadastro possivelmente existe em inúmeros bancos de dados. Pense em um documento pessoal, por exemplo, o seu CPF. Ele deve constar na base de dados da Receita Federal. Se você comprou algum produto em estabelecimento comercial, o seu CPF provavelmente existe na base de dados dele. Como foi mencionado acima, existe uma grande “ligação” entre você e vários bancos de dados. Isso pode tornar o conteúdo desta disciplina muito interessante. Serão abordados vários assuntos que vão desde as primeiras formas de armazenamento de dados até o estado atual de evolução da tecnologia. Você aprenderá quais são os conceitos de bancos de dados e até poderá programar a sua própria base de dados. Sendo assim, temos muito para aprender! Bons estudos! Prof. Décio Lehmkuhl Prof. Djayson Roberto Eger IV Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há novidades em nosso material. Na Educação a Distância, o livro impresso, entregue a todos os acadêmicos desde 2005, é o material base da disciplina. A partir de 2017, nossos livros estão de visual novo, com um formato mais prático, que cabe na bolsa e facilita a leitura. O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova diagramação no texto, aproveitando ao máximo o espaço da página, o que também contribui para diminuir a extração de árvores para produção de folhas de papel, por exemplo. Assim, a UNIASSELVI, preocupando-se com o impacto de nossas ações sobre o ambiente, apresenta também este livro no formato digital. Assim, você, acadêmico, tem a possibilidade de estudá-lo com versatilidade nas telas do celular, tablet ou computador. Eu mesmo, UNI, ganhei um novo layout, você me verá frequentemente e surgirei para apresentar dicas de vídeos e outras fontes de conhecimento que complementam o assunto em questão. Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa continuar seus estudos com um material de qualidade. Aproveito o momento para convidá-lo para um bate-papo sobre o Exame Nacional de Desempenho de Estudantes – ENADE. Bons estudos! UNI V VI VII UNIDADE 1 – FUNDAMENTOS DE BANCO DE DADOS .......................................................... 1 TÓPICO 1 – INTRODUÇÃO A BANCO DE DADOS .................................................................... 3 1 INTRODUÇÃO .................................................................................................................................... 3 2 CONCEITOS DE BANCO DE DADOS .......................................................................................... 4 2.1 DADO E INFORMAÇÃO .............................................................................................................. 4 2.2 BANCOS DE DADOS .................................................................................................................... 6 3 HISTÓRICO DO GERENCIAMENTO DOS DADOS ................................................................. 8 4 SISTEMA GERENCIADOR DE BANCO DE DADOS ................................................................ 11 4.1 DEFINIÇÕES DE UM SGBD ......................................................................................................... 11 4.2 FUNÇÕES DE UM SGBD .............................................................................................................. 13 4.3 ESTRUTURA DE UM SGBD ......................................................................................................... 14 4.4 TIPOS DE USUÁRIOS DO SGBD ................................................................................................. 16 5 PRINCIPAIS BANCOS DE DADOS DISPONÍVEIS NO MERCADO .................................... 16 5.1 MYSQL ............................................................................................................................................. 16 5.2 ORACLE ........................................................................................................................................... 17 5.3 POSTGRESQL ................................................................................................................................. 18 5.4 SQL SERVER .................................................................................................................................... 20 LEITURA COMPLEMENTAR .............................................................................................................. 22 RESUMO DO TÓPICO 1 ....................................................................................................................... 24 AUTOATIVIDADE ................................................................................................................................ 25 TÓPICO 2 – EVOLUÇÃO DOS BANCOS DE DADOS ................................................................. 27 1 INTRODUÇÃO .................................................................................................................................... 27 2 HISTÓRICO DA EVOLUÇÃO DOS BANCOS DE DADOS ..................................................... 28 2.1 PRIMEIRA GERAÇÃO .................................................................................................................. 28 2.2 SEGUNDA GERAÇÃO .................................................................................................................. 30 2.3 TERCEIRA GERAÇÃO .................................................................................................................. 32 3 ARQUITETURA DE BANCO DE DADOS ..................................................................................... 35 3.1 ARQUITETURA CENTRALIZADA ............................................................................................ 35 3.2 ARQUITETURA CLIENTE-SERVIDOR ...................................................................................... 36 3.3 ARQUITETURA PARALELA ....................................................................................................... 37 3.4 ARQUITETURA DISTRIBUÍDA ................................................................................................... 38 LEITURA COMPLEMENTAR .............................................................................................................. 41 RESUMO DO TÓPICO 2 ....................................................................................................................... 43 AUTOATIVIDADE ................................................................................................................................44 TÓPICO 3 – TENDÊNCIAS E PERSPECTIVAS ............................................................................... 45 1 INTRODUÇÃO .................................................................................................................................... 45 2 CLASSIFICAÇÃO DOS BANCOS DE DADOS .......................................................................... 46 2.1 BANCOS DE DADOS DE INFORMAÇÕES GEOGRÁFICAS ................................................. 46 2.2 BANCOS DE DADOS MULTIMÍDIA .......................................................................................... 49 2.3 BANCO DE DADOS TEMPORAL ............................................................................................... 50 2.4 BANCOS DE DADOS BIOLÓGICOS .......................................................................................... 51 sumário VIII 2.5 BANCO DE DADOS XML ............................................................................................................. 53 3 TIPOS DE GERENCIAMENTO DE DADOS ................................................................................ 54 3.1 DATA MINING ................................................................................................................................ 55 3.2 DATA WAREHOUSE ...................................................................................................................... 58 3.3 DATA MART .................................................................................................................................... 60 3.4 DATA MARKETING ....................................................................................................................... 60 4 NOVOS CONCEITOS ........................................................................................................................ 61 4.1 BIG DATA ......................................................................................................................................... 62 4.2 NOSQL ............................................................................................................................................. 64 LEITURA COMPLEMENTAR .............................................................................................................. 65 RESUMO DO TÓPICO 3 ....................................................................................................................... 68 AUTOATIVIDADE ................................................................................................................................ 69 UNIDADE 2 – MODELAGEM DE DADOS ...................................................................................... 71 TÓPICO 1 – MODELOS DE DADOS ................................................................................................. 73 1 INTRODUÇÃO .................................................................................................................................... 73 2 MODELO CONCEITUAL .................................................................................................................. 74 3 MODELO LÓGICO ............................................................................................................................. 75 4 MODELO FÍSICO ................................................................................................................................ 75 LEITURA COMPLEMENTAR .............................................................................................................. 77 RESUMO DO TÓPICO 1 ....................................................................................................................... 80 AUTOATIVIDADE ................................................................................................................................ 81 TÓPICO 2 – MODELO ENTIDADE-RELACIONAMENTO ......................................................... 83 1 INTRODUÇÃO .................................................................................................................................... 83 2 MODELO ENTIDADE-RELACIONAMENTO ............................................................................. 83 2.1 ENTIDADE ...................................................................................................................................... 85 2.2 ATRIBUTOS ..................................................................................................................................... 86 2.3 RELACIONAMENTO .................................................................................................................... 87 3 CONSTRUINDO UM MODELO ENTIDADE-RELACIONAMENTO .................................... 88 LEITURA COMPLEMENTAR .............................................................................................................. 90 RESUMO DO TÓPICO 2 ....................................................................................................................... 91 AUTOATIVIDADE ................................................................................................................................ 92 TÓPICO 3 – TIPOS DE RELACIONAMENTOS .............................................................................. 93 1 INTRODUÇÃO .................................................................................................................................... 93 2 CONDICIONALIDADE DO RELACIONAMENTO ................................................................... 93 3 GRAU DO RELACIONAMENTO .................................................................................................... 95 3.1 RELACIONAMENTO UM PARA UM ........................................................................................ 95 3.2 GRAU UM PARA MUITOS ........................................................................................................... 96 3.3 GRAU MUITOS PARA MUITOS .................................................................................................. 96 4 AUTORRELACIONAMENTO .......................................................................................................... 97 RESUMO DO TÓPICO 3 ....................................................................................................................... 99 AUTOATIVIDADE ................................................................................................................................ 100 TÓPICO 4 – MODELO RELACIONAL .............................................................................................. 101 1 INTRODUÇÃO .................................................................................................................................... 101 2 BANCO DE DADOS RELACIONAL .............................................................................................. 101 3 TABELA ................................................................................................................................................. 101 4 CHAVE ................................................................................................................................................... 102 4.1 CHAVE PRIMÁRIA ........................................................................................................................ 102 4.2 CHAVE ESTRANGEIRA ............................................................................................................... 103 IX 4.3 CHAVE ALTERNATIVA ................................................................................................................ 105 LEITURA COMPLEMENTAR .............................................................................................................. 106 RESUMO DO TÓPICO 4 ....................................................................................................................... 108 AUTOATIVIDADE ................................................................................................................................109 TÓPICO 5 – NORMALIZAÇÃO DE DADOS .................................................................................. 111 1 INTRODUÇÃO .................................................................................................................................... 111 2 ANOMALIAS DE ATUALIZAÇÃO ................................................................................................. 113 3 APLICAÇÃO DAS FORMAS NORMALIZAÇÃO ....................................................................... 115 4 FERRAMENTAS PARA MODELAGEM DE DADOS ................................................................. 117 4.1 DBDESIGNER ................................................................................................................................. 117 4.2 ERWIN .............................................................................................................................................. 118 4.3 POWERDESIGNER ........................................................................................................................ 119 RESUMO DO TÓPICO 5 ....................................................................................................................... 121 AUTOATIVIDADE ................................................................................................................................ 122 UNIDADE 3 – SQL ................................................................................................................................. 123 TÓPICO 1 – INTRODUÇÃO À LINGUAGEM SQL ....................................................................... 125 1 INTRODUÇÃO .................................................................................................................................... 125 2 O QUE É SQL ........................................................................................................................................ 126 3 MODELO DE DADOS DESTA UNIDADE .................................................................................... 126 4 CRIANDO O BANCO DE DADOS ................................................................................................. 127 4.1 CONEXÃO AO BANCO DE DADOS .......................................................................................... 128 4.2 CRIAÇÃO DE TABELAS ............................................................................................................... 129 5 RESTRIÇÕES ........................................................................................................................................ 136 5.1 CHAVE PRIMÁRIA E RESTRIÇÃO NOT NULL ...................................................................... 136 5.2 CHAVE ESTRANGEIRA ............................................................................................................... 138 5.3 CHAVE ÚNICA .............................................................................................................................. 139 5.4 CHECAGEM DE DADOS .............................................................................................................. 140 LEITURA COMPLEMENTAR .............................................................................................................. 141 RESUMO DO TÓPICO 1 ....................................................................................................................... 144 AUTOATIVIDADE ................................................................................................................................ 145 TÓPICO 2 – MANUTENÇÃO DOS DADOS ................................................................................... 147 1 INTRODUÇÃO .................................................................................................................................... 147 2 INSERINDO, SELECIONANDO, ATUALIZANDO E DELETANDO DADOS ..................... 147 2.1 VALIDANDO AS RESTRIÇÕES DA TABELA ........................................................................... 147 2.2 TRANSAÇÕES ................................................................................................................................ 152 2.3 CONVERSÃO DE DADOS ............................................................................................................ 152 2.4 COMANDOS UPDATE E DELETE .............................................................................................. 154 3 SELEÇÃO DE DADOS ....................................................................................................................... 156 LEITURA COMPLEMENTAR .............................................................................................................. 164 RESUMO DO TÓPICO 2 ....................................................................................................................... 166 AUTOATIVIDADE ................................................................................................................................ 167 TÓPICO 3 – OUTRAS ESTRUTURAS DE DADOS ........................................................................ 169 1 INTRODUÇÃO .................................................................................................................................... 169 2 OBJETOS DE BANCOS DE DADOS .............................................................................................. 170 2.1 ÍNDICES ........................................................................................................................................... 170 2.2 SEQUENCES ................................................................................................................................... 172 2.3 VIEWS ............................................................................................................................................... 175 X 3 PL/SQL ................................................................................................................................................... 177 3.1 PROCEDURES ................................................................................................................................. 178 3.2 FUNCTION ...................................................................................................................................... 179 3.3 PACKAGES ....................................................................................................................................... 180 3.4 TRIGGERS ........................................................................................................................................ 181 LEITURA COMPLEMENTAR .............................................................................................................. 183 RESUMO DO TÓPICO 3 ....................................................................................................................... 185 AUTOATIVIDADE ................................................................................................................................ 186 REFERÊNCIAS ........................................................................................................................................ 187 1 UNIDADE 1 FUNDAMENTOS DE BANCO DE DADOS OBJETIVOS DE APRENDIZAGEM PLANO DE ESTUDOS Esta unidade tem por objetivos: • apresentar o que é um banco de dados; • demonstrar como foi a evolução dos bancos de dados; • apresentar perspectivas e tendências desta tecnologia. Esta unidade está dividida em três tópicos e, em cada um deles, você encontrará atividades que proporcionarão a compreensão dos conteúdos apresentados. TÓPICO 1 – INTRODUÇÃO A BANCO DE DADOS TÓPICO 2 – EVOLUÇÃO DOS BANCOS DE DADOS TÓPICO 3 – TENDÊNCIAS E PERSPECTIVAS 2 3 TÓPICO 1 UNIDADE 1 INTRODUÇÃO A BANCO DE DADOS 1 INTRODUÇÃO “O período de maior ganho de conhecimento e experiência é o período de maior dificuldadena vida de cada um”. (Dalai Lama) Esse tópico tem como objetivo apresentar ao(a) acadêmico(a) conceitos de bancos de dados. Você aprenderá que existe uma grande diferença entre dado e informação e que a partir deles é possível gerar conhecimento. Compreender isso é requisito básico para o bom aproveitamento da disciplina. FIGURA 1 – DADO, INFORMAÇÃO E CONHECIMENTO FONTE: Os autores Também será abordado um histórico do gerenciamento dos dados. O objetivo é que se perceba que vários ciclos de aperfeiçoamento aconteceram para se chegar ao nível tecnológico que temos hoje. Para fins conclusivos, veremos quais são os principais bancos de dados relacionais existentes no mundo. Você perceberá que cada um deles possui focos diferenciados com características e particularidades que necessitam de uma análise aprofundada para sua melhor compreensão. UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 4 2 CONCEITOS DE BANCO DE DADOS 2.1 DADO E INFORMAÇÃO Para entendermos melhor o que é um banco de dados, precisamos antes compreender a diferença que existe entre dado e informação. Dado é um conteúdo que ainda não foi processado para gerar um significado. Pode-se dizer que dado é a menor unidade de conteúdo que tem significado no mundo real. Por exemplo, ao realizar uma pesquisa para mapear a qualidade de uma biblioteca, normalmente são feitas entrevistas com seus respectivos usuários. A figura a seguir mostra o formulário WEB onde os dados da pesquisa podem ser coletados. FIGURA 2 – FORMULÁRIO DE COLETA DE DADOS PARA A PESQUISA FONTE: Os autores TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS 5 Assim que os usuários responderem à pesquisa, os dados vão sendo armazenados em um depósito de dados. A figura a seguir representa este depósito de dados. FIGURA 3 – DEPÓSITO DE DADOS DA PESQUISA FONTE: Os autores Mesmo já possuindo os dados, eles não têm uma utilidade bem definida. É possível ler linhas e linhas de pesquisa, porém não se tem um real significado do que ela traz como resultado. A partir desse momento surgem questões como, por exemplo, qual é o grau de escolaridade dos usuários da biblioteca e como eles avaliam o atendimento? Para responder a estas perguntas, precisamos fazer uma análise de todas as respostas e formatá-las de uma forma mais resumida e de fácil entendimento. Quando executamos esse processo estamos gerando informação, que é o processamento de dados para responder a algumas perguntas ou traduzir de uma forma mais sumarizada o significado dos mesmos. A informação sempre é gerada com base nos dados. A figura a seguir mostra algumas informações dos dados da pesquisa. FIGURA 4 – INFORMAÇÕES DE PARTE DO RESULTADO DA PESQUISA FONTE: Os autores UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 6 A informação gera conhecimento. Rob e Coronel (2011, p. 11) nos dizem que “o conhecimento implica familiaridade, consciência e compreensão das informações conforme se apliquem a um ambiente”. Quando conseguimos compreender informações e relacioná-las ao seu contexto, estamos obtendo conhecimento. As informações podem ser utilizadas para tomada de decisão. No exemplo da pesquisa da biblioteca, pode ser feita uma análise para descobrir como está a qualidade do atendimento, e com base nisso, tomar decisões para melhorar os pontos fracos. DICAS 2.2 BANCOS DE DADOS Agora que já sabemos o que são dados, informações, conhecimento e qual é a diferença entre ambos, precisamos nos concentrar no local onde os dados ficam armazenados. Anteriormente nos referimos a esse local como depósito de dados, porém, o mais correto seria chamar de banco de dados. Para definir banco de dados, buscamos uma explanação mais genérica e abrangente escrita por Elmasri e Navathe (2011, p. 3): Um banco de dados é uma coleção de dados relacionados. Com dados, queremos dizer fatos conhecidos que podem ser registrados e possuem significado implícito. Por exemplo, considere os nomes, números de telefone e endereço das pessoas que você conhece. Você pode ter registrado esses dados em uma agenda ou, talvez, os tenha armazenado em um disco rígido, usando um computador pessoal e um software como Microsoft Access ou Excel. Essa coleção de dados relacionados, com um significado implícito, é um banco de dados. Um banco de dados também pode ser chamado de base de dados. Os dados são armazenados de uma maneira que tem como objetivo facilitar a inclusão, remoção, consulta e alteração. Eles representam aspectos ou fatos do mundo real, que muitas vezes é denominado de minimundo ou universo de discurso. Só devemos armazenar no banco de dados o que faz parte do seu minimundo. Para exemplificar melhor, pense em um sistema de vendas de ingressos online para cinemas. Nesse minimundo existem características que são importantes e necessárias para a venda de ingressos, como por exemplo, o nome do filme, horário em que ele será reproduzido, o local, se é dublado ou legendado etc. Essas características precisam estar armazenadas para possíveis consultas e alterações. Já características como a cor das paredes ou o tipo de piso da sala do cinema não são fatos necessários para posterior consulta em um sistema e não precisam ser armazenados no banco de dados. TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS 7 Para simplificar a definição, podemos dizer que o minimundo é tudo o que existe no mundo real que é pertinente para a resolução do problema. A figura a seguir demostra de forma visual este conceito. FIGURA 5 – CONCEITO DE MINIMUNDO FONTE: Os autores Bancos de dados existem normalmente para serem utilizados por aplicações. Elas é que realizam consultas e fazem alterações nos dados. Para tornar esse processo mais simples, existe o Sistema Gerenciador de Banco de Dados (SGDB) que é um software responsável por manter os bancos de dados que estão sob sua responsabilidade. Nele existem funções pré-definidas para inserção, remoção, atualização e consulta dos dados armazenados. A figura a seguir nos dá uma visão geral da relação entre o SGDB e o seu universo. FIGURA 6 – SGDB E SEU UNIVERSO FONTE: Disponível em: <http://www.devmedia.com.br/conceitos-fundamentais- de-banco-de-dados/1649>. Acesso em: 18 nov. 2012. UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 8 Detalhes do funcionamento e filosofias do SGDB serão vistos em tópicos posteriores. Por hora, somente memorize que SGDB é um software responsável pelo gerenciamento de bases de dados. 3 HISTÓRICO DO GERENCIAMENTO DOS DADOS Conseguimos de forma introdutória definir alguns conceitos básicos relacionados a banco de dados. Vimos que existe um Sistema Gerenciador de Banco de Dados que é responsável pelo gerenciamento dos dados. Para a tecnologia chegar a esse patamar, passou por diversos processos evolutivos que tiveram como resultado a organização que temos hoje. Voltando no tempo, quando a informática estava dando seus primeiros passos, os sistemas eram desenvolvidos para atender a demandas isoladas, com foco na resolução de problemas dentro de determinadas áreas. Para evidenciar de forma mais clara essa ideia, considere a seguinte situação: um gerente da área de vendas de uma determinada empresa precisa ter informações mais detalhadas dos vendedores que ele gerencia e das vendas que são efetuadas. Todos os dados estão armazenados fisicamente em pastas que se encontram dentro de gavetas de arquivos. Com muito trabalho, ele consegue examinar todas as suas pastas e extrair as informações de que necessitava. Acontece que de uma hora para outra suas vendas aumentaram muito, fazendo com que fosse necessária a contratação de novos profissionais. Nesse novo cenário, o gerente não consegue mais obter as informações necessárias dos vendedores e suas vendas, pois o volume cresceu de tal forma que tornou inviável a análise manual dos dados. Esse acontecimento faz com que seja necessário um sistema de computador. Sendo assim, é feita a conversão do sistema de arquivos manual para um sistema de informação. Esse novo sistema aindanão utilizava um SGBD (o conceito de SGBD será visto mais à frente). Todos os dados eram gravados em arquivos e cada programa que era construído poderia ter um formato diferente de organização para a gravação. Rob e Coronel (2011, p. 12) fazem um relato do que aconteceu naquela época. A conversão de um sistema de arquivos manual para um sistema de arquivos computadorizado correspondente pode ser tecnicamente complexa (como as pessoas estão habituadas as interfaces relativamente amigáveis dos computadores de hoje, se esqueceram de quão hostis eram essas máquinas!). Isso gerou um novo tipo de profissional, conhecido como especialista em processamento de dados (PD), que devia ser contratado ou “desenvolvido” a partir da equipe atual. O especialista em PD criava as estruturas de arquivos computacionais necessárias, escrevendo o software que gerenciava os dados dentro dessas estruturas e projetava aplicativos que produziam relatórios com base nos dados dos arquivos. Assim, surgiram vários sistemas computadorizados “domésticos”. TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS 9 De uma forma resumida, podemos dizer que existiam programas de computadores gravando dados em arquivos e eles eram responsáveis por toda a estrutura e complexidade de gravação. A figura a seguir ilustra essa abordagem. FIGURA 7 – GERENCIAMENTO DE DADOS EM SISTEMA DE ARQUIVOS FONTE: Os autores Seguindo essa linha, podemos concluir que se a estrutura de dados de um arquivo fosse alterada, todos os programas que utilizassem esse arquivo precisariam ser atualizados, pois deixariam de funcionar. Para fins de exemplo, imagine que existe um arquivo com os dados de clientes. Foi solicitado que seja inclusa uma observação para cada cliente. Tomando como base a figura anterior, é feita uma alteração no programa que está rodando no computador 1 e logicamente no arquivo cliente. A partir desse momento o programa que está no computador 2 para de funcionar, pois ele ainda trabalha com a estrutura de dados antiga. Em casos mais complexos, ele poderia “corromper” o arquivo cliente, porque não tem conhecimento da nova estrutura de armazenamento. Esse problema é conhecido pelo nome de dependência estrutural, em que independente do tipo de alteração que seja feita no arquivo, todos os programas precisarão ser alterados. Isso abre margem para erros, tornando todo o processo mais caro e difícil de ser executado. O desejado seria a independência estrutural, em que qualquer alteração de estrutura não influenciaria no acesso aos dados. Como foi mencionado anteriormente, na época, quando o armazenamento de dados era feito em simples arquivos, os sistemas eram desenvolvidos de forma isolada, com focos bem distintos. Isso significa que o gerente da área de vendas tinha o seu sistema, o de recursos humanos tinha outro e o financeiro poderia ter outro específico para a sua necessidade. Conhecendo este cenário, podemos imaginar que o gerente de vendas possui dados dos seus vendedores e que o de recursos humanos também. Como ambos trabalham em sistemas distintos, cada um tem a sua versão dos dados, ou seja, o nome do vendedor está armazenado no sistema de vendas e no de recursos humanos. UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 10 Redundância de dados é o termo utilizado quando temos o mesmo dado armazenado em mais de um local. Rob e Coronel (2011, p.18) fazem um alerta para possíveis problemas que a redundância de dados pode gerar. A estrutura do sistema de arquivos dificulta a combinação de dados a partir de várias fontes e sua falta de segurança torna o sistema de arquivos vulnerável a falhas. A estrutura organizacional realiza o armazenamento dos mesmos dados em locais diferentes. Os profissionais de bancos de dados utilizam o termo ilhas de informação para se referir a essa localização dispersa dos dados. Como é improvável que os dados armazenados em locais diferentes sejam sempre atualizados de modo consistente, as ilhas de informação, em geral, contém versões diferentes dos mesmos dados [...]. Pode acontecer, por exemplo, que um vendedor tenha uma alteração no seu nome. Essa alteração pode ter sido feita apenas no sistema de vendas, enquanto que no de recursos humanos o nome continua desatualizado. A figura a seguir documenta essa estrutura. FIGURA 8 – REDUNDÂNCIA DE DADOS FONTE: Os autores A complexidade do gerenciamento de dados é alta no exemplo apresentado acima. Seria mais correto o dado estar armazenado em um único local para que todas as aplicações o consumissem. TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS 11 Outro ponto a ser observado quanto ao armazenamento de dados em arquivos se refere à concorrência de acesso, ou seja, mais de um usuário tentando acessar o mesmo dado em um mesmo momento. Um exemplo clássico dessa situação é a manutenção de saldo de uma conta bancária. Imagine uma conta bancária que tem um saldo de R$ 1.500,00. Se dois clientes retirarem dinheiro dessa conta ao mesmo tempo, teremos um problema de inconsistência dos dados. Vamos ver na prática como isso acontece: o cliente 1 e o cliente 2 fazem uma busca no saldo da conta e ambos têm como resultado R$ 1.150,00. O primeiro retira R$ 300,00 da conta e o segundo R$ 150,00. Dependendo de qual cliente finalize a operação por último o saldo da conta poderá ser R$ 850,00 (R$ 1.500,00 – R$ 300,00) ou R$ 1.000,00 (R$ 1.150,00 – R$ 150,00). O correto seria que quando está sendo feita a manutenção do saldo pelo cliente 1, o cliente 2 ficasse aguardando a manutenção terminar para daí sim iniciar o seu procedimento. Em um sistema de arquivos isso é muito complicado de gerenciar. Até agora vimos como era o armazenamento de dados em arquivos juntamente com algumas características negativas desse modelo. Percebemos que a dependência estrutural dos dados, a redundância e o acesso concorrente são fatores dificultadores que podem causar vários erros nos sistemas. Visando diminuir a complexidade no gerenciamento de dados surge o SGBD ou Sistema Gerenciador de Banco de Dados. Esse será o nosso próximo assunto. Por enquanto, entenda que compreender o funcionamento de sistemas que gravam dados em arquivos é muito útil para evitarmos os mesmos problemas quando iniciarmos o trabalho com SGBD. 4 SISTEMA GERENCIADOR DE BANCO DE DADOS 4.1 DEFINIÇÕES DE UM SGBD Um Sistema Gerenciador de Banco de Dados é um software responsável pelo gerenciamento de base de dados. Uma das principais características dele é retirar da aplicação à estruturação dos dados, deixando de forma transparente o acesso aos mesmos. A figura a seguir mostra graficamente onde o SGBD está inserido. UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 12 FIGURA 9 – SGBD FONTE: Os autores O SGBD elimina boa parte da complexidade do gerenciamento de dados, fazendo com que o programador tenha um foco maior na lógica da sua aplicação do que no armazenamento dos dados. Ao falarmos de SGBD precisamos entender como funciona a forma básica de armazenamento nesse novo tipo de organização. Ao invés de gravarmos dados em arquivos, gravamos em tabelas. Uma tabela possui colunas e registros. Vamos resumir a organização de armazenamento de dados de um SGBD: • Um banco de dados é formando por uma ou mais tabelas. • Tabelas são locais onde os dados ficam logicamente armazenados. • Colunas são campos que armazenam um determinado tipo de dado. • Registros são linhas, que de uma forma mais resumida, pode-se dizer que são conjuntos de campos preenchidos. A figura a seguir esclarece esse conceito. FIGURA 10 – FORMA BÁSICA DE ARMAZENAMENTO DE DADOS FONTE: Os autores TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS 13 4.2 FUNÇÕES DE UM SGBD A seguir listamos algumas funções do SGBD: • Manutenção do dicionário de dados – toda aplicação que desejar trabalhar com o banco de dados fará isso por intermédio do SGBD. Ele mantém definições de estruturas de dados e como eles estão relacionados. Qualquer alteração de estrutura é automaticamente atualizada no dicionáriode dados. Isso retira a responsabilidade dos programas que necessitam dos dados de manter a estrutura de organização dos mesmos. Essa é a função do SGBD que tem toda a estrutura dos dados em seu dicionário de dados. A figura a seguir traz um exemplo do dicionário de dados de um banco Mysql. FIGURA 11 – DICIONÁRIO DE UM BANCO DE DADOS MYSQL FONTE: Os autores • Segurança – O SGBD é responsável por garantir regras de segurança no que diz respeito ao acesso a dados e a objetos do banco. Cada usuário deve utilizar algum meio para se autenticar no SGBD, seja por login e senha ou através de leitura biométrica. Ao se autenticar, existem regras que definem os acessos, ou seja, quais bases estão visíveis, quais tabelas ou qualquer outra característica que estará disponível. Também existem controles em nível de objeto. O usuário pode ter acesso somente à leitura em um determinado objeto e gravação/leitura em vários outros. UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 14 • Apresentação dos dados em vários formatos – Um exemplo clássico deste conceito se refere ao trabalho com datas. Para clarificar, vamos pensar em uma data: 21 de dezembro de 2012. Essa data aqui no Brasil pode ser digitada por um usuário como 21/12/2012, enquanto que nos Estados Unidos a mesma seria 12/21/2012. O SGBD consegue manipular ambas as datas de forma transparente, desde que configurado corretamente. • Controle de acesso simultâneo ao mesmo dado – garante a integridade e consistência dos dados armazenados no banco quando acessados de forma concorrente. Isso resolve o problema apresentado no título “3 HISTÓRICO DO GERENCIAMENTO DOS DADOS”, que descrevia o acesso de dois usuários na manutenção do saldo de uma conta bancária em um sistema de arquivos. • Gerenciamento de backups – o SGBD fornece ferramentas para que o administrador do banco de dados possa configurar e efetuar backups. Se for feito o backup, outra funcionalidade existente é a de retornar os dados que o mesmo salvou. Isso pode ser necessário por vários motivos como, por exemplo, falhas de hardware ou manipulação da base de dados de forma incorreta. • Linguagem de acesso e manipulação dos dados – é fornecida pelo SGBD uma linguagem estruturada para consulta e alteração dos dados. Através dela, é possível que o utilizador tenha acesso aos dados de uma forma mais simplificada. O SQL (Structured Query Language) é uma espécie de linguagem padrão para este fim. Alguns SGBDs fornecem outra linguagem de programação para possibilitar a implementação de rotinas que executem no servidor do banco. Isso pode viabilizar a criação de aplicações mais performáticas, pois ao invés de consumir processamento e recursos de rede da máquina do usuário, boa parte do programa roda no servidor. 4.3 ESTRUTURA DE UM SGBD Os sistemas gerenciadores de bancos de dados são compostos, de uma forma geral, por módulos com funcionalidades bem definidas. Cada módulo tem sua responsabilidade no processo de gerenciamento dos dados. Usuários e programadores interagem com esses módulos a fim de obter seus resultados. A figura a seguir detalha essa estrutura. TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS 15 FIGURA 12 – ESTRUTURA DE UM SGBD FONTE: Disponível em: <http://www.ime.usp.br/~andrers/aulas/bd2005-1/aula5.html>. Acesso em: 18 nov. 2012. Vamos detalhar os módulos apresentados na figura anterior. • Programas aplicativos/consultas – Um usuário comum normalmente utiliza um sistema e é através desse sistema que o acesso ao banco de dados é feito. Já um programador tem ferramentas que são específicas para trabalhar com a tecnologia que o SGBD disponibiliza. Essas ferramentas tem um foco mais centrado na visualização de dados e manutenção de suas estruturas. • Processador/otimizador de consultas – Interpreta todos os acessos que são feitos na base de dados com um foco maior em otimização. Em outras palavras, ele é responsável por processar e definir “caminhos” para que o usuário tenha uma resposta a sua solicitação com performance. • Software para acessar os dados – Esse módulo é o responsável por recuperar os dados do local onde eles estão armazenados. Esses dados são divididos em dois grupos: os dados armazenados e a definição dos dados armazenados. O primeiro grupo se refere aos dados que um usuário comum manipula, como por exemplo, nomes de pessoas, cidades, endereços, telefones etc. Já o segundo define a forma de organização dos dados do primeiro grupo. É composto por tabelas, índices, relacionamentos etc. UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 16 4.4 TIPOS DE USUÁRIOS DO SGBD Existem vários tipos de usuários que acessam bancos de dados. Alguns têm um foco mais gerencial, enquanto outros apenas se concentram na manipulação de dados da base. A seguir detalhamos alguns tipos de usuários e suas responsabilidades ou necessidades. • Administrador do banco de dados (DBA – Database Administrator) – Essa figura é responsável por toda a administração do banco de dados. Atividades como instalação, configuração e melhorias em performance fazem parte do seu dia a dia. Também possui tarefas relacionadas ao gerenciamento de acesso de usuários na base e um constante monitoramento visando garantir uma alta disponibilidade do sistema. • Projetista ou analista de dados – É o profissional que tem como tarefa fazer o mapeamento dos dados que deverão ser armazenados no banco. Em seguida, vem à definição da estrutura onde os mesmos serão “organizados”. Isso envolve a criação/manutenção de tabelas e demais objetos de acordo com a tecnologia do SGBD. Este usuário tem um grande foco em performance, pois quando vai definir a estrutura de organização dos dados é crucial que ela seja performática. • Programador – É a figura que constrói o sistema que irá acessar o banco de dados. É imprescindível que o sistema desenvolvido manipule os dados de forma correta, para evitar a perda ou falta de confiança neles. • Usuário comum – Utiliza o sistema que foi desenvolvido pelo programador para acessar o banco de dados. Normalmente desconhece as estruturas onde os dados estão armazenados. Consegue manipular somente o que o sistema permite. Ele é a sua fronteira com o SGBD. 5 PRINCIPAIS BANCOS DE DADOS DISPONÍVEIS NO MERCADO Atualmente existem vários fornecedores de bancos de dados. Isso significa que é necessária uma boa análise antes de decidir qual banco utilizar. Cada um tem as suas características e peculiaridades. Alguns são apropriados para projetos menores, outros não. O custo para implantação também deve ser levado em conta. A seguir, vamos ver uma breve descrição dos principais SGBDs disponíveis no mercado. 5.1 MYSQL É um dos SGBDs mais populares do mundo. Inicialmente foi desenvolvido para aplicações de pequeno porte, porém já superou há muito tempo essa barreira. TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS 17 5.2 ORACLE Hoje, é um dos bancos de dados mais robustos e confiáveis do mundo corporativo. Nasceu da ideia de um homem que percebeu que o mercado precisava desse tipo de tecnologia. O MySQL teve origem quando os desenvolvedores David Axmark, Allan Larsson e Michael “Monty” Widenius, na década de 90, precisaram de uma interface SQL compatível com as rotinas ISAM que utilizavam em suas aplicações e tabelas. Em um primeiro momento, tentaram utilizar a API mSQL, contudo a API não era tão rápida quanto eles precisavam, pois utilizavam rotinas de baixo nível (mais rápidas que rotinas normais). Utilizando a API do mSQL, escreveram em C e C++ uma nova API que deu origem ao MySQL. Com o ótimo resultado gerado por essa nova API, o MySQL começou a ser difundido e seus criadores fundaram a empresa responsável por sua manutenção, que é a MySQL AB. (MILANI, 2007, p. 23). Como foi citado acima, a empresa que mantinha inicialmente o Mysql era a Mysql AB. Ela foi comprada pela Sun em janeiro de 2008. Em abril de 2009, a Oracle, que é uma das gigantes do mundo de bancos de dados comprou a Sun, sendo hoje responsável pela manutençãodo MySql. Atualmente, o Mysql se encontra na versão 5.6 e é muito utilizado em aplicações WEB. Roda em várias plataformas como Linux e Windows. É livre para uso não comercial. O site oficial é <http://www.mysql.com>. Há quase trinta anos, Larry Ellison vislumbrou uma oportunidade que outras companhias não haviam percebido, quando encontrou uma descrição de um protótipo funcional de um banco de dados relacional e descobriu que nenhuma empresa tinha se empenhado em comercializar essa tecnologia. Ellison e os cofundadores da Oracle, Bob Miner e Ed Oates, perceberam que havia um tremendo potencial de negócios no modelo de banco de dados relacional, mas não se deram conta de que mudariam a face da computação empresarial para sempre. Hoje a Oracle (Nasdaq: ORCL) continua à frente de seu tempo. A tecnologia Oracle pode ser encontrada em quase todos os setores do mundo inteiro e nos escritórios de 98 das empresas citadas na lista “Fortune 100”. A Oracle é a primeira empresa de software a desenvolver e empregar software empresarial totalmente habilitado para Internet em toda a sua linha de produtos: banco de dados, aplicativos empresariais e ferramentas para desenvolvimento de aplicativos e suporte a decisões. A Oracle é o principal fornecedor de software para gerenciamento de informações e a segunda maior empresa de software independente do mundo. FONTE: Disponível em: <http://www.oracle.com/br/corporate/press/story-346137-ptb.html>. Acesso em: 16 jan. 2013. UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 18 5.3 POSTGRESQL O Oracle possui uma vasta lista de recursos. Tem a linguagem PL/SQL para desenvolvimento de funcionalidades internas. Integra-se com outras linguagens de programação como JAVA, C, C++ etc. Roda em várias plataformas. O site oficial é <http://www.oracle.com>. É conhecido pela sua robustez e confiabilidade e tem uma característica bem interessante: é um SGBD de código fonte aberto. O texto a seguir descreve esse banco de dados com uma maior riqueza de detalhes. Leia a seguir um texto retirado do site da comunidade brasileira de PostgreSql. UNI O QUE É O POSTGRESQL? Para alguns pode parecer um assunto batido, mas esse é um artigo introdutório, voltado principalmente àqueles que conhecem pouco ou nada sobre o PostgreSQL. O PostgreSQL é um SGBD (Sistema Gerenciador de Banco de Dados) objeto-relacional de código aberto, com mais de 15 anos de desenvolvimento. É extremamente robusto e confiável, além de ser extremamente flexível e rico em recursos. Ele é considerado objeto-relacional por implementar, além das características de um SGBD relacional, algumas características de orientação a objetos, como herança e tipos personalizados. A equipe de desenvolvimento do PostgreSQL sempre teve uma grande preocupação em manter a compatibilidade com os padrões SQL92/SQL99. HISTÓRICO DO POSTGRESQL O PostgreSQL (conhecido anteriormente como Postgres95) derivou do projeto POSTGRES da universidade de Berkley, cuja última versão foi a 4.2. O POSTGRES foi originalmente patrocinado pelo DARPA (Agência de Projetos de Pesquisa Avançada para Defesa), ARO (Departamento de Pesquisa Militar), NSF (Fundação Cinetífica Nacional) e ESL Inc. A implementação do projeto POSTGRES iniciou em 1986, já em 87 tornou-se TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS 19 operacional. A primeira versão lançada para o público externo foi em 1989. Devido a uma crítica feita ao seu sistema de regras, o POSTGRES teve essa parte reimplementada e lançada em uma segunda versão em 1990. Em 1991 foi lançada a versão 3, com melhorias no executor de consultas e algumas partes do código foram reescritas. As versões subsequentes, até o Postgres95, foram focadas em confiabilidade e portabilidade. O POSTGRES foi utilizado para diversos sistemas de pesquisa e de produção, uma aplicação de análise financeira, um banco com rotas de asteroides, e diversos sistemas de informações geográficas. O código do POSTGRES foi aproveitado em um produto comercializado pela Illustra Information Technologies (posteriormente incorporada à Informix, que agora pertence à IBM). A versão seguinte, o Postgres95, teve mudanças radicais em relação ao projeto original. O seu código foi totalmente revisado, o tamanho das fontes foi reduzido em 25%, e a linguagem SQL foi implementada como interface padrão. A performance foi consideravelmente melhorada e vários recursos foram adicionados. Em 1996. o nome Postgres95 tornou-se inadequado, o projeto foi rebatizado “PostgreSQL”, para enfatizar a relação do POSTGRES original com a linguagem SQL. A numeração da versão voltou a seguir o padrão anterior ao Postgres95 (considerada a 5.0), e a primeira versão do PostgreSQL foi a 6.0. Enquanto a ênfase do Postgres95 tinha sido a correção de falhas e otimização do código, o desenvolvimento das primeiras versões do PostgreSQL foi orientada à melhoria de recursos e implementação de novos recursos, sempre seguindo os padrões de SQL anteriormente estabelecidos. O POSTGRESQL HOJE A equipe do projeto cresceu e se espalhou pelo mundo. O Grupo Global de Desenvolvimento do PostgreSQL tem membros nos Estados Unidos, Canadá, Japão, Rússia, vários países da Europa e alguns outros. Esse grupo é formado essencialmente por empresas especializadas em PostgreSQL, empresas usuárias do sistema, além dos pesquisadores acadêmicos e programadores independentes. Além da programação, essa comunidade é responsável pela documentação, tradução, criação de ferramentas de modelagem e gerenciamento, e elaboração de extensões e acessórios. Pela riqueza de recursos e conformidade com os padrões, ele é um SGBD muito adequado para o estudo universitário do modelo relacional, além de ser uma ótima opção para empresas implementarem soluções de alta confiabilidade sem altos custos de licenciamento. É um programa distribuído sob a licença BSD, o que torna o seu código fonte disponível e o seu uso livre para aplicações comerciais ou não. O PostgreSQL foi implementado em diversos ambientes de produção no mundo, entre eles, um bom exemplo do seu potencial é o banco de dados que armazena os registros de domínio .org, mantido pela empresa Afilias. UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 20 Alguns recursos presentes na versão mais recente: Subconsultas. Controle de concorrência multiversão (MVCC). Integridade Referencial. Funções armazenadas (Stored Procedures), que podem ser escritas em várias linguagens de programação (PL/PgSQL, Perl, Python, Ruby, e outras). Gatilhos (Triggers). Tipos definidos pelo usuário. Esquemas (Schemas). Conexões SSL. Áreas de armazenamento (Tablespaces). Pontos de salvamento (Savepoints). Commit em duas fases. Arquivamento e restauração do banco a partir de logs de transação. Diversas ferramentas de replicação. Extensões para dados geoespaciais, indexação de textos, xml e várias outras. COMO COMEÇAR? No site nacional do projeto podem ser encontrados tutoriais de instalação nas plataformas Linux e Windows, além do manual de referência traduzido. No site oficial, você encontra toda a documentação. Para baixar o código fonte do PostgreSQL, você pode utilizar o mirror brasileiro. Depois de seguir as instruções de instalação do tutorial, você pode escolher uma boa ferramenta gráfica de gerenciamento. Alguns links úteis: Site Oficial (<http://www.postgresql.org>) Site de marketing (<http://advocacy.postgresql.org/?lang=br>) Site nacional (<http://www.postgresql.org.br>) Lista de discussão nacional (<http://br.groups.yahoo.com/group/ postgresql-br>) FONTE: Disponível em: <http://wiki.postgresql.org.br/Introdu%C3%A7%C3%A3o_e_hist%C3%B3rico>. Acesso em: 16 jan. 2013. 5.4 SQL SERVER É o banco de dados da empresa Microsoft. É considerado um dos principais concorrentes da Oracle. O texto a seguir descreve o SQL Server. TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS 21 TODA A HISTÓRIA DO SISTEMA SQL DA MICROSOFT Você sabe o que é o SQL Server? Se você tem um blog ou um site que utiliza banco de dados já deveter, pelo menos, ouvido falar nele. O MS SQL Server é um sistema de gerenciamento de banco de dados relacional desenvolvido pela Microsoft. A partir da versão 2008 a plataforma de dados com alta confiabilidade e que permite a redução de custos com eficiência e robustez. Tudo começou em março de 1987 quando a Microsoft comprou os direitos do DataServer da Sysbase para o sistema operacional OS/2. O objetivo era provocar o interesse e chamar a atenção da comunidade do dBase. Por isso a Microsoft traçou um acordo com a Ashton-Tate como forma de endossar esse novo processo. Assim, a primeira versão do SQL Server se chamava Ashton- Tate/Microsoft SQL Server e chegou ao mercado na metade final de 1988. Em maio do ano seguinte a versão 1.0 para OS/2 era lançada com parca participação da Microsoft (limitando-se apenas a poucas ferramentas, testes e o projeto visando tornar o aplicativo mais simples de ser instalado). Na segunda metade de 1990 a união da Microsoft com a Ashton-Tate se encerrou e a versão 1.1 do SQL Server passou a oferecer suporte para o Windows 3.0 (que era uma novidade na época). Apesar disso, a base do SQL era produzida pela Sysbase e a Microsoft sequer tinha acesso ao código-fonte. Qualquer defeito tinha que ser relatado para a Sysbase e corrigido apenas por ela. Só em 1991 a Microsoft passou a poder acessar a fonte do SQL apenas para leitura. Com o lançamento da versão 4.2 para OS/2 no fim de 1991 a Microsoft já desenvolvia o banco de dados em conjunto com a Sysbase, o que só mudou em agosto de 1993 quando a Microsoft finalmente conseguiu a totalidade da criação do SQL Server e lançou a versão para o Windows NT 3.1. Essa nova versão já era em 32-bit. Assim, pouco tempo depois, a parceria entre as duas empresas acabava. Podemos declarar como principais vantagens do SQL Server o fornecimento de uma plataforma de grande confiabilidade e robustez capaz de suportar aplicações de missão crítica de grande exigência. A possibilidade de encriptação dos dados contidos em todo o banco de dados ou nos arquivos de log. Isso protege os dados das solicitações não autorizadas sem a necessidade de aplicativos complementares. Além disso, ele permite o espelhamento do banco de dados a recuperação automática da página de dados e a compressão do fluxo de logs. Um aumento na produtividade com a rapidez e simplicidade de instalação, manutenção e uso. Também possui uma enorme versatilidade na aceitação de informações e no oferecimento de respostas previsíveis as demandas dos usuários. UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 22 As aplicações vão desde criar aplicações que se utilizem de um banco de dados de forma rápida e simples até aplicações de alta complexidade com a mesma facilidade. Da mesma forma o SQL Server garante que seus dados podem ser acessados de qualquer lugar mesmo estando baseados a distância e serem acessados por uma enorme variedade de aplicativos diferentes o que o torna muito prático e de fácil uso para hospedagem de sites na internet. FONTE: Disponível em: <http://www.artigonal.com/advertising-artigos/toda-a-historia-do-sistema- sql-da-microsoft-1845126.html>. Acesso em: 16 jan. 2013. Caro(a) acadêmico(a)! A Leitura Complementar a seguir traz uma visão clara de questões relacionadas à utilização de um sistema de banco de dados. A seguir serão apresentados alguns fatores que devem ser analisados quando trabalhamos com esse tipo de tecnologia. UNI GERENCIAMENTO DO SISTEMA DE BANCO DE DADOS: UMA MUDANÇA DE FOCO A introdução de um sistema de banco de dados em um ambiente de sistema de arquivos fornece um modelo no qual podem ser aplicados procedimentos e padrões rígidos. Como consequência, o papel do componente humano muda da ênfase em programação (no sistema de arquivos) para focar nos aspectos mais amplos de gerenciamento dos recursos de dados da organização e na administração do próprio software do banco de dados complexo. O sistema de banco de dados torna possível atingir usos muito mais sofisticados dos recursos de dados contanto que seja projetado para aproveitar esse poder disponível. Os tipos de estruturas de dados criados no banco de dados e a extensão dos relacionamentos entre elas desempenham um papel poderoso na determinação da eficiência do sistema. Embora o sistema de banco de dados apresente vantagens consideráveis em relação à abordagem de gerenciamento anteriores, também trazem desvantagens significativas. Por exemplo: LEITURA COMPLEMENTAR TÓPICO 1 | INTRODUÇÃO A BANCO DE DADOS 23 Aumento de custos: os sistemas de banco de dados exigem hardware e software sofisticado e pessoal altamente treinado. O custo de manutenção do hardware, software e pessoal necessários para operar e gerenciar um sistema de banco de dados pode ser substancial. Os custos de treinamento, licenciamento e atendimento as regulamentações costumam ser negligenciados quando da implementação desses sistemas. Complexidade do gerenciamento: os sistemas de banco de dados apresentam interfaces com muitas tecnologias diferentes e têm um impacto significativo sobre os recursos e a cultura de uma empresa. As alterações introduzidas pela adoção do sistema de banco de dados devem ser adequadamente gerenciadas para garantir que ajudem no progresso dos objetivos da empresa. Levando em conta o fato que os bancos de dados mantêm dados fundamentais da empresa que são acessados a partir de várias fontes, as questões de segurança deve ser uma constante preocupação. Manutenção de banco de dados atualizado: para maximizar a eficiência do sistema de banco de dados, deve-se manter o sistema atualizado. Portanto, é necessário fazer atualizações frequentes e aplicar os últimos pacotes e medidas de segurança a todos os componentes. Como a tecnologia do banco de dados avança rapidamente, os custos com treinamento de pessoal tendem a ser significativos. Dependência do fornecedor: Em virtude do alto investimento em tecnologia e treinamento de pessoal, as empresas podem hesitar em trocar os fornecedores de banco de dados. Por essa razão, é menos provável que estes ofereçam vantagens de preço aos clientes existentes, que ficarão restritos quanto a suas escolhas de componentes de sistema de banco de dados. Ciclos frequentes de atualização/substituição: os fornecedores de SGBDs atualizam seus produtos adicionando novas funcionalidades. Em geral, esses recursos são integrados a novas versões de atualização de software. Algumas dessas versões exigem atualizações de hardware. Não são apenas as atualizações que geram custo, mas também o treinamento dos usuários e administradores para que utilizem e gerenciam adequadamente os novos recursos. FONTE: Rob e Coronel (2011, p. 18) 24 RESUMO DO TÓPICO 1 Neste tópico, você viu que: • Existe uma grande diferença entre dado, informação e conhecimento. • Bancos de dados relacionais predominam no mundo do desenvolvimento de software. • SGBD ou Sistema Gerenciador de Bancos de Dados foi uma evolução do paradigma de armazenamento em arquivos. • Algumas dicas são importantes para ter sucesso na escolha do banco de dados a ser utilizado. 25 1 De acordo com o conteúdo estudado, defina o conceito de dado, informação e conhecimento. 2 O que é um SGBD ou Sistema Gerenciador de Bancos de Dados e qual é a sua melhoria em relação ao armazenamento de dados em arquivos? 3 Dê quatro exemplos de bancos de dados relacionais disponíveis no mercado. 4 Cite as principais funções de um SGBD. 5 O que faz uma pessoa que tem o cargo de Administrador do Banco de Dados (DBA – Database Administrator)? AUTOATIVIDADE 26 27 TÓPICO 2 EVOLUÇÃO DOS BANCOS DE DADOS UNIDADE 1 1 INTRODUÇÃO “O descontentamento é o primeiro passo na evolução de um homem ou de uma nação”. (Oscar Wilde) Relembrando um pouco do Tópico 1, vimos que inicialmente os bancos de dados eram simples sistemas de arquivos. Tudo o que era desenvolvido tinha uma finalidade específica, não existindo muita integração entre sistemasdistintos. Isso gerou vários problemas, como redundância de dados e concorrência de acessos. Outro ponto negativo nesse tipo de estrutura é que toda a organização dos dados ficava armazenada no programa que fazia a sua utilização. Questões relacionadas à alteração dessa estrutura ficavam relacionadas a inconsistências e trabalho árduo. Também foi apresentado o conceito de SGBD, que é a evolução do modelo de sistemas de arquivos. Os principais SGBDs da atualidade fizeram parte desta apresentação e todos são considerados SGBDs relacionais ou objeto relacional. Esse tipo de tecnologia é o que predomina hoje no mercado quando tratamos de aplicações tradicionais. Para entendermos o futuro é interessante conhecermos o passado. Por isso esse tópico trata da evolução dos bancos de dados, dividindo-se em três grupos: histórico da evolução, arquitetura e níveis de abstração dos bancos de dados. O primeiro trata as gerações dos bancos de dados (três gerações), o segundo as arquiteturas (centralizadas, distribuídas, cliente-servidor etc.) e o terceiro a abstração (três níveis). Bons estudos! UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 28 2 HISTÓRICO DA EVOLUÇÃO DOS BANCOS DE DADOS 2.1 PRIMEIRA GERAÇÃO A evolução ou o histórico da evolução dos bancos de dados estão divididos em três gerações: a primeira trata dos bancos hierárquicos e em rede, a segunda dos relacionais e a terceira dos bancos orientados a objetos e objeto relacional. Vamos estudar cada geração para entender melhor todo o processo de evolução. Foi na década de 60 que “nasceram” os primeiros bancos de dados. Existiam basicamente duas formas de organização: o modelo hierárquico e o em rede. Ambos trabalhavam com o conceito de registro, que segundo Korth e Silberschatz (1995), é uma coleção de campos (atributos) os quais contêm apenas um valor de dado. Também existe a ideia de ligação entre registros. Korth e Silberschatz (1995) definem que uma ligação é uma associação entre exatamente dois registros. Um banco de dados hierárquico consiste basicamente em um conjunto de registros conectados por meio de ligações. Toda a estrutura está organizada em um modelo de árvore ou também conhecido como modelo hierárquico. Cada registro filho pode ter apenas um registro pai. Um registro pai pode ter vários registros filho. Exemplificamos isso na figura a seguir. FIGURA 13 – RELAÇÃO ENTRE REGISTRO PAI E REGISTROS FILHOS FONTE: Os autores Para simplificar o conceito de um banco de dados hierárquico observe a figura a seguir. Nela apresentamos uma estrutura típica de clientes de um banco com suas contas e saldo. Esse exemplo é muito utilizado em livros que tratam desse assunto. PAI FILHO FILHO FILHO TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS 29 FIGURA 14 – ESTRUTURA DE UM BANCO DE DADOS HIERÁRQUICO FONTE: Os autores A figura a seguir demostra a estrutura dos dados que estão na figura anterior. FONTE: Os autores FIGURA 15 – ESTRUTURA DE DADOS DA FIGURA 14 Os dados da conta e saldo podem ser acessados somente a partir do nó raiz (registro falso), seguindo os registros da esquerda para a direita. É necessário navegar por toda a estrutura para chegar a esses valores. Um dos problemas se refere à duplicidade de dados. Por exemplo, se uma conta pertencesse a mais de um cliente, os dados da conta provavelmente precisariam ser duplicados. Isso, segundo Korth e Silberschatz (1995) gera dois inconvenientes: a inconsistência dos dados quando acontecerem atualizações e a perda de espaço em disco. Marcando presença ainda na primeira geração estão os bancos de dados que seguem o modelo em rede. São considerados como sendo uma evolução do modelo hierárquico. Embora o nome sugira ligação com redes de computadores (um computador “ligado” ao outro), o conceito não tem relação com isso. Esse modelo surgiu com o benefício de que o registro possa fazer parte de várias associações, o que não era possível no hierárquico (a não ser que o registro fosse duplicado). Também eliminou a hierarquia quando ao acesso dos dados. A figura a seguir mostra uma estrutura de dados no modelo rede. RAIZ RAIZ Marcos Silva NOME CPF Nº CONTA Nº CONTASALDO SALDO CPFNOME João Trindade469.206.617-21 227.428.671-04 R$ 150,00R$ 700,0070948 12496 UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 30 FIGURA 16 – ESTRUTURA DE DADOS NO MODELO REDE FONTE: Os autores Na parte esquerda da figura 16 temos o nome do cliente e seu CPF. No lado direito a conta e o saldo. Note que agora é possível associar uma conta a dois clientes sem ter que duplicá-la (a conta 70948 pertence ao Marcos e ao João). Não temos a presença de um registro falso (raiz), sendo que agora se podem acessar os dados de qualquer parte do grafo. Apesar de uma aparente melhoria em relação aos bancos de dados hierárquicos, o modelo em redes apresenta alguns problemas. É complicado para o programador trabalhar com esse modelo, pois ele tem que pensar em ligações de registros e como percorrê-las para buscar os dados que necessita. Sendo assim, podemos concluir que a primeira geração de bancos de dados deixou pontos a serem melhorados. Entretanto, na época, existiam sistemas que eram referência para os modelos hierárquicos e de redes. Como exemplo, Kort e Silberschatz (1995) citam o IMS – sistema de gerenciamento de informações da IBM (hierárquico) e o IDMS (rede). 2.2 SEGUNDA GERAÇÃO No início da década de 70, surge um novo conceito em banco de dados: o modelo de dados relacional. Esse modelo é largamente utilizado até os dias de hoje por aplicações de processamento de dados comerciais mais padronizadas (ERPs, CMDs etc.). Date (2003) nos diz que a introdução do modelo relacional em 1969-1970 foi sem dúvida o evento mais importante em toda a história da área de bancos de dados. Rob e Coronel (2011) fazem um breve relato sobre este modelo. O modelo relacional foi apresentado em 1970 por E. F. Codd (da IBM) em seu famoso artigo “A Relational Model Data for Large Shared Databanks” (Um modelo relacional de dados para grandes bancos de dados compartilhados) (Comunicações da ACM, junho de 1970, p. 377- 387). O modelo relacional representava uma importante ruptura tanto para usuários como para projetistas. Para utilizar uma analogia, esse modelo produziu um banco de dados de “câmbio automático” para substituir os de “câmbio manual” que o precederam. Sua simplicidade conceitual preparou o terreno para a verdadeira revolução dos bancos de dados. (ROB; CORONEL, 2011, p. 40). Marcos Silva João Trindade 469.206.617-21 227.428.671-04 R$ 150,00 R$ 700,0070948 12496 TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS 31 O modelo relacional trabalha na sua forma mais básica com tabelas. Podem existir relações entre as mesmas para buscas de registros. A definição das tabelas pode envolver restrições para garantir dados confiáveis. Este modelo elimina a complexidade de navegação ou busca de dados presentes nos hierárquicos e nos de rede. A figura a seguir traz um exemplo de dados organizados sob o modelo relacional. Neste exemplo são listados os clientes de um banco com seus respectivos gerentes de conta. FIGURA 17 – ORGANIZAÇÃO DE DADOS NO MODELO RELACIONAL FONTE: Os autores Note que na figura anterior existe um relacionamento entre as tabelas cliente e gerente. Para tal, é utilizada a coluna CD_GERENTE. Neste caso, significa que um cliente pode ter somente um gerente e que um gerente pode ter vários clientes. Podem ser adicionadas restrições em ambas as tabelas para que, por exemplo, não se permita o cadastro de mais de um gerente ou cliente com o mesmo CPF. Quando trabalhamos com um modelo relacional é comum a utilização de um diagrama relacional ou MER – Modelo Entidade Relacionamento. A figura a seguir traz o MER da estrutura apresentada na figura anterior. UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 32 FIGURA 18 – MODELO ENTIDADE RELACIONAMENTO FIGURA 17 FONTE: Os autores A presença de uma chave ao lado das colunas CD_CLIENTE E CD_ GERENTE indicaque os campos são identificadores únicos de registros, ou seja, o dado que está nessas colunas não poderá se repetir na tabela. Diz-se que esses campos são chaves primárias. Boas partes dos conceitos apresentados aqui serão revistos e aprofundados na Unidade 2, que vai tratar exclusivamente do modelo de dados relacional. 2.3 TERCEIRA GERAÇÃO A terceira geração é datada em meados do ano de 1980 e vai até os dias atuais. Como em todas as outras, essa geração também têm o seu destaque tecnológico. O nome deste novo conceito é banco de dados orientado a objetos. Para detalhar melhor qual foi a origem deste tipo de banco de dados, Silberschatz, Korth e Sudarshan (2006) nos apresentam um breve relato. As aplicações tradicionais de bancos de dados consistem em tarefas de processamento de dados, como transações bancárias e gerenciamento de folha de pagamento, com tipos de dados relativamente simples, que são adequados ao modelo de dados relacional. Uma vez que os sistemas de bancos de dados foram aplicados a uma faixa mais ampla de aplicações, como projeto auxiliado por computador e sistemas de informações geográficas, as limitações compostas pelo modelo relacional se apresentaram como um obstáculo. A solução era a introdução dos bancos de dados baseados em objeto, que permitem lidar com tipos de dados complexos. (SILBERSCHATZ; KORTH; SUDARSHAN, 2006 p. 241). Esse novo tipo de estruturação permite uma adaptação menos dolorosa, porque vários programadores já estão familiarizados em linguagens orientadas a objeto, o que em termos de conceito são iguais a este tipo de banco. Tudo “gira” em torno de objetos, que possuem atributos e propriedades com mais uma gama de recursos para atingir seus objetivos. TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS 33 Existe também uma variação do modelo orientado a objetos “puro”. Ele se chama modelo de dados objeto-relacional, que é um meio termo entre bancos relacionais e bancos orientados a objetos. Elmasri e Navathe (2011) explicam essa nova ideia. Vendedores de SGBD relacional (SGBDR) também reconheceram a necessidade de incorporar recursos que foram propostos para bancos de dados de objeto, e versões mais novas de sistemas relacionais incorporaram muitos desses recursos. Isso levou a sistemas de bancos de dados que são caracterizados como objeto relacional ou SGBDORs. A versão mais recente do padrão SQL (2008) para SGBDRs inclui muitos desses recursos, que eram conhecidos originalmente como SQL/Object e agora têm sido incorporados na especificação SQL principal, conhecida como SQL/Foundation. (ELMASRI; NAVATHE, 2011, p. 236). Entretanto, os bancos de dados orientados a objetos ainda não têm um uso massivo em virtude da grande popularidade de sistemas relacionais e objeto relacional. Fernando Amaral faz algumas análises evidenciando essa situação. Leia a seguir um texto que faz uma análise sobre o motivo pelo qual bancos de dados orientados a objetos não são utilizados em larga escala. IMPORTANT E POR QUE NÃO ESTAMOS UTILIZANDO BANCO DE DADOS ORIENTADOS A OBJETOS? A orientação a objetos, mesmo que não da forma purista encontrada no mundo acadêmico, é uma realidade irreversível no mundo do desenvolvimento de software. Mesmo o próprio Visual Basic, uma das linguagens mais utilizadas do mundo e que sempre foi rotulada como linguagem “para fracos”, sem tipagem e sem qualquer recurso de OO, ganhou, com o lançamento da plataforma. NET, uma versão totalmente reformulada e OO, onde restou pouca semelhança com o VB clássico. Agora, e quanto ao universo dos Bancos de Dados? A esmagadora maioria dos gerenciadores de banco de dados existentes hoje no mercado são relacionais, e não há qualquer evidência de uma tendência em contrário, ou seja, parece que no futuro vamos continuar utilizando banco de dados relacionais. Porque o mercado de banco de dados continua predominantemente relacional, enquanto utilizamos cada vez mais linguagens de programação OO? UNIDADE 1 | FUNDAMENTOS DE BANCO DE DADOS 34 O QUE ACONTECEU? Diante desta indagação, resolvi investigar os motivos, e descobri que são muitos. Inicialmente um bom OODBMS é muito, muito mais caro que um produto relacional “Top” de linha, além disso: - O modelo relacional é mais simples - O modelo OO não tem a escabilidade de um banco de dados relacional - O modelo OO possui dependência de linguagem: um banco de dados OO deve ser acessado através de uma API específica, normalmente através de uma linguagem específica. Por outro lado, nos OODBMS a linguagem e o banco de dados utilizam os mesmo tipos de dados. - Consultar um banco de dados relacional, devido a sua natureza, é mais simples. Em um banco de dados OO não é possível fazer joins ou consultas “Ad-Hoc”. Outro fato que não deve ser esquecido é que o modelo relacional é mais antigo, possui uma padronização maior e um maior número de ferramentas. Os bancos de dados OO se mostraram superiores em aplicações específicas, como, por exemplo, CAD, multimídia etc. CONSEQUÊNCIAS: IMPEDANCE MISMATCH Então tudo indica que os bancos de dados relacionais vão continuar predominantes por muito tempo, e que, cada vez as linguagens de programação serão OO (repetindo: mesmo que não da forma purista encontrada no mundo acadêmico). Mas como trabalhar corretamente com uma linguagem OO e um banco de dados relacional? Na OO temos objetos, que representam entidades do mundo real e atributos, que são suas características. No modelo relacional temos Entidades (ou tabelas), com atributos (campos). Na OO, o relacionamento entre objetos é através de referências, no relacional, através de chaves primárias e estrangeiras. A implementação de uma classe terá que contornar todos os problemas desta diferença entre universos tão heterogêneos. Para uma simples classe poderá parecer fácil, mas para um sistema complexo com dezenas ou centenas de classes e relacionamentos, pode virar um pesadelo. Este conflito objeto X relacional é conhecido com “The Object-Relational Impedance Mismatch”, ou simplesmente Impedance Mismatch, algo como um problema de adaptação, numa tradução livre. Estudos afirmam que a Impedance Mismatch podem consumir até 25 % do tempo de desenvolvimento de um software e ainda prejudicar consideravelmente seu desempenho. TÓPICO 2 | EVOLUÇÃO DOS BANCOS DE DADOS 35 O obra Agile Database Techniques: Effective Strategies for the Agile Software Developer, (Scott W. Ambler, ISBN:0471202835), dedica o capítulo 7 de título The Object-Relational Impedance Mismatch a debater esse assunto, e é uma leitura altamente recomendada. FONTE: Disponível em: <http://www.fernandoamaral.com.br/Default.aspx?Artigo=17>. Acesso em: 22 jan. 2013. Com o passar do tempo é possível que esta situação mude. Existem grandes iniciativas para que isso aconteça. O cache da empresa Intersystems é um exemplo disto. Outra tendência é que o uso desta tecnologia se limite apenas a situações onde existem dados complexos, como informações geográficas, aplicações que trabalham com imagens, entre outras. 3 ARQUITETURA DE BANCO DE DADOS 3.1 ARQUITETURA CENTRALIZADA A arquitetura de um banco de dados está diretamente ligada a questões de hardware e sistema computacional existentes na estrutura em questão. O poder de processamento, a estrutura de rede, a memória e diversos outros componentes, são características que fazem parte da análise de toda arquitetura para bancos de dados. Sendo assim, vamos nos concentrar em quatro tipos de arquitetura: centralizada, cliente-servidor, paralela e distribuída. Cada um destes tipos teve grande importância na história da evolução dos bancos de dados. Os primeiros bancos de dados estavam implementados nesse tipo de arquitetura. Na década de 1970, eles tinha a implementação centralizada, normalmente em mainframes. Para os usuários acessarem os dados utilizavam terminais sem capacidade de processamento. Esses computadores se conectavam em mainframes (onde era feito todo o processamento) e ali
Compartilhar