Vous êtes sur la page 1sur 20

9

CONCEITOS DE BANCO DE DADOS

Ol, Neste captulo voc ter um primeiro contato com conceitos fundamentais da tecnologia de Banco de Dados. So conceitos importantes que serviro de base para o restante do curso. Bom estudo! Prof . Vanderson

1.1 Definio
Desde antes do surgimento da primeira civilizao, a humanidade dedicava-se produo de signos. Um signo ou smbolo corresponde a qualquer coisa que represente algo, de alguma forma, para algum. Da mesma forma que um mapa representa um dado terreno, um braso pode representar o time de futebol para o qual se torce. Uma cano pode faz-lo lembrar uma fase especfica de sua vida ou uma paixo. Tudo isso e muitos outros so signos. Nesse sentido, o que para voc nada significa pode representar algo para outros. Portanto, todo signo subjetivo e pode ser de difcil interpretao. At hoje, pesquisadores debruam-se sobre pinturas feitas em cavernas h pelo menos 15.000 anos e debatem sobre seus significados. Algum as pintou para representarem algo, mas hoje, 150 sculos depois, no sabemos precisar qual o seu significado na poca. Elas parecem representar animais ou cenas de caadas na pr-histria. Porm, escapa-nos sua motivao. Faziam parte de algum ritual religioso, o registro de uma importante atividade social ou apenas a expresso da subjetividade de seu pintor? A chamada oralidade primria precede a inveno da escrita e se caracteriza pelo uso da palavra falada como a nica forma de gerir a memria social das comunidades. A cultura narrativa valorizava as parbolas, fbulas e mitos como veculos naturais do conhecimento que se pretendia preservar de uma gerao para outra. Histrias e imagens eram associadas a algum fato que se buscava memorizar.
Linguagem de Programao

10

Captulo 1

O mito codifica, sob forma de narrativa, algumas das representaes que parecem essenciais aos membros de uma sociedade. Dado o funcionamento da memria humana, e na ausncia de tcnicas de fixao da informao como a escrita (...), as representaes que tm mais chances de sobreviver em um ambiente composto quase que unicamente por memrias humanas so aquelas que esto codificadas em narrativas dramticas, agradveis de serem ouvidas, trazendo uma forte carga emotiva e acompanhadas de msicas e rituais diversos. (LVY, 1993, p. 82). Ao desenvolverem a escrita, as primeiras civilizaes melhoraram a utilidade dos smbolos. Afinal, o surgimento do Estado trouxe consigo a inevitvel cobrana de impostos. Com a escrita, a contabilidade veio a possuir meios objetivos para registrar tributos devidos e valores pagos. Desde ento, o monarca passou a contar com registros precisos de seu tesouro e dos sditos devedores. Com o capitalismo e o consequente progresso tcnico, a administrao das organizaes e do Estado tornou-se mais complexa. As empresas, por exemplo, demandavam maior controle da atividade produtiva, envolvendo o gerenciamento de estoques, recursos humanos e financeiros. O grande volume de informaes registradas em papel dificultava consideravelmente seu gerenciamento e atualizao. Ento, com os primeiros computadores migraram-se essas informaes para dispositivos eletrnicos. De incio, essa migrao para meios eletrnicos de armazenamento foi implementada de maneira pouco organizada, fazendo uso de sistemas de arquivos tradicionais. Cada aplicao do sistema de informaes era tratada isoladamente pela equipe de desenvolvedores. Em consequncia, cada aplicao tinha seus prprios arquivos e a redundncia de informaes era mais do que normal. Uma aplicao para o controle da frequncia dos funcionrios, por exemplo, tinha seu prprio arquivo com dados dos empregados em atividade. Esse arquivo podia no ser compartilhado com a aplicao de controle das frias desses mesmos empregados. Por isso, dados como nome, nmero de matrcula e departamento de trabalho podiam facilmente estar duplicados nos diferentes arquivos. Com a multiplicao de aplicaes e assim de arquivos com redundncia de dados, o risco de inconsistncias de dados entre eles crescia exponencialmente. Considere, por exemplo, uma funcionria que se casou e mudou de nome. Uma eventual falha humana podia levar a uma situao em que seu nome fosse alterado apenas em alguns destes arquivos, mas no em todos eles.

Tcnico em Informtica

Conceitos de Banco de Dados

11

Os primeiros bancos de dados surgiram no mercado como uma resposta a problemas como esse. Um sistema de gerenciamento de banco de dados (SGBD) consiste em um conjunto de arquivos estruturados e de programas que respondem pelo acesso e manipulao de tais arquivos. Diferente dos sistemas de arquivos tradicionais, o banco de dados (BD) favorece o inter-relacionamento dos arquivos, portanto, podem ser definidos como uma coleo de dados inter-relacionados e um conjunto de programas para acess-los (KORTH, SILBERSCHATZ e SUDARSHAN, 2006, p. 1).

