• Nenhum resultado encontrado

Banco de Dados. Aula 1 - Introdução e Conceitos Básicos

N/A
N/A
Protected

Academic year: 2021

Share "Banco de Dados. Aula 1 - Introdução e Conceitos Básicos"

Copied!
22
0
0

Texto

(1)

Banco de Dados

(2)

Objetivo

• Compreender o que são dados, banco de dados e SGDB.

• Compreender a importância do armazenamento de dados.

(3)

O que é banco de dados

• Para entender melhor o que é banco de dados iremos analisar separadamente as duas palavras: Segundo o dicionário

Aurélio:

Banco: Assento, Banco de Areia, estabelecimento que recebe

deposito de dinheiro, “Acervo ou conjunto de dados de

obras, documentos, informações de determinado tipo, devidamente armazenados e organizados para uso”.

Dados: Elemento de Informação, em forma apropriada para

armazenamento, processamento ou transmissão por meios automáticos.

(4)

Banco de Dados

Banco de Dados: Conjunto de dados, organizados por

categorias, de modo a facilitar a pesquisa, comparação e atualização das informações.

• Os banco de dados são os locais que utilizamos para

armazenar os dados manipulados pelos nossos programas.

• Até agora toda vez que fazíamos um programa quando ele era encerrado os dados eram perdidos. No entanto, muitas vezes é necessário rever essas informações para isso temos que armazena-las.

(5)

Sistemas Computacionais e BD

• Dos sistemas computacionais mais simples aos mais

sofisticados grande parte não funcionaria satisfatoriamente se não existisse o armazenamento de dados.

• Imagine:

• Utilizar o MS Word sem poder salvar os arquivos

• Ter um sistema de controle de estoque sem poder armazenar os produtos vendidos e comprados

• Utilizar o sistema de uma agencia bancaria sem poder armazenar informações sobre depósitos e saques

(6)

A importância do Armazenamento

de Dados

• Os dados são de extrema importância para empresa, muitas vezes os dados chegam a valer mais que o patrimônio físico delas (prédios, máquinas, etc)

• Exemplo:

• SERASA • Facebook

• Uma vez que os dados são tão importantes é necessário ter sistemas que manipulem e esses dados com maior eficiência e segurança.

(7)

Antigamente…

• Nos primórdios da programação os dados eram armazenados em arquivos, os programadores eram responsáveis por criar tanto as rotinas de negócio, quanto as rotinas necessárias para manter e recuperar os dados. (MUITO TRABALHOSO !!!)

• Porem naquela época os sistemas eram pequenos e manipulavam pequenas quantidades de dados.

(8)

Exemplo de Código em C

#include <stdio.h> #include <stdlib.h> typedef struct TProduto { char nome[50]; int quantidade; float valorUnitario; float total; } Produto;

typedef struct TPessoa { char nome[50]; char endereco[50]; Produto produtos[10]; } Pessoa; void lerArquivo() { FILE *pf; Pessoa cliente2; if ((pf = fopen("c:\\banco.if", "r")) == NULL) { printf("Erro na abertura do arquivo\n"); exit(1);

}

while (fread(&cliente2, sizeof (Pessoa), 1, pf) == 1) { printf("O nome da pessoa %s\n", cliente2.nome); printf("O nome do produto %s\n", cliente2.produtos[0].nome); printf("O nome da pessoa %d\n", cliente2.produtos[0].quantidade); printf("O nome da pessoa %f\n", cliente2.produtos[0].valorUnitario); printf("\n"); } fclose(pf); } void gravaArquivo() { FILE *pf; Pessoa cliente1; int i = 0;

printf("Digite o nome da Pessoa\n"); gets(cliente1.nome);

printf("Digite o endereco da Pessoa\n"); scanf("%s", cliente1.endereco); for (i = 0; i < 2; i++) {

printf("Digite o nome do produto\n"); scanf("%s", cliente1.produtos[i].nome);

printf("Digite a quantidade do produto\n"); scanf("%d", &cliente1.produtos[i].quantidade); printf("Digite o valor do produto \n"); scanf("%f", &cliente1.produtos[i].valorUnitario);

cliente1.produtos[i].total = cliente1.produtos[i].quantidade + cliente1.produtos[i].valorUnitario; }

if ((pf = fopen("c:\\banco.if", "a")) == NULL) { printf("Erro na abertura do arquivo\n"); exit(1);

}

if (fwrite(&cliente1, sizeof (Pessoa), 1, pf) != 1) { printf("Erro ao escrever no arquivo"); }

fclose(pf); }

