Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Banco de Dados Prof.: Denio Duarte Introdução Os dados fazem parte de nosso cotidiano. Por exemplo, as nossas caracterı́sticas são dadas por um conjunto de dados: cor da pele, cor do cabelo, altura, sexo, entre outros. Os sistemas de informação também são apoiados em dados pois a informação é o resultado do tratamento dos dados. Por exemplo, se tenho o dado 1, 85 m como altura, posso extrair a informação alto do indivı́duo com essa altura. Então, o que é um sistema e o que é um sistema de informação? Um sistema pode ser definido, segundo [4], como um grupo de elementos interrelacionados ou em interação que formam um todo unificado. Por exemplo, o corpo humano possui o sistema disgestivo, que é formado por determinados orgãos que se relacionam para um objetivo especı́fico: digerir os alimentos e extrair os nutrientes dos mesmos. Sendo um pouco mais preciso, um sistema é um grupo de componentes interrelacionados que trabalham rumo a uma meta comum, recebendo insumos e produzindo resultados em um processo organizado de transformação. Assim, um sistema tem (i) a entrada que envolve a captação e reunião de elementos que ingressam no sistema para serem processados, (ii) o processamento que envolve processos de transformação que convertem insumo (entrada) em produto, e (iii) a saı́da que envolve a transferência de elementos produzidos pelo processo até o seu destino final. Um sistema pode, então, ter várias entradas, processamentos e saı́das. E um sistema de informção? Especificando o conceito de sistemas temos: recebe como entrada dados, processa os mesmos e tem como saı́da informação. Os sistemas de informação têm os seguintes recursos envolvidos: • Humanos: divididos em especialistas (analistas de sistemas, programadores, etc) e usuários finais (todos os demais que utilizam o sistema). • Hardware: todos os recursos fı́sicos envolvidos tais como computadores, discos, impressoras, etc. • Software: os programas existentes nos sistemas, onde a lógica do processamento é implementada. • Dados: todos os dados necessários para o sistema. Por exemplo, dados dos clientes, dos produtos, etc. • Redes: meio de comunicação para os sistemas de informação. Vale a pena ressaltar que nos primordios dos sistemas de informação, este recurso não era muito importante, porém, agora, com a necessidade de disponibilizar os sitemas em vários pontos, redes tornou-se um recurso importante. Dos recursos apresentados acima, aquele que nos interessa são os dados. Os dados são a matéria prima dos sistemas de informação. Os dados podem ter várias formas: sequência de caracteres, números inteiros ou decimais, textos, imagens, sons, entre tantos outros. Os sistemas de informação necessitam, neste contexto, persistir os dados, ou seja, armazená-los de forma permanente para que possam ser utilizados em vários momentos durante o ciclo de vida do sistema. A persistência dos dados forma o que é chamado de banco de dados. Banco de dados é um conjunto de dados que possuem alguma relação. Por exemplo, podemos ter um banco de dados que armazena os dados relativos as contas de clientes em um banco financeiro. Os dados, em um banco de dados, são agrupados e, inicialmente, chamaremos esse agrupamento de arquivo de dados1 . Assim, um banco de dados é formado por um conjunto de arquivo de dados. Um dos objetivos de um sistema de informação é, então, transformar os dados em informação. Vamos precisar um pouco melhor, agora, a diferença entre dados e informações. • Dados: são fatos ou observações crus, normalmente sobre fenômenos fı́sicos ou transações de negócios. A compra de itens em um supermercado, por exemplo, geram muitos dados. Assim, dados são medidas objetivas dos atributos (as caracterı́sticas) de entidades (pessoas, lugares, eventos, etc.). • Informação: são dados que foram convertidos em um contexto significativo e útil para usuários finais especı́ficos. Armazenamento dos Dados Como dito anteriormente, é necessário armazenar os dados para que o mesmos sejam utilizados em vários momentos pelos sistemas de informação. Os elementos lógicos dos dados podem ser separados da seguinte forma: • Campo: é o menor item do dado. Refere-se a uma das caracterı́sticas de uma entidade. Por exemplo, a entidade pessoa é composta de vários campos: nome, idade, local de nascimento, etc. • Registro: é um coleção de campos que caracteriza unicamente uma entidade. Os exemplos de campos colocados anteriormente, se agrupados podem caracterizar uma entidade especı́fica, por exemplo, a pessoa Marie Curie. • Arquivo: é uma coleção de registros. Por exemplo, poderemos ter um arquivo que armazena todas as pessoas cadastradas no sistema. • Banco de dados: é uma coleção de arquivos. Continuando o nosso exemplo, poderı́amos ter os arquivos que armezam dados para as pessoas, filmes, locações e vendedores, formando um banco de dados de uma vı́deo locadora. No contexto de banco de dados relacional (objeto principal de nosso estudo), os termos acima são chamados, respectivamente, de: atributo e/ou coluna, tupla e/ou linha, entidade e/ou tabela e banco de dados. Tipos de Sistemas de Informação Os sistemas de informação podem ser agrupados em dois tipos principais: • Sistemas de apoio às operações: são sistemas utilizados para apoiar as operações de uma organização. Podem ser subdivididos em: sistemas de apoio de processamento de transações (processam dados resultantes de transações organizacionais, atualizam banco de dados e produzem documentos organizacionais), sistemas de controle de processo (monitoram e controlam processos industriais) e sistemas colaborativos (apoiam equipes, grupos de trabalho, bem como comunicações e colaborações entre e nas organizações). 1 No contexto desta disciplina, o arquivo de dados será chamado de tabela. • Sistemas de apoio gerencial: utilizados para fornecer informação e apoio aos gerentes para tomada de decisões de forma eficaz. Podem ser subdivididos em: sistemas de informação gerencial (fornecem informações na forma de relatórios, gráficos e demonstrativos préestipulados para os gerentes), sistemas de apoio à decisão (fornecem apoio interativo e flexı́vel para o processo de decisão dos gerentes) e sistemas de informação executiva (fornecem informações crı́ticas elaboradas especificamente para as necessidades de informação dos executivos da organização). Existem outros tipos de sistemas porém não serão citados pois não é o foco da disciplina. Sistemas Gerenciadores de Banco de Dados - SGBD Leituras recomendadas: capı́tulos 1 das seguintes referências: [1, 2, 5, 6] Como apresentado anteriormente, banco de dados (BD) é um conjunto de dados integrados e relacionados que tem como objetivo atender uma comunidade de usuários. Por exemplo, para professores, alunos e funcionários de uma universidade, um banco de dados conterá dados sobre alunos, professores, disciplinas, cursos, matrı́culas, entre outros. Algumas propriedades implı́citas dos BD: • Representa aspectos do mundo real (minimundo ou universo de discurso). • Coleção de dados logicamente coerentes com algum significado inerente. • É projetado, construı́do e povoado (instanciado) para aplicações especı́ficas. Aplicações de que utilizam BD: gestão financeira, controle acadêmico, gestão de imobiliárias, video-locadoras, entre muitas outras. Um sistema gerenciador de banco de dados (SGBD) é um sof tware (programa) que incorpora as funções de definição, recuperação e alteração de dados de um banco de dados. Assim: BD + Software de manutenção e controle = SGBD O esquema abaixo apresenta a interação entre os envolvidos nas aplicações que se apoiam em SGBD: Os usuários programadores podem ser: • Administradores dos dados (DBA - Database Administrator): responsável por (i) administrar o BD e o SGBD, (ii) autorizar acessos ao BD, e (iii) resolver problemas relativos ao BD (as responsabilidades do DBA não se resumem as apontadas aqui, para mais detalhes leia [3]). • Projetista: identificar os dados necessários para as aplicações, decidir as estruturas apropriadas para representar e armazenar os dados • Analista e programador: modelar a aplicação baseado nas necessidades dos usuários; implementar e testar a aplicação, etc. • Usuário final: acesso ao BD através das aplicações projetadas. Exemplos de alguns SGBD conhecidos: Oracle, SQLServer, DB2, Progress, PostgreSQL, MySQL, Firebird. Figura 1: Os três nı́veis de abstração de dados oferecidos pelos SGBD. Às vezes, o termo banco de dados é empregado no sentido SGBD. Por exemplo, costuma-se dizer: eu trabalho com o banco de dados P ostgreSQL. Na realidade, esta pessoa trabalha com o SGBD P ostgreSQL. Neste texto, os termos banco (de dados) será utilizado significando SGBD e banco (de dados), quando houver ambiguidade, será utilizado o termo SGBD. No inı́cio, as organizações possuiam seus bancos de dados organizados pelo sistema de arquivos do sistema operacional, ou seja, não existia um SGBD para o controle. Isso causava alguns problemas, podemos citar como um dos mais sérios a redundância não controlada dos dados. Imagine que em uma universidade, a secretaria acadêmica tem os dados dos professores e seus cursos e disciplinas. Assim, ela terá um arquivo com os dados dos professores. Agora, imagine que o setor de recursos humanos (RH) também precise dos dados dos professores para controlar salários, férias, entre outros. Em um ambiente onde não existe um SGBD, provavelmente, a secretaria acadêmica e o RH teriam, cada um, um arquivo com os dados dos professores. Essa situação causaria alguns problemas: dados repetidos e ocupando mais espaço, dados que deveriam ser iguais armazenados de forma diferente (na secretaria o endereço do professor pode ser um e no RH outro), entre outros. Sistemas de Arquivos vs SGBD: os seguintes problemas são encontrados quando se utiliza sistemas de arquivos ao invés de SGBD para gerenciar os dados: difı́cil (i) controlar redundâncias, (ii) acessos aos dados, (iii) concorrência aos dados, e (iv) integridade dos dados. Em consequência, as vantagens da utulização de SGBDs: independência dos dados, acesso eficiente aos dados, integridade e segurança dos dados, administração dos dados centralizada, recupereação de falhas, redução do tempo de desenvolvimento das aplicações, entre outros. Porém, existem situação que a utilização de um SGBD não é necessária (lembre-se que um SGBD é um software pesado que consome disco e memória e necessita ser monitorado regularmente): quando o volume de dados não é importante, aplicações que persistem dados apenas para configuração ou para enviar futuramente para outras aplicações, entre outros. Uma das vantagens, então dos SGBD, é a independência de dados. Essa independência é conseguida através dos nı́veis de abstração oferecidos pelos SGBD. A Figura 1 apresenta diagramaticamente estes nı́veis. O nı́vel externo (ou esquema externo ou visão externa) é o nı́vel mais abstrato dos dados. O usuário neste nı́vel não se preocupa como os dados estão organizados nem armazenados. Nesse nı́vel, parte do banco de dados é descrito para um grupo de usuário especı́fico. O nı́vel conceitual (ou esquema conceitual ou esquema lógico) descreve a estrutura do banco de dados para uma comunidade de usuários. Geralmente, são usuários especialistas (por exemplo, analistas e programadores). Esse nı́vel oculta detalhes de estruturas de armazenamento fı́sico. O nı́vel interno (ou esquema fı́sico) descreve a estrutura de armazenamento fı́sico do banco de dados. Esse nı́vel utiliza um modelo de dado fı́sico e descreve os detalhes completos do armazenamento de dados e caminhos de acessos ao banco de dados. Esse modelo é totalmente dependente do SGBD utilizado. Os nı́veis então promovem a independência dos dados. Temos dois tipos de independência: 1. Independência de dados lógica: este tipo preconiza que é possı́vel alterar o esquema conceitual sem mudar o esquema externo ou os programas. Em alguns casos essa independência não pode ser alcançada como, por exemplo, excluir um atributo que aparece no esquema conceitual e é utilizado no esquema externo. Porém, na maioria das operações sobre esquemas, essa independência é alcançada. Perceba que economiza-se tempo de desenvolvimento com este tipo pois as aplicações no nı́vel externo não precisam ser alteradas a cada alteração no esquema conceitual. 2. Independência fı́sica de dados: este tipo tem o mesmo raciocı́nio do anterior, apenas se refere as alterações fı́sicas ocorridas no banco que não alteram o esquema conceitual, evitando refazer o mesmo. Como alterações podemos citar: mudar a tabela de local de armazenamento, criar outros tipos de acessos ao banco, reorganizar o banco, entre outros. Como no caso anterior, algumas alterações no esquema fı́sico podem alterar o esquema conceitual. Por exemplo, um atributo texto tornar-se numérico. Para exemplicar os três nı́veis vamos supor que temos uma visão externa dos dados representada da seguinte forma: Inf oDisciplina(nomeDisc : string, nomeP rof : string, nroM atriculado : integer) Que indica o nome de uma disciplina, com seu respectivo professor e o número de alunos matriculados. Esse esquema externo pode ter sido criado a partir do seguinte esquema conceitual (simplificado): Alunos(matricula : integer, nome : string) Disciplinas(codigo : integer, nome : string) P rof essores(codigo : integer, nome : string) M atriculas(codDisc : integer, matAlu : integer, nota : real) Ensina(codDisc : integer, codP rof : integer, sala : string) Onde Alunos são os alunos cadastrados, Disciplinas as disciplinas oferecidas, P rof essores são os professores cadastrados, M atriculas representa a matrı́cula de um aluno em uma disciplina e Ensina modela a disciplina alocada a um professor. Perceba que o esquema externo apresenta uma junção das tabelas Disciplinas, P rof essores e M atriculas. Dessa última é calculado quantos alunos estão matriculados em uma disciplina qualquer dada por um professore qualquer. Para o esquema fı́sico, poderı́amos ter algo como (tabela Alunos): 2 0 1 1 5 ⊥ M a r i a d a L u z ⊥ ... Neste esquema, os dados são representados fisicamente, ou seja, da maneira que estão armazenados no banco de dados. Referências [1] Ramez Elmasri and Sham Navathe. Sistemas de Banco de Dados. Addison Wesley, 2004. [2] Hector Garcia-Molina, Jeffrey Ullman, and Jeniffer Widom. Database Systems - The Complete Book. Prentica Hall, 2001. [3] Ronaldo S. Melo and Carina F. Dornelles. Qual o papel de um DBA? SBC Horizontes, 2008. [4] James A. O’Brien. Sistemas de Informação (e as decisões gerenciais na era da Internet). Editora Saraiva, 2004. [5] Raghu Ramakrishnan and Johannes Gherke. Database Mamagement Systems. McGraw Hill, 2002. [6] A. Silberschatz, H. F. Korth, and S. Sudarshan. Sistemas de Banco de Dados. McGraw Hill, 2005.