Um banco de dados (BD) um conjunto de dados integrados reunidos com o intuito de suportar o funcionamento de sistemas de informao. Um sistema gerenciador de banco de dados (SGBD) um software de carter geral para a manipulao eficiente de grandes colees de informaes estruturadas e armazenadas de uma forma consistente e integrada.

Em termos mais simples, podemos definir um SGBD como um software desenvolvido especificamente para o gerenciamento de grandes volumes de informaes. Seu objetivo principal reside na superao de problemas comuns aos sistemas de arquivos tradicionais. Tais problemas ou desvantagens (KORTH, SILBERSCHATZ e SUDARSHAN, 2006) so: 1. Redundncia e inconsistncia de dados. Equipes diversas de desenvolvedores tendem a criar diferentes aplicaes ou sistemas ao longo do tempo. De maneira anloga, em uma mesma organizao, diferentes linguagens de programao, por exemplo, podem ser usadas no desenvolvimento de diversos sistemas de informaes. Sob tais circunstncias, conforme visto, dados distintos podem ser duplicados em arquivos diferentes. Essa redundncia conduz a altos custos de armazenamento e crescente dificuldade de atualizao das informaes. 2. Dificuldade no acesso aos dados. Os dados espalhados em diferentes arquivos isolados no apresentam as facilidades de acesso e processamento das informaes dos bancos de dados. H pouca flexibilidade em relao a demandas que no tenham sido antecipadas quando o sistema foi projetado. Por exemplo, uma vez que o sistema esteja desenvolvido, caso haja a necessidade de se gerar relatrios com os nomes de todos os empregados do sexo masculino e com idade igual ou superior a 40 anos, a ausncia de uma aplicao esLinguagem de Programao

12

Captulo 1

pecfica para esse objetivo traz srios inconvenientes. Isso porque quando os usurios do sistema solicitarem o desenvolvimento desse novo aplicativo, sua implementao demandar tempo e recursos da parte dos programadores para a gerao de um relatrio muito especfico que raramente ser usado. Outra soluo seria conseguir a impresso de uma listagem com todos os empregados existentes para posterior extrao da informao desejada por meios manuais. Essa soluo tambm no satisfatria, pois o processamento manual sempre est sujeito a erros humanos. 3. Isolamento de Dados. A existncia de dados espalhados em diferentes arquivos, que podem apresentar diferentes formatos, dificulta a criao de novos programas aplicativos para a recuperao desses dados. 4. Anomalias de acesso concorrente. Inmeros sistemas de informao permitem que mltiplos usurios acessem e atualizem dados simultaneamente. A inexistncia de sofisticados mecanismos de gerenciamento de atualizaes concorrentes pode resultar em dados inconsistentes. Considere o exemplo de uma conta bancria conjunta com saldo de R$ 600,00. Caso dois clientes saquem dinheiro dessa mesma conta simultaneamente, o saldo atualizado dessa conta pode ficar inconsistente. Suponha que o cliente A saque R$ 50,00 ao mesmo tempo em que o cliente B saca R$ 100,00. Para que esses saques ocorram, o programa aplicativo l o saldo da conta a partir de um arquivo especfico. Em seguida, o valor do saque diminudo do saldo lido, gerando assim o saldo atualizado. Ento, para o aplicativo de A, temos 600 50 = 550, enquanto para o aplicativo de B, temos 600 100 = 500. Supondo que o aplicativo de A atualize o arquivo antes do aplicativo de B, o saldo da conta registrar R$ 500,00. Afinal, no arquivo, os dados do aplicativo de B (Saldo atualizado = R$ 500,00) sero sobrepostos aos dados do aplicativo de A (Saldo atualizado = R$ 550,00). Repare que essa informao est errada inconsistente pois havia R$ 600,00 e foram retirados R$ 150,00. Portanto, o saldo aps essas retiradas, deveria ser de R$ 450,00 e no R$ 500,00. 5. Problemas de segurana. O acesso a determinados dados deve ser restringido para alguns usurios do sistema de informaes. Os dados relativos ao contracheque dos empregados no podem ser disponibilizados a todos os usurios indistintamente, mas apenas aos usurios responsveis pela folha de pagamento. Entretanto, quando programas aplicativos so instalados de maneira arbitrria, ou seja, sem acompanhamento e controle necessrios, no h como assegurar tais restries de segurana.

Tcnico em Informtica

Conceitos de Banco de Dados

13

6. Problemas de integridade. Geralmente restries de consistncia so impostas aos dados armazenados. Alguns as chamam simplesmente de regras de negcio. O saldo de uma conta bancria, por exemplo, no deve cair abaixo de um valor predeterminado. Restries de consistncia como essa nos sistemas de arquivos tradicionais so incorporadas aos cdigos dos programas aplicativos. Um problema grave ocorre quando a adio de novas restries implica a necessidade de alterao de vrios programas aplicativos. Sempre h o risco de esquecimento de algum desses programas. Em consequncia, o risco de inconsistncias dos dados ameaa a integridade dos mesmos. Essas seis dificuldades listadas levaram ao desenvolvimento dos sistemas gerenciadores de banco de dados (SGBD). Ao longo deste curso veremos algumas das estratgias criativamente engendradas para a soluo dessas desvantagens dos sistemas de arquivos tradicionais.