int main(int argc, char** argv) { int opcao = 0;

do{

printf("Escolha uma opcao\n"); printf("1) Realizar Venda\n"); printf("2) Mostrar Vendas\n"); scanf("%d", &opcao);

switch(opcao){

case 1: gravaArquivo();break; case 2: lerArquivo(); break; }

}while(opcao != 0); return (EXIT_SUCCESS); }

(9)

Atualmente

• Nos dias atuais, as aplicações estão cada vez mais complexas, gerenciando grandes quantidades de informação. Os

programadores devem estar focados no desenvolvimento da lógica da aplicação sem perder a segurança dos dados.

• Imagine desenvolver um site de vendas online (por exemplo submarino) e armazenar os dados utilizando o sistemas de arquivos.

• Seria muito ruim comprar um DVD do Jogo Diablo e receber um CD do Reginaldo Rossi.

(10)

Problemas dos Sistemas de

Arquivos

• Como os programadores eram responsáveis por criar tanto as rotinas de negócio, quanto as rotinas necessárias para manter e recuperar os dados, a criação de sistemas tornava-se

complexa e demorada, além disso esses sistemas apresentavam vários tipos de problemas.

• As principais dificuldades na utilização do sistemas de arquivos eram:

(11)

Inconsistência e redundância de

dados

• Os arquivos e aplicações são criados e mantidos por diferentes

programadores, em geral durando longos períodos de tempo. Com isso a informação pode ser repetida em diversos lugares (arquivos), gerando redundância de dados, ademais a informação por estar repetida em diversos lugares pode apresentar divergências.

Exemplo: Redundância

• O endereço e o telefone de um cliente pode aparecer tanto no

arquivo de cadastro de clientes, quanto no arquivo de contas a pagar.

Exemplo: Inconsistência

• Um cliente mudou de endereço e solicitou a alteração de seus dados no cadastro da empresa, contudo seus dados só foram atualizados no arquivo de cadastro de cliente, no arquivo de contas a pagar seu

(12)

Dificuldade de acesso aos dados

• Como a manipulação dos arquivos é realizada por meio de programas específicos, caso seja necessário emitir o relatório que não estava previsto na implementação do sistema será necessário criar um nova aplicação para que os dados possam ser acessados.

(13)

Isolamento de dados

• Como os dados estão dispersos em vários arquivos, e estes arquivos podem apresentar diferentes formatos, é difícil escrever novas aplicações.

(14)

Problemas de Integridade

• Os valores de dados armazenados em um banco de dados devem respeitar certas restrições.

Exemplo:

• Suponha que para abrir um conta em um banco o cliente deve fazer um deposito inicial de R$ 100,00. Ao abrir a conta é necessário

verificar se o cliente fez o deposito do valor mínimo, caso isso não ocorra não haverá integridade nos dados contidos no banco.

• O mesmo pode ocorrer no caso do cadastro de um cliente de uma financiadora, pode ser necessário verificar a idade do cliente antes de efetuar seu cadastro. Suponha que só seja possível cadastrar clientes que possuam idade entre 18 e 65 anos, caso o sistema permita o cadastro de clientes fora dessa faixa de idade os dados armazenados não serão íntegros.

(15)

Problemas de atomicidade

