Introduç˜ao - udesc

Propaganda
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.
Download