A tecnologia de banco de dados trouxe maior produtividade para o desenvolvimento de sistemas de informao. Afinal, nos sistemas tradicionais de arquivos, quando implementadas, as caractersticas que somente seriam inauguradas com o surgimento dos bancos de dados eram incorporadas s aplicaes isoladamente. Com isso, a complexidade do desenvolvimento de sistemas de informao aumentava consideravelmente, resultando em: (1) prazos maiores para a concluso dos sistemas de informao e, consequentemente, elevao dos custos envolvidos no desenvolvimento; (2) obrigao de as equipes de desenvolvimento (analistas e programadores) dedicarem muito tempo a programas que no tratavam diretamente do sistema de informao em questo, mas sim de funcionalidades que forneceriam suporte a esse mesmo sistema; (3) ocorrncia de problemas no-previstos, favorecidos pela ausncia de padronizao das funcionalidades de suporte. Os sistemas de bancos de dados atualmente existentes no mercado aliviam as equipes desenvolvedoras dessas preocupaes com aquilo que no seja diretamente relacionado aos seus objetivos, permitindo assim a codificao de sistemas de informao mais robustos e confiveis.

Linguagem de Programao

14

Captulo 1

Atividade 01 Crie outros possveis exemplos (pelo menos 2) para as desvantagens ou problemas trazidos pelo uso de Sistemas Tradicionais de Arquivos.

1.2 Objetivos
Sistemas Gerenciadores de Bancos de Dados (SGBDs) tm o objetivo de prover mecanismos adequados ao armazenamento e ao acesso seguro e eficiente de dados em Sistemas de Informao (SI). Mais detalhadamente, os bancos de dados (BD) tm por objetivo: Fornecer interfaces amigveis e padronizadas para o armazenamento e acesso aos dados. Assim, os usurios so poupados de conhecer detalhes da implementao interna, como organizao dos arquivos e estruturas de armazenamento; Assegurar a privacidade dos dados por meio de medidas de segurana como a atribuio de permisses diferenciadas de acesso aos usurios, a criao de vises particularizadas de tais dados e o fornecimento de senhas de acesso. Assim, evita-se que dados importantes sejam acessados por pessoas no-autorizadas; Administrar acessos concorrentes aos dados, permitindo que diferentes usurios compartilhem simultaneamente a mesma coleo de dados; Prover mecanismos para a recuperao de dados em decorrncia de eventuais paradas e falhas do sistema. As possveis causas de paradas ou falhas podem ocorrer devido a erros de software, interrupo no suprimento de energia, defeito de hardware, queda na comunicao com o servidor, etc. Qualquer falha dessas pode resultar na perda de dados processados pelo SGBD no momento da parada. A perda desses dados pode levar o banco de dados a uma condio de inconsistncia que, se no evitada, torna a tecnologia pouco confivel para sistemas de aplicaes crticas. Portanto, caso um produto seja vendido, seu estoque deve ser atualizado e, se uma falha ocorre aps o registro da venda, mas antes da atualizao do estoque, o banco de dados ficar inconsistente. Afinal, a quantidade em estoque no ser real para o produto em questo.

Tcnico em Informtica

Conceitos de Banco de Dados

15

Atividade 02 Um Sistema Gerenciador de Banco de Dados (SGBD) foi definido como uma coleo de dados inter-relacionados e um conjunto de programas para acess-los (KORTH, SILBERSCHATZ e SUDARSHAN, 2006, p. 1). Entretanto, os Sistemas Tradicionais de Arquivo, que precederam a tecnologia de Banco de Dados, falhavam exatamente nestes dois aspectos: (I) manter dados inter-relacionados e (II) fornecer um conjunto de programas voltados manuteno desses mesmos dados. [A] Comente as vantagens que a existncia de dados inter-relacionados traz aos sistemas de informao. [B] Uma das principais funcionalidades de um banco de dados a chamada restrio de consistncias. Explique os riscos que a ausncia dessa funcionalidade trazia aos Sistemas Tradicionais de Arquivos.

1.3 Usurios de banco de dados


Basicamente so quatro os tipos de usurios de sistemas de bancos de dados: Usurios leigos: So profissionais de outras reas cujos conhecimentos de informtica se restringem ao bsico e que interagem com o banco de dados por meio de aplicaes escritas pelos programadores de aplicaes. As aplicaes fazem a intermediao entre esses usurios e o banco de dados, pois atravs de suas telas ou pginas que o usurio leigo acessa seus dados; Usurios avanados: usurios com maior nvel de independncia em relao aos programadores de aplicaes. Geralmente interagem com os bancos de dados por meio de interfaces disponveis no ambiente. Escrevem consultas em linguagem especfica para gerarem relatrios com certa facili-dade, sem a necessidade de um programador escrever uma nova aplicao; Analistas de Sistemas: profissionais responsveis por traduzir as necessidades dos usurios leigos e avanados em uma especificao racional de um sistema de informao. O projeto do sistema de informao especifica as aplicaes e a estrutura do banco de dados. Os programadores de aplicaes seguem rigorosamente as especificaes dos analistas de sistemas, desenvolvendo programas de computadores que acessem o banco de dados.
Linguagem de Programao