• Um sistema computacional, como qualquer outro dispositivo mecânico ou elétrico, esta sujeito a falhas. Em muitas

aplicações é crucial assegurar que, uma vez detectada uma falha, os dados sejam salvos em seu ultimo estado

consistente, anterior a ela.

Exemplo:

• Considere um que você esta fazendo uma transferência de R$ 100,00, da sua conta para a conta de um amigo, pela internet. O processo de transferência de consiste em duas operações no banco:

• 1 – Debitar o R$ 100,00 da sua conta

(16)

Problemas de atomicidade

• Considere que ao iniciar a transferência acabe a energia elétrica de seu computador, na sua conta poderia ter sido debitado os R$ 100,00, porém poderia ocorrer dos R$ 100,00 não terem sido creditados na conta de seu amigo.

• Este fato criaria um estado de inconsitência no banco de dados. Para que haja consistência é essencial que ambas as operações (debito e credito) sejam realizadas, ou então que nenhuma delas sejam. Isto é a operação (debito e credito) deve ser atômica – deve ocorre por completo ou não ocorrer.

(17)

Anomalias no acesso

concorrente

• Grande parte dos sistemas permitem atualizações simultâneas nos dados para aumento do desempenho do sistema. Nesse tipos de ambientes, a interação entre atualizações concorrentes pode resultar em inconsistências de dados.

Exemplo:

• Suponha que o saldo de uma conta bancária seja de R$ 1.000,00 e que dois clientes realizem um saque, de R$ 50,00 e 100,00, em terminais eletronicos diferentes ao mesmo tempo.

Cliente 1 Cliente 2

Saldo na Conta = R$ 1.000,00 Lê Saldo = R$ 1.000,00

Efetua Saque = R$ 1000.00 – R$ 50,00 Escreve novo Saldo = R$ 950,00

Saldo na Conta = R$ 1.000,00 Lê Saldo = R$ 1.000,00

Efetua Saque = R$ 1000.00 – R$ 100,00 Escreve novo Saldo = R$ 900,00

Dependendo da operação que gravar os dados no banco primeiro o saldo será R$ 950,00 ou R$ 900,00, onde o correto seria R$ 850,00.

(18)

Problemas de Segurança

• Nem todos usuários do banco possuem autorização de acesso a todos os dados, alguns dados podem ser de uso exclusivo de um grupo de usuários. Ademais os arquivos possuem pouca segurança, podendo ser copiados, apagados e/ou lidos e modificados.

• Essas dentre outras dificuldades provocaram o desenvolvimento dos SGDBs.

(19)

Solução

• Para resolver esses problemas separamos os dados (arquivos) e os programas para acesso a esses dados dos programas com as regras de negocio (lógica). • Antes tínhamos: Arquivos (dados) Programa para Manipular dados Programa de Vendas Arquivos (dados) Programa para Manipular dados Programa de Cobrança

(20)

Solução

• Agora temos: Programa para Manipular dados Programa de Vendas Arquivos (dados) Programa de Cobrança Programa de Estoque SGDB

(21)

Solução

• Agora os desenvolvedores se preocupam em desenvolver

apenas a logica dos programas. Os códigos para armazenar os dados são providos por um outro programa mais

especializado.

• Assim diminuem o tempo, esforços de desenvolvimento e o custo e aumenta a performance e segurança.

Um SGDB - Sistema gerenciador de banco de dados é constituído por um conjunto de dados associados a um conjunto de programas para acesso a esses dados.

(22)

Exercícios

1. Explique com suas palavras a importância do

armazenamento de dados em sistemas computacionais.

2. O sistema de armazenamento de arquivos apresentavam grandes problemas. Responda quais são esses problemas e por que?

3. O que é redundância?

4. O que é atomicidade?

5. O que é problema de acesso concorrente?

6. O que é um banco de dados?

7. O que é um SGDB?

Referências

Documentos relacionados