Conceitos Fundamentais em Sistemas de Bancos de Dados e suas

Propaganda
Administração de Banco de Dados – Aula 1
Conceitos Fundamentais em Sistemas de Bancos de Dados e suas Aplicações
A importância da informação para a tomada de decisões nas organizações tem
impulsionado o desenvolvimento dos sistemas de processamento de informações.
Sistema de Gerenciamento de Bancos de Dados(SGBD): é um software com recursos
específicos para facilitar a manipulação das informações dos bancos de dados e o
desenvolvimento de programas aplicativos.
Exemplos: Oracle, Ingres, Paradox*, Access*, SQL. MYSQL, PostGree, Firebird.
Objetivos de um Sistema de Bancos de Dados
– Isolar os usuários dos detalhes mais internos do banco de
dados (abstração de dados).
– Prover independência de dados às aplicações (estrutura
física de armazenamento e à estratégia de acesso).
Vantagens:
– rapidez na manipulação e no acesso à informação,
– redução do esforço humano (desenvolvimento e utilização),
– disponibilização da informação no tempo necessário,
– controle integrado de informações distribuídas fisicamente,
– redução de redundância e de inconsistência de informações,
– compartilhamento de dados,
– aplicação automática de restrições de segurança
– redução de problemas de integridade.
Níveis de Abstração
Nível físico: nível mais baixo de abstração. Descreve como os dados estão realmente
armazenados, englobando estruturas complexas de baixo nível.
Nível conceitual: descreve quais dados estão armazenados e seus relacionamentos. Neste
nível, o banco de dados é descrito através de estruturas relativamente simples, que podem
envolver estruturas complexas no nível físico.
Nível de visões do usuário: descreve partes do banco de dados, de acordo com as
necessidades de cada usuário, individualmente.
Linguagens de Definição e Manipulação de Dados
A SQL divide-se em três grupos:
- Linguagem de Definição de Dados (DDL)
- Linguagem de Controle de Dados (DCL)
- Linguagem de Manipulação de Dados (DML)
Linguagem de Definição de Dados (DDL)
Tem como objetivo definir, alterar e eliminar as tabelas usadas para armazenar os dados.
CREATE TABLE, CREATE VIEW, são comandos de definição de dados, dentre outros.
Exemplo: Criação de Tabelas
Em SQL as tabelas possuem a função de armazenar os dados do Banco de Dados. O
comando para criação de tabelas no SQL é o CREATE TABLE.
Exemplo de CREATE TABLE:
CREATE TABLE T_Funcionario
(cod_funcionario
VARCHAR(2),
nome_funcionario
VARCHAR(30),
end_funcionario
VARCHAR(40),
CONSTRAINT pk_funcionario
PRIMARY KEY
(cond_funcionario),
TABLESPACE ST_funcionario;
Linguagem de Controle de Dados (DCL)
A DCL contém elementos que serão úteis num sistema multiusuário, onde a privacidade
das informações é importante, bem como a segurança das tabelas e o estabelecimento de
fronteiras entre as transações. Os comandos GRANT e REVOKE são alguns dos comandos
utilizados para o controle de dados.
Linguagem de Manipulação de Dados (DML)
Esta linguagem contém os componentes da linguagem e conceitos para a manipulação das
informações armazenadas nas tabelas. Os comandos SELECT, UPDATE, INSERT, bem
como outros, são comandos de manipulação.
O Comando mais utilizado na linguagem SQL para manipulação dos dados é o SELECT.
Com ele é que produzimos as “Queries”, ou seja, as pesquisas no Banco de Dados.
Exemplos: Selecionando Dados
a) SELECT * FROM ALUNO;
Retorna todas as linhas e todas as colunas da tabela ALUNO.
b) SELECT MATRICULA, NOME_ALUNO
FROM ALUNO;
Retorna todas as linhas das colunas matrícula e o nome do aluno da tabela ALUNO.
c) SELECT MATRICULA, NOME_ALUNO
FROM ALUNO
WHERE NOME_ALUNO = ‘JOAO DA SILVA’;
Retorna a matrícula e o nome do aluno que tenham nome igual a JOAO DA SILVA.
d) SELECT MATRICULA FROM CURSA
WHERE ((NOTA1+NOTA2+NOTA3)/3) > 7
AND CD_DISCIPLINA = ‘PORT’;
Retorna a matrícula de todos os alunos que obtiveram média acima de sete na disciplina
PORT.
e) SELECT AVG(SALARIO) FROM EMPREGADO;
Retorna a média dos salários dos funcionários da tabela.
Tarefas de um Sistema de Gerenciamento de Bancos de Dados
– interação com o sistema de arquivos do sistema operacional
– cumprimento da integridade
– cumprimento da segurança
– cópias de segurança (“backup”) e recuperação,
– controle de concorrência.
Papéis Humanos em um Sistema de Bancos de Dados
Usuários do Banco de Dados
Realizam operações de manipulação de dados.
– programadores de aplicações
– usuários sofisticados
– usuários especializados
– usuários “ingênuos”.
Administrador do Banco de Dados e Administrador do SGBD
– Administrador de Dados ( DBA)
– Administrador do SGBD
– definição e atualização do esquema do banco de dados.
– definição da estrutura de armazenamento e a estratégia (ou método) de acesso
– concessão de autorização para acesso a dados
– definição de controles de integridade
– definição de estratégias para cópia de segurança e recuperação
– monitoramento do desempenho
– execução de rotinas de desempenho
– modificação da organização física.
O Administrador de Banco de dados e o Administrador do SGBD , normalmente são as
mesmas pessoas.
As tarefas de um DBA dependem da política de cada empresa , mas se considerarmos os
serviços de empresas mais rígidas , fica a cargo do mesmo :
- Rever o modelo de banco de dados , quando este for criado pelo Analista de Sistemas ou
mesmo criar este modelo de dados e documentar este modelo usando um software gráfico,
como o ERWIN.
- Criar os banco de dados
- Criar as tabelas - Criar as regras para cada tabela
- Criar índices e chaves
- Dar direitos de acessos ao banco de dados , direito de acesso a tabelas e direito de acesso
aos campos de cada tabela.
- Promover a rotina de backup (schedulagem)
- Efetuar testes de restore para confirmar se o backup esta confiável
- Promover a Schedulagem (agendamento) de rotinas que o sistema exige que rode num
processo batch (rotinas que devem ser executadas sem a intervenção de usuários)
- Cuidar da performance do banco de dados , monitorando tarefas que possam
sobrecarregar o mesmo , por exemplo um Select mal elaborado que acaba elevando a 100%
o consumo de memória ou disco. Neste caso o DBA deverá comunicar os Analista para que
revejam os processo do sistema em questão.
- O DBA deverá analisar os volumes de dados para prever as possibilidades do banco de
dados rodar mais de uma instancia do mesmo (Muitas vezes , é necessário mais memória ou
até mesmo um servidor com mais de um processador para que o Banco de Dados forneça
uma melhor performance)
- O DBA pode monitorar outras ações como , lentidão de uma aplicação pela ausência de
índices , store procedures ou triggers mal dimensionadas e configurações que estão mal
dimensionadas . Os softwares de banco de dados permitem configurações para dar maior
prioridade ou não para um determinada instancia , para aumentar a memória cachê quando
a aplicação exigir que mais informações permaneçam na memória RAM , para aumentar o
buffer , quando for mais interessante deixar os dados na memória RAM e assim diminuir
os acessos para disco , nos processos de atualização ou exclusão de dados (neste caso é
fundamental um bom sistema de nobreak) .Enfim , existe, diversas configurações que um
banco de dados suporta , de maneira que a performace do mesmo possa ser melhorada , isto
é muito semelhante comparando com um carro de formula 1 onde o tipo de peneu , tipo da
borracha do pneu , posição do aerofólio, configuração do motor , etc . podem fazer parte de
um processo para que este carro vença a corrida. O Oracle é muito rico nestes parâmetros ,
por isto ele é considerado um dos melhores softwares de banco de dados.
Os softwares de banco de dados , como p SQL e o Oracle , fazem um log das transações de
inserção, atualização e exclusão. Este log pode gravado em disco , e quando houver a
perda do banco de dados , é possível restaurar o backup do dia anterior e também os dados
do log permitindo assim , que possamos ter uma base dados mais próxima dos últimos
momentos antes do acidente do bando de dados.
Imagine um empresa tipo jornal , que grava os anúncios de classificados de clientes e que
não utiliza mais o papel . Caso tenhamos que restaurar o backup do dia anterior , não vai
ajudar muito , caso o problema tenha acontecido no dia posterior ao backup la´ pelas 16:00
.Assim sendo se for usado o log efetuando um backup do mesmo , por exemplo a cada 1
hora , podemos voltar o backup do dia anterior e votar todos os log´s até o ultimo backup
entes do acidente.
Isto tem um custo quanto a performance dfo banco do banco de dados , pois consome
transações de gravação dos logs em disco .
Caso não se deseje trabalhar com estes logs , é possível configurar o banco de dados , como
no SQL Sever com :
Truncate Log on CheckPoint
O DBA , pode configurar o tamanho das paginas que vem para a memória dos micros
CLIENT , sito é um SELECT traz um volume de dados padrão.
Esta definição depende da quantidade de RAM física no computador e os requisitos de
utilização e desempenho do SQL Server. Memória é designada em 2 KB-blocos. Por
exemplo, para um servidor SQL dedicado com 128 megabytes (MB) de RAM, Random
Access MEMORY, que poderá definir a memória para 64 MB de RAM (Blocos 2-KB
32.768) para o SQL Server.
Caso o tamanho da página seja de 32 KB , as informações vem em blocos de maneira a não
sobrecarregar o trafego de dados na rede. Este numero pode ser aumentado , para se obter
maior performance . Caso o SELECT tenha diversos registros , teremos muitas paginas ,
pois esta virão de blocos em blocos , se aumentarmos o tamanho da pagina , podemos ter
mais registros numa pagina e conseqüentemente mais performance , porem teremos mais
trafego de dados circulando na rede e talvez mais SWAP , isto é que ficam transitando
entre a memória e disco da maquina client. Portanto temos que avaliar as vantagens , e isto
pode ser uma grande desvantagem se o micro client tiver pouca memória e um processador
lento.
Conceitos Básicos do Banco de Dados
Chaves , são atributos que podem ser colocados nos campos das tabelas do banco de dados.
A chave , como no caso de uma chave de um porta , não é obrigatória , ele é colocada para
dar mais segurança.
As chaves mais importantes são Chave Primaria e Chave Estrangeiras .
Alem disto o banco de dado permite que se adicionem regras em cada campo , por exemplo
uma regra num campo de valor para que só aceite um valor maior que 1000, um campo que
não aceite ficar sem preenchimento , um campo que só aceite receber a String ‘M’ ou ‘F’,
etc..
Chave Primaria , é um atributo que pode ser colocado num campo de uma tabela e que faz
com que nesta tabela , não possam existir informações duplicadas , considerando este
campo como referencia . A chave primaria , exige o preenchimento do campo com alguma
informação , portanto ,ele não pode ficar vazio.
A criação de uma chave primária , faz com que a mesma exiba os registros , no caso do uso
do comando SELECT , na ordem do campo de chave primaria , em ordem ascendente ou
descendente.
Exemplo :
Tabela Alunos
Matricula ( chave primaria - PK)
Nome
Sexo
Fone
Endereço
Neste caso podemos colocar uma chave na matricula para que a mesma nunca seja repetida
por mais de uma aluno.
Não seria recomendável colocar a chave no campo nome pois podemos ter dois nomes
iguais , tipo : JOAO DA SILVA
É possível , uma tabela ter mais de um campo de chave primaria , mas isto tem que ser feito
de maneira que se constitua numa chave composta. Os registros serão apresentados , num
SELECT , ordenados pela chave composta .
Tabela Alunos
Escola
Matricula
Nome
Sexo
Fone
Endereço
Neste caso , o sistema vais atender a mais de uma instituição e portanto podem haver mais
de uma matricula igual. Portanto , a chave será composta de Escola+Matricula
A chave estrangeira , tem a ver com o conceito de integridade de dados. Considere as
seguintes tabelas :
Cargos
CodCargo (chave primaria)
Descr_Cargo
Funcionários
Matricula (chave primaria)
Nome
CodCargo
Salário
O campo código do cargo foi usado na tabela Funcionários , pois se fosse colocado a
descrição do cargo , correríamos o risco de ter uma mesma descrição escrita de diversas
formas , como :
Anl. Sistemas
Analista de Sistemas
Anl. Sist
Quando temos um campo de grupo , por questões de normalização das informações ,
devemos quebrar em duas ou mais tabelas .
Mas ai ficamos com um enorme problema , pois caso desejarmos incluir um código na
tabela FUNCIONARIOS que ainda não tenha sido inserida na tabela CARGOS, perdemos
a referencia e a integridade referencial da informação , assim sendo , ficamos com um
problema de não obediência a integridade referencial e de nada iria adiantar criar duas
tabelas.
Outros casos podem acontecer considerado a integridade referencial :
- Exclusão de um registro da tabela CRGOS , quando este código já tiver sido adcionado
em outros regsitros da tabela FUNCIONARIOS.
Por exemplo :
Tabela CARGOS
CodCargo 00013
Desc_Cargo : ANALISTA DE SISTEMAS
Tabela FUNCIONARIOS
MATRICULA
1222
2222
3333
NOME
Jose Silva
Ana Lima
Pedro Gama
CODCARGO
00013
00015
00013
SALARIO
1000
2000
1000
Desta forma , se excluirmos o código 00013 de cargos , os registros da tabela
FUNCIONARIO que mantiverem o código 00013 , ficam órfãos , pois não tem como
identificar mais a sua origem.
Isto também ocorreria , caso fosse alterado o código na tabela CARGOS , por exemplo
passar o código 00013 para 00020 , os registros da tabela FUNCIONARIO , ficaram sem a
integridade referencial com a tabela CARGOS.
Imagine se isto fosse feito num Banco onde numa tabela temos os dados de cadatro de um
cliente e nouta os movimentos de credito e debito m
Neste caso , poderíamos ter contas corrente completamente órfãos de informações.
Podemos colocar uma chave estrangeira no campo CODCARGO , da tabela
FUNCIONARIOS , para isto ela deve também existir numa outra tabela e obrigatoriamente
deve ser chave primaria nesta outra tabela , no caso a tabela CARGOS.
Na criação da chave estrangeira , são utilizados o parâmetro FOREIGN KEY e no da
chave primaria PRIMARY KEY , como veremos mais a frente.
Download