16

Captulo 1

Programadores de aplicaes: profissionais com formao em computao que se propem a construir aplicaes ou programas de computador com interfaces intuitivas e amigveis para os usurios leigos. Tais interfaces incluem formulrios e relatrios que acessam bancos de dados; Administrador de Banco de Dados (Data Base Administrator - DBA): usurio mais especializado de um banco de dados responsvel pela administrao das bases de dados, ocupando-se com: 1. a atribuio de permisses de acesso adequadas a cada usurio, 2. a gerao de cpias de segurana dos dados (backups) como contingncia a possveis falhas, 3. o monitoramento do ambiente como forma de assegurar a disponibilidade do banco de dados pelo maior tempo possvel, 4. a otimizao de recursos de infraestrutura (disco, memria, processador) para assegurar o desempenho satisfatrio do banco de dados, 5. o suporte equipe de desenvolvimento (analistas de sistemas e programadores de aplicao). Em resumo, o DBA deve ser o profissional que zela pela implementao adequada do banco de dados, assegurando um funcionamento eficiente que prime pelo desempenho, escalabilidade, flexibilidade e confiabilidade.

Algumas organizaes preferem manter um profissional que acumule as funes do analista de sistemas e do programador de aplicaes. Isso lhes permite reduzir custos trabalhistas e evitar rudos de comunicao que comprometam a eficincia dos sistemas de informaes. Afinal, sempre h a possibilidade de que o analista de sistemas no entenda perfeitamente as demandas do usurio ou que no seja plenamente entendido pelo programador de aplicaes. Assim, o usurio teria em suas mos um sistema de informao muito diferente do que requisitara inicialmente. Assim, as aplicaes teriam de ser reescritas, tornando o processo mais caro e menos eficiente do que seria.

Tcnico em Informtica

Conceitos de Banco de Dados

17

1.4 Modelos de bancos de dados


Os modelos de bancos de dados definem a forma como os dados esto organizados internamente. Em ordem cronolgica, os modelos de banco de dados classificam-se em redes, hierrquicos, relacionais, objetorelacionais e orientados a objetos. Segue-se uma descrio sobre cada um desses modelos para melhor entendermos suas caractersticas, diferenas e usos. 1.4.1 Modelo em Rede Um banco de dados em rede consiste em uma coleo de registros concatenados uns aos outros por meio de ligaes. Semelhantes ao conceito de ponteiros, essas ligaes podem ser entendidas como endereos de memria que indicam ou apontam a localizao de um registro associado. Na Figura 1 h um exemplo de Modelo em Rede com dois diferentes tipos de registros: cliente e conta. O registro de cliente apresenta trs atributos ou subdivises: nome, cidade e sexo. Por sua vez, o registro de conta possui apenas dois atributos: nmero e saldo.
Nome Reinaldo antunes Cidade Vitria Sexo M Nmero 1045 Nmero 1385 Nmero 1447 Nome Andr Marques Cidade Colatina Sexo M Nmero 1500 Saldo 945,60 Saldo 107,00 Saldo 93,41 Saldo 1.266,00

Nome Marcela Souto

Cidade Colatina

Sexo F

Figura 1 - Exemplo de Banco de Dados Modelo em Rede.

Ligaes associam registros de clientes a registros de contas. Ento, sabemos que o cliente Reinaldo Antunes tem uma conta de nmero 1045 e saldo de R$ 945,60; e os clientes Marcela Souto e Andr Marques possuem uma conta conjunta no banco de nmero 1447 e saldo de R$ 93,41. Porm, Marcela tem ainda outra conta de nmero 1358 e saldo R$ 107,00; e Andr Marques tambm tem outra de nmero 1500 com R$ 1.266,00 depositados. Um conjunto de diferentes tipos de registros relacionados entre si por meio de um emaranhado de ligaes forma uma estrutura de dados muito semelhante a uma rede.
Linguagem de Programao

18

Captulo 1

Atividade 03 Seguindo o modelo da Figura 1 acima, elabore um exemplo de banco de dados no Modelo Rede envolvendo a seguinte coleo de dados: Funcionrio {matrcula, nome, salrio, funo} e Filial {Cidade, Bairro, Telefone}. O objetivo desta coleo de dados armazenar informaes sobre todos os funcionrios de um supermercado e de suas filiais espalhadas em diversas localidades no pas. Por meio dessa coleo deve ser possvel determinar as filiais em que cada funcionrio est lotado. Esse exemplo dever apresentar pelo menos duas filiais com um mnimo de cinco funcionrios por elas distribudo. Use sua criatividade para dar nomes aos funcionrios, bem como o preenchimento dos outros dados sobre eles e as filiais nas tabelas. Lembre-se de que um funcionrio somente poder estar lotado em uma filial.

1.4.2 Modelo Hierrquico Uma evoluo do Modelo em Rede, os bancos de dados hierrquicos so uma coleo de registros relacionados uns aos outros por meio de ligaes tambm semelhantes a ponteiros. Porm, o Modelo Hierrquico se diferencia de seu antecessor na forma de organizar seus registros. Enquanto no Modelo em Rede os registros so distribudos conforme a lgica de grafos arbitrrios, no Hierrquico esses mesmos registros so dispostos como uma coleo de rvores.

rvores Binrias um dos temas tratados na disciplina referente a programao em Estrutura de Dados.

A Figura 2 traduz para o Modelo Hierrquico o exemplo anterior do banco com registros de clientes e contas.

Tcnico em Informtica

Conceitos de Banco de Dados

19

Nome Reinaldo antunes

Cidade Vitria

Sexo M

Nome Andr Marques

Cidade Colatina

Sexo M

Nome Marcela Souto

Cidade Colatina

Sexo F

Nmero 1500
Nmero 1447 Saldo 93,41

Saldo 1.266,00

Nmero 1045

Saldo 945,60

Nmero 1385

Saldo 107,00

Nmero 1447

Saldo 93,41

Figura 2 - Exemplo de Banco de Dados Modelo Hierrquico.

Um registro isolado no topo da Figura 2 encontra-se associado a todos os registros de Clientes. Esse o registro do tipo raiz, o ponto de partida da rvore de registros. Ele est no nvel mais elevado da estrutura de dados e pode ser ligado a nenhum, um ou vrios registros no nvel inferior. Em nosso exemplo, os registros conectados ao registro raiz so sempre registros de Clientes que, por sua vez, esto sempre interligados a registros de Contas no nvel imediatamente abaixo. Generalizando, existem camadas, nveis ou hierarquias em uma rvore. Os registros de um dado nvel sempre se associam aos registros do nvel imediatamente inferior e nunca com registros do mesmo nvel. No primeiro nvel da rvore h sempre um nico registro, denominado Raiz, que representa o ponto de partida de onde possvel acessar os demais registros. Cada nvel da rvore comporta um tipo de registro diferente. No exemplo, o nvel imediatamente abaixo da raiz comporta apenas registros do tipo Cliente; e o nvel seguinte apresenta apenas registros do tipo Conta. Ainda poderiam existir outros nveis, desde que houvesse registros de outros tipos. Na rvore, um registro de nvel K pode estar associado a, no mximo, um registro do nvel imediatamente acima (K 1). Contudo, um registro de nvel superior pode estar associado a mais de um registro do nvel imediatamente abaixo. Note que o registro da cliente Marcela Souto liga-se a dois outros registros de conta, mas a conta de nmero 1447 teve de ser duplicada para que a regra fosse preservada, replicando o registro para que Andr Marques compartilhasse essa conta com Marcela Souto j que um registro de conta no pode se associar simultaneamente a dois de clientes.

Linguagem de Programao

20

Captulo 1

A estrutura hierrquica desse banco de dados define o caminho de acesso aos registros. Qualquer busca a um registro especfico sempre comea pela raiz at o nvel correspondente ao tipo procurado.

comum encontrar na literatura as denominaes PAI e FILHO para distinguir a relao existente entre registros de diferentes camadas da rvore. Registros de uma camada K geralmente so designados Filhos dos registros de uma camada K 1. Em contrapartida, os registros dessa camada K 1 so considerados Pais dos registros da camada K que a eles estiverem conectados. Portanto, em nosso exemplo da Figura 3, os registros de Conta so Filhos dos registros de Clientes.

Atividade 04 Converta o exemplo de banco de dados no Modelo Rede da Atividade 03 em um exemplo equivalente no Modelo Hierrquico.

1.4.3 Modelo Relacional A partir dos anos 1970, o modelo relacional de banco de dados estabeleceu-se como modelo preferencial para aplicaes de banco de dados comerciais. Na dcada seguinte j havia se tornado o padro de banco de dados utilizado pelo mercado corporativo.

Em 1970, foi Edgar Frank Codd, um pesquisador da IBM, quem originalmente props o modelo relacional de banco de dados tratado nesta seo. Esse novo modelo trouxe uma importante contribuio ao dissociar a estrutura lgica do banco de dados dos mtodos de armazenamento fsico dos dados algo impossvel para os modelos em rede e hierrquico. Ao faz-lo, tornou os SGBDs mais amigveis (fceis de utilizar).

Tcnico em Informtica

Conceitos de Banco de Dados

21

Em um modelo relacional, os registros so organizados em tabelas onde cada linha representa uma relao entre os valores armazenados em diferentes colunas. Assim, em uma tabela de clientes, como no exemplo desenvolvido at aqui, temos cada registro subdividido em 3 colunas: nome, cidade e sexo. Toda linha existente na tabela de Clientes representa um conjunto de valores inter-relacionados. Em outras palavras, cada linha da tabela armazena os dados de um cliente em particular organizados em diferentes colunas.

Cliente Nome Reinaldo Antunes Marcela Souto Andr Marques Cidade Vitria Colatina Colatina Sexo M F M

Assim, sabemos que o cliente Reinaldo Antunes mora em Vitria e do sexo masculino (M), pois esses dados esto em uma mesma linha da tabela. Tambm sabemos que os clientes Marcela Souto e Andr Marques residem na cidade de Colatina e so, respectivamente, do sexo feminino e masculino. O modelo relacional de banco de dados apresenta esse nome em razo no apenas da relao existente entre as colunas de uma mesma tabela, mas tambm da possibilidade de estabelecer relacionamentos entre diferentes tabelas. Para que nosso exemplo de clientes e contas fique completo, precisamos relacionar registros de uma tabela com registros de outra. Caso contrrio, no teramos como saber com preciso a quais clientes cada conta pertence. Porm, ao contrrio dos modelos em rede e hierrquico, as associaes entre diferentes registros em um modelo relacional no so implementadas mediante o recurso de ponteiros. Na verdade, o modelo relacional emprega a duplicao de uma ou mais colunas em uma tabela distinta daquela a que pertencem originalmente.

Ponteiros um dos temas tratados na disciplina referente a programao em Estrutura de Dados.

Linguagem de Programao

22

Captulo 1

Filme Numero 1099 1100 1101 1102 1103 1104 Titulo El Cid Star Wars Star Trek UP- Altas Aventuras Transformers 2 Wolverine Origens Ano 1961 1977 2009 2009 2009 2009 Cod_Genero DRA FIC FIC DES FIC AVE

Gnero Cod_Genero AVE DES DRA FIC MUS COM Descricao Aventura Desenho Drama Fico-Cientfica Musical Comdia

No diagrama acima, temos duas tabelas Filme e Gnero que esto relacionadas entre si atravs da coluna Cod_Genero. Essa coluna original da tabela Gnero, mas foi duplicada na tabela Filme para estabelecer uma associao lgica entre os registros das diferentes tabelas. Dessa maneira, sabemos que o filme Star Trek classificado como uma fico-cientfica, pois apresenta o valor FIC em sua coluna Cod_Genero e o mesmo valor na coluna correspondente da tabela Gnero encontrase associada descrio Fico-Cientfica. H quem no compreenda a necessidade de duas tabelas em situaes como essa de Filme e Gnero. Afirmam ser uma soluo de complicao despropositada e perguntam-se: A coluna descrio no poderia simplesmente existir apenas na tabela Filme de modo a no haver a necessidade da tabela Gnero e nem das colunas duplicadas de Cod_Genero? A princpio essa parece ser uma soluo mais simples e, portanto, melhor, mas a tabela abaixo procura exemplificar essa soluo mais simples demonstrando tambm sua vulnerabilidade.
Filme Numero 1099 1100 1101 1102 1103 1104 Titulo El Cid Star Wars Star Trek UP Altas Aventuras Transformers 2 Wolverine-Origens Ano 1961 1977 2009 2009 2009 2009 Descricao_Genero Drama Fico-Cientfica Fico Desenho Fico-Cientfica Aventura

Tcnico em Informtica

Conceitos de Banco de Dados

23

Os valores da coluna Descricao_Genero podem se repetir em diferentes registros (linhas). Na tabela acima h trs filmes do gnero fico cientfica. Contudo, cada filme apresenta valores diferenciados para essa coluna. No filme Transformers 2 no h hfen, mas em Star Wars esse caractere est presente. J no filme Star Trek, no somente houve a omisso do hfen como tambm a supresso da palavra Cientfica. Algo assim perfeitamente possvel de acontecer. Usurios diferentes podem ter cadastrado cada um desses filmes, ou ainda um mesmo usurio em diferentes ocasies pode ter cadastrado os trs filmes. Acontece que, em um dado momento, esse usurio encontrava-se com uma disposio um tanto preguiosa para escrever fico cientfica e registrou apenas fico. Mais tarde, por um erro de digitao, passou a usar o hfen. A possibilidade de ocorrer a situao descrita acima demonstra a vulnerabilidade de uma soluo baseada em uma nica tabela. Caso um relatrio ou simples consulta seja efetuada, o resultado alcanado pode diferir sensivelmente da realidade que a base de dados deveria espelhar. Suponha que um usurio submeta uma consulta ao banco de dados usando como critrio de busca a coluna Descricao_Genero com o valor Fico Cientfica. Infelizmente, o resultado de sua consulta no incluir os registros de Star Trek e Star Wars e ele ter a impresso de que existe apenas um filme desse gnero: Transformers 2. Como veremos quando tratarmos do conceito de integridade referencial, a soluo inicial envolvendo duas tabelas (Filme e Gnero) a mais indicada para se evitar tais problemas. Ocorre que a tecnologia de bancos de dados relacionais possui recursos suficientes para assegurar que a coluna Cod_Genero da tabela Filme apresente somente valores j existentes na coluna Cod_Genero da tabela Gnero. Dessa maneira, nenhum usurio poder cadastrar um novo filme ou alterar um velho filme com um cdigo inexistente na tabela de origem (Gnero). O Sistema Gerenciador de Banco de Dados (SGBD) Relacional simplesmente no permitir essa operao. No mximo, um usurio descuidado poderia lanar um cdigo errado para um filme. Porm, ele no conseguiria criar um novo cdigo de gnero para um Filme sem antes cri-lo na tabela de Gnero. Retomando o exemplo do banco de dados para clientes e contas bancrias, a Figura 3 apresenta a configurao ideal para o modelo relacional.

Linguagem de Programao

24

Captulo 1

Cliente Id_Cliente Nome 10 Reinaldo Antunes 15 Marcela Souto 37 Andr Marques Cidade Vitria Colatina Colatina Conta Numero_Conta 1045 1385 1447 1500 Saldo 945,60 107,00 93,41 1.266,00 Sexo M F M

Contas_Cliente Numero_Conta Id_Cliente 1045 10 1385 15 1447 15 1447 37 1500 37

Figura 3: Exemplo de Banco de Dados Modelo Relacional.

Aqui, uma terceira tabela (Contas_Cliente) precisou ser criada para estabelecer o relacionamento entre as tabelas de Cliente e Conta. No exemplo anterior sobre Filme e Gnero, no houve essa necessidade, bastou replicar a coluna Cod_Genero na tabela Filme. Porm, a duplicao da coluna Id_Cliente na tabela Conta ou a duplicao da coluna Numero_Conta na tabela Cliente no seria uma soluo eficiente para estabelecer o relacionamento entre as tabelas. Por isso, criamos uma nova tabela apresentando apenas duas colunas e nenhuma delas originria dessa nova tabela (Contas_Cliente). As colunas Id_Cliente e Numero_Conta so replicadas respectivamente nas tabelas Cliente e Conta. Caso duplicssemos Id_Cliente na tabela Conta, enfrentaramos um grave problema ao cadastrar a Conta de nmero 1447. Esta conta pertence a dois clientes, uma conta conjunta: Andr (Id_Cliente = 37) e Marcela (Id_Cliente = 15). Como a coluna Id_Cliente na tabela Conta comporta apenas um valor por linha, teramos de cadastrar duas linhas para a Conta de nmero 1447. Se assim procedssemos, a tabela Conta teria dois registros diferentes entre si apenas no valor de uma de suas trs colunas, Figura 4.

Conta Numero_Conta 1045 1385 1447 1447 1500 Saldo 945,60 107,00 93,41 93,41 1.266,00 Id_Cliente 10 15 15 37 37

Redundncia de dados (ineficincia)

Figura 4: O Problema em Duplicar Id_Cliente na Tabela Conta. Tcnico em Informtica

Conceitos de Banco de Dados

25

Por outro lado, se optssemos por duplicar Numero_Conta na tabela Cliente, teramos outro problema grave com a tentativa de registrar as duas contas de Marcela Souto nmeros 1385 e 1447, pois teramos de cadastrar duas linhas exatamente iguais para Marcela na tabela Cliente, exceto pelo contedo da coluna duplicada de Numero_Conta, Figura 5.
Cliente Id_ Nome Cidade Sexo Numero Cliente _Conta 10 Reinaldo Antunes Vitria M 1045 1385 15 Marcela Souto Colatina F 1447 15 Marcela Souto Colatina F 1447 37 Andr Marques Colatina M 1500 7 Andr Marques Colatina M

Redundncia de dados (ineficincia) Redundncia de dados (ineficincia)

Figura 5: O Problema em Duplicar Numero_Conta na Tabela Cliente.

As consequncias mais srias para essas tentativas equivocadas de relacionamento das tabelas Cliente e Conta seriam: 1. Uso ineficiente dos recursos de armazenamento: redundncia de dados consumiria desnecessariamente o espao disponvel no disco rgido; 2. Maior complexidade para a manuteno das informaes: a atualizao do saldo em uma conta (Figura 4) ou a mudana de cidade para um cliente (Figura 5) poderia implicar a alterao de mais de um registro simultaneamente. Por mais que a nova tabela Contas_Cliente (Figura 3) tambm seja uma redundncia de dados, quando comparada s outras situaes (Figuras 4 e 5), a mesma representa uma replicao controlada e, portanto, mais eficiente. Na Figura 5, por exemplo, a duplicao de dados abrange quatro colunas (Id_Cliente, Nome, Cidade e Sexo), enquanto na Figura 3 a duplicao envolve somente duas colunas (Id_Cliente e Numero_Conta). Embora a Figura 4 igualmente apresente a duplicao de apenas duas colunas (Numero_Conta e Saldo), ela tambm implica a replicao de linhas. O mesmo no ocorre com a situao ilustrada pela Figura 3, onde nenhuma linha aparece replicada. Ainda que as colunas Numero_Conta e Id_Cliente apresentem valores duplicados em diferentes linhas, nenhuma combinao das mesmas se repete na tabela Contas_Cliente. Como a duplicao de dados inerente ao modelo relacional o que inevitvel a situao representada pela Figura 3 mostra-se plenamente aceitvel e prefervel s demais situaes representadas pelas Figuras 4 e 5.
Linguagem de Programao

26

Captulo 1

A maneira de definir quais colunas e em quais tabelas as mesmas devero ser replicadas ser tratada mais adiante ao nos aprofundarmos no Modelo Relacional, quando abordaremos conceitos como Chaves Primrias, Chaves Estrangeiras e Integridade Referencial. Tambm veremos com detalhes a linguagem de consulta e manipulao de banco de dados relacionais conhecida como Structured Query Language (SQL), que tornou-se importante padro para Bancos de Dados desde a dcada de 1980.

Atividade 05 Converta o exemplo de banco de dados das Atividades 03 e 04 em um exemplo equivalente no Modelo Relacional.

1.4.4 Modelo objeto-relacional Sistemas Gerenciadores de banco de dados (SGBDs) que adotam o modelo objeto-relacional aproveitam a estrutura bsica do modelo relacional acrescida de algumas caractersticas prprias da orientao a objetos. Porm, esse modelo hbrido no deve ser confundido com o Modelo Orientado a Objetos. Dentre as caractersticas da orientao a objetos incorporadas pelo modelo objeto-relacional merecem destaque: a herana de tipos e tabelas e a definio de novos tipos complexos. O modelo objeto-relacional (OR) uma extenso do modelo relacional conhecido como modelo relacional estendido. Sua linguagem de consulta foi adaptada para abranger objetos, atributos multivalorados, tipos abstratos de dados, alm de mtodos e funes como predicados de busca. O padro ANSI SQL-99 ou SQL-3, muitas vezes caracterizado como a SQL orientada a objetos, trouxe inmeras inovaes em relao SQL92. Ela a base de inmeros SGBDs OR, como o Oracle 11g, o IBM DB2 Universal Database e o Informix Universal server.

Tcnico em Informtica

Conceitos de Banco de Dados

27

1.4.5 Modelo orientado a objetos Os modelos em rede, hierrquico e relacional trouxeram importantes contribuies para a tecnologia de banco de dados, principalmente os comerciais. Qualquer um desses modelos foi um avano em relao aos Sistemas Tradicionais de Arquivos. Dentre os trs modelos acima, o relacional merece destaque, pois, desde a dcada de 1980, tornouse padro de mercado no desenvolvimento de aplicaes comerciais, como controle de estoques, contas a pagar e a receber, frente de loja, recursos humanos etc. Contudo, a complexidade de novas demandas tecnolgicas como os sistemas de informaes geogrficas e multimdias evidenciaram as limitaes desses modelos de bancos de dados. As novas aplicaes precisavam suportar estruturas complexas de dados para objetos, assim como o armazenamento de imagens digitalizadas e textos muito longos (NAVATE, 2005). Outro fator que pressionou positivamente o desenvolvimento de um modelo orientado a objeto (OO) para banco de dados a predominncia de linguagens de programao orientadas a objeto. Logo, programadores de aplicaes convivem com os dois paradigmas de desenvolvimento: modelo relacional para bancos de dados e orientao a objetos para os programas que trabalham com esses mesmos bancos. Tudo seria mais simples se aplicaes e bancos que do suporte persistncia de seus dados fossem igualmente orientados a objetos, no sendo mais necessrio o mapeamento objeto-relacional para combinar as duas tecnologias. Infelizmente, bancos de dados orientados a objetos ainda no foram bem aceitos pelo mercado. Em parte, essa rejeio explicada pela simplicidade e popularidade de que o modelo relacional ainda goza junto aos profissionais de informtica. Portanto, muitos desenvolvedores optam por uma soluo hbrida como o j comentado modelo objetorelacional tambm conhecido como modelo relacional estendido.

Modelo Orientado a Objetos abordado na disciplina referente a Anlise e Projeto de Sistemas.

Linguagem de Programao

28

Captulo 1

Atividade 06 Liste em ordem cronolgica os modelos de bancos de dados. Atividade 07 Cite as causas que levaram ao surgimento do Modelo Orientado a Objetos de Banco de Dados. Atividade 08 Por que bancos de dados orientados a objetos no se tornaram popular no mercado? Poderamos afirmar que a tecnologia de banco de dados estagnou no modelo relacional incorporando poucas inovaes desde o incio da dcada de 1970? Atividade 09 As tabelas abaixo correspondem ao modelo relacional de banco de dados. Converta esses dados para: a) o modelo redes, e b) o modelo hierrquico (lembre de comear dos dados mais gerais para os mais especficos dentro da rvore)
Funcionrio:

Matricula 01 02 03 04
Cargos:

Nome Ana Maria Jos Pedro Nome Cargo Programador Topgrafo Engenheiro

CPF 123 234 245 125

Cargo 02 01 03 01

Cdigo 01 02 03

Tcnico em Informtica