Apostila de Sistemas Gerenciadores de Bancos de Dados

2007

Capítulo I - Introdução
No início da década de 60, foram lançados os primeiros sistemas gerenciadores de banco de dados (SGBD), tendo como principal proposta o aumento na produtividade nas atividades de desenvolvimento e manutenção de sistemas, até então realizadas de forma artesanal em linguagens de programação convencionais de primeira e segunda geração.

Oriundos do ambiente de mainframes, os SGBD tornaram-se mais populares e amigáveis com o advento da microinformática. Cada vez mais as fronteiras entre esses dois mundos estreitam-se e a concorrência pelo domínio do mercado de SGBD, tem levado seus diversos fabricantes a sofisticarem seus produtos. Cada nova versão lançada, incorpora novidades como interfaces gráficas, ferramentas de apoio ao desenvolvimento, utilitários para gerenciamento de BD e facilidades para extração de dados. Essa evolução vem tornando o trabalho de programadores, analistas e usuários menos artesanal, com reflexos na qualidade e produtividade.

1.1. Principais conceitos
1.1.1. Bancos de Dados: Coleção de dados inter-relacionados, que representam informações sobre um domínio específico; Ex.: Agenda telefônica, Base de dados de uma empresa, Acervo de uma biblioteca. 1.1.2. Sistema Gerenciador de Bancos de dados: Software com recursos suficientes para facilitar a manipulação das informações dos bancos de dados e o desenvolvimento de programas aplicativos. Ex.: MySQL- Oracle- SQL Server

Programas de Aplicação/Consulta

Sistema de Banco de Dados

SGBD Software para processar manipulação

Banco de dados
Software de Acesso aos Dados

Meta Dados

Dados

1.1.3. TABELAS Uma tabela é uma coleção de REGISTROS do mesmo tipo, ou seja, referentes Constitui que da a o um mesmo através desejada assunto do dos pelo e com no o mesmo são de de formato base padrão os a e para (layout). dados, geração consultas sobre um componente sistema qual através armazenados relatórios informações

combinados informação em

programas usuário, cada uma

servem

on-line. Um sistema de controle de notas, por exemplo, pode armazenar seus dados etc. Essas gerar, por informações exemplo, o podem ser combinadas ESCOLAR, a através PAUTA de ou programas uma tela para de diversas item do tabelas, contendo determinado sistema: ALUNO, PROFESSOR, MATÉRIA, NOTA,

BOLETIM

CONSULTA DE NOTAS.

alteração e exclusão de dados. definido pela seqüência. especialmente. Constitui a célula da informação. Consiste na unidade de armazenamento e recuperação da informação em um arquivo. Cada campo possui NOME. A escolha do NÚMERO DO TELEFONE como chave de um cadastro de clientes. CHAVE PRIMÁRIA (PRIMARY KEY . Nesse sentido. É a menor porção de um arquivo que pode ser referenciada por um programa.1.. Geralmente. seria inadequada.1. os registros de um arquivo possuem um formato padrão (layout). Em regra. Porém. algumas linguagens de programação permitem a criação de registros com layouts deferentes em um mesmo arquivo. para dar maior consistência aos processos de inclusão. Para que não ocorram duplicatas nos valores da chave. tipo e tamanho dos campos que o compõem. por exemplo. que um mesmo nome pode ser .4. seria inadequado a escolha do campo NOME para chave de um cadastro de clientes. que não existam dois registros no arquivo com o mesmo valor de chave primária. Pode ser constituída de um campo (CHAVE SIMPLES) ou pela combinação de dois ou mais campos (CHAVE COMPOSTA). TIPO e TAMANHO. REGISTRO Um registro é constituído por conjunto de campos valorados (contendo dados). que permita a identificação inequívoca do registro.6. Na escolha da chave primária de um arquivo deve-se buscar campos que possuam ESTABILIDADE no valor armazenado. por que esse valor pode mudar com freqüência. os campos que a compõem são de PREENCHIMENTO OBRIGATÓRIO (NOT NULL). todo arquivo deve possuir uma chave primária. 1.1.. Deve-se também evitar a escolha de campos que possam causar AMBIGÜIDADE em relação aos valores nele contidos.5. CAMPO É a unidade básica formadora de um registro. Sem considerar que o cliente pode ter mais de um telefone. recurso este que raramente é utilizado. 1.1. de tal maneira. haja vista.PK) A CHAVE PRIMÁRIA (ou simplesmente CHAVE) é o identificador único de um registro em um arquivo.

NomeEmp. 1. não possui a característica de unicidade proposta para a chave primária. para aumentarmos o valor do salário dos analistas em 10%. Em síntese. Defina chave primária. CatFunc) Exercícios 1. Portanto.7. a chave secundária é o campo ou combinação de campos do arquivo que permite a recuperação de mais de um registro no arquivo. LUIZ. a probabilidade de erramos o cliente seria grande. Simule a criação de um banco de dados. Este mecanismo permite a implementação de relacionamentos no modelo relacional. registros e campos 3. 1. Dê exemplos de arquivos.escrito de várias formas. a extensão do campo (30 ou mais caracteres) é um outro aspecto que aumenta a possibilidade de erros.1. Se desejássemos cobrar uma fatura de um cliente com um nome como esse. Este banco deverá conter 3 tabelas. LOUIS. LUYS. secundária e estrangeira para as tabelas criadas. Por exemplo: LUÍS.1. .8. Exemplo: Departamento (CodDep. LOYS. Ë utilizada como parâmetro (filtro) para seleção de registros no arquivo em consultas. 2. CHAVE SECUNDÁRIA A chave secundária pode ser formada por um campo ou pela combinação de campos (SIMPLES / COMPOSTA). Além disso. CHAVE ESTRANGEIRA É um atributo ou conjunto de atributos cujos valores aparecem necessariamente na chave primária de uma tabela. Defina com suas palavras a diferença entre Bancos de dados e Sistemas Gerenciadores de Bancos de dados. poderíamos utilizar o campo FUNÇÃO do arquivo CADASTRO DE FUNCIONÁRIOS como parâmetro (chave secundária) no processo de seleção dos registros a serem alterados. CodDepto. NomeDepto) Empregado(CodEmp. emissão de relatórios ou processos de atualização simultânea de um grupo de registros. Por exemplo.

Este fator é essencial para que múltiplas aplicações integradas possam acessar o banco. Restrição a Acesso não Autorizado Um SGBD deve fornece um subsistema de autorização e segurança. Controle de Redundância No processamento tradicional de arquivos. Representação de Relacionamentos Complexos entre Dados Um banco de dados pode incluir uma variedade de dados que estão interrelacionados de várias formas.Características de SGDB´S 2. cada grupo de usuários deve manter seu próprio conjunto de arquivos e dados. Tolerância a Falhas Um SGBD deve fornecer recursos para recuperação de falhas tanto de software quanto de hardware. então todos os grupos devem ser atualizados para manter a integridade dos dados no ambiente como um todo. 2.5. Desta forma. Compartilhamento de Dados Um SGBD multiusuário deve permitir que múltiplos usuários acessem o banco de dados ao mesmo tempo. O SGBD multiusuário deve manter o controle de concorrência para assegurar que o resultado de atualizações sejam corretos. o controle de restrições se aplica tanto ao acesso aos dados quanto ao uso de softwares inerentes ao SGBD.4. • a redundância desnecessária de dados levam ao armazenamento excessivo de informações. Um SGBD deve fornecer recursos para se representar uma grande variedade de relacionamentos entre os dados. bem como. 2.Capitulo II . recuperar e atualizar os dados de maneira prática e eficiente. acaba ocorrendo redundâncias que prejudicam o sistema com problemas como: • toda vez que for necessário atualizar um arquivo de um grupo. 2. Um banco de dados multiusuários deve fornecer recursos para a construção de múltiplas visões. o qual é utilizado pelo DBA para criar “contas” e especificar as restrições destas contas.1.2. 2. ocupando espaço que poderia estar sendo utilizado com outras informações.3. .

Capítulo 3. o conteúdo do banco de dados visto por algum usuário determinado (ou seja. linguagens que acopladas a outras. talvez dirigida por formulários ou menus. essa linguagem será uma linguagem de programação convencional (como PL/I. produzem os efeitos esperados. Cada usuário tem uma linguagem à sua disposição: • Para o programador de aplicações. Um determinado usuário pode ser ou programador de aplicações ou um usuário final com qualquer grau de sofisticação. para esse usuário a visão externa é o banco de dados).1. Algumas destas técnicas são chamadas de sub-linguagem. Arquitetura de SGBD´S 3. porém. um usuário do Departamento de Pessoal poderia considerar o banco de . Cada usuário utiliza diferentes linguagens para utilizar um sgbd.1. a linguagem será uma linguagem de consulta ou alguma linguagem de uso especial. ou seja. C+-f.1. o DBA também precisará estar interessado nos níveis conceitual e interno. Uma visão externa é. adaptada aos requisitos desse usuário. Arquitetura em 3 níveis A ANSI divide a arquitetura de banco de dados em 3 níveis distintos: Nível Externo – Nível do usuário Nível Interno – Nível físico Nível Conceitual – Nível de conjunto de visões de usuários. diferentemente de outros usuários. Nível Externo O nível externo é o nível do usuário individual. Java) • Para o usuário final. portanto. (O DBA é um caso especial importante. Faz a ligação entre os outros dois. 3. Por exemplo.

Porém. Em geral. em geral.Na maior parte dos sistemas existentes. . uma operação DML de busca obterá ocorrências de registros externos. Assim. somada a uma coleção de ocorrências de registros de empregados. como ponteiros ou índices de acesso. mais uma coleção de ocorrências de registros de fornecedores. etc.1. A visão conceitual consiste em muitas ocorrências de cada um dos vários tipos de registros conceituais. uma visão externa consiste em muitas ocorrências de cada um dentre muitos tipos de registros externos (não necessariamente a mesma coisa que uni registro armazenado). ela pode consistir em uma coleção de ocorrências de registros de departamentos. por exemplo. Na visão conceitual não haverá nenhuma informação física. não ocorrências de registros armazenados. somados a certas restrições de segurança e integridade. Ou seja. Para que isto funcione.). Por exemplo. NÍVEL CONCEITUAL A visão conceitual é uma representação de todo o conteúdo de informações do banco de dados.dados uma coleção de ocorrências de registros de departamento empregados. será feita a busca no nível conceitual e não no nível interno. deverão existir todas as restrições de segurança e integridade de dados. e ele poderia não ter nenhum conhecimento das ocorrências de registros de fornecedores e peças vistas pelos usuários do Departamento de Compras. tem de haver uma definição do mapeamento entre o esquema externo e o esquema conceitual subjacente. 3. mais uma vez (como no caso de uma visão externa) em uma forma um tanto abstrata em comparação com o modo como os dados são armazenados fisicamente. nem o mesmo que um registro armazenado. ela também será bastante d if e r e n t e do modo como os dados são visualizados por qualquer usuário em particular. Neste nível. o "esquema conceitual" é na verdade pouco mais que uma simples reunião de todos os esquemas externos individuais.2. Um registro conceitual não é necessariamente o mesmo que um registro externo. somada a uma coleção de ocorrências de registros de peças (etc.* A sublinguagem de dados do usuário é definida em termos de registros externos.

ela representa um risco de segurança (pois as restrições de segurança são ignoradas) e um risco de integridade (pois também as restrições de integridade são ignoradas). Não é preciso dizer que essa prática não é recomendável. . às vezes essa poderá ser a única maneira de obter a funcionalidade ou o desempenho exigido . e o programa terá uma inicialização dependente dos dados. ela consiste em muitas ocorrências de cada um dos vários tipos de registros internos. em que sequência física estão os registros armazenados. 3.em particular as aplicações de natureza utilitária . em certas situações excepcionais. A visão interna é descrita por meio do esquema interno. "Registro interno" é o termo ANSI/SPARC que representa a construção que temos chamado de registro armazenado (e continuaremos a usar essa última forma). e assim por diante Para encerrar lembramos que.podem ter permissão para operar diretamente no nível interno. como os campos armazenados estão representados. A visão interna é uma representarão de baixo nível do banco de dados por inteiro.3.do mesmo modo o usuário em tuna linguagem de programação de alto nível poderia ter a necessidade ocasional de descer até a linguagem assembler para satisfazer certos objetivos de funcionalidade ou desempenho. os programas aplicativos . que não somente define os diversos tipos de registros armazenados mas também especifica quais índices existem. porém.NÍVEL INTERNO O terceiro nível da arquitetura é o nível interno. é possível que sistemas futuros eventualmente sejam muito mais sofisticados em seu suporte do nível conceitual.1.sem dúvida. e não no nível externo.

examinaremos os sistemas de bancos de dados sob uma perspectiva um pouco diferente. os sistemas relacionais oferecem essa capacidade.1. consistindo em um servidor (também chamado hack end) e um conjunto de clientes (também chamados front ends). segurança e integridade cie dados. sob um ponto de vista de mais alto nível. A propósito. Naturalmente. e assim por diante. um sistema de banco de dados pode ser considerado como tendo uma estrutura muito simples em duas partes. esta arquitetura envolve certos mapeamentos: um mapeamento conceitual/interno e vários mapeamentos externos/conceitual: o O mapeamento conceitual/interno define a correspondência entre a visão conceitual e o banco de dados armazenado. Ele admite todas as funções básicas de SGBDs -definição de dados. Em particular.4.um recurso útil se diversas visões externas forem bastante semelhantes umas às outras. • O servidor é o próprio SGBD. manipulação de dados. Nesta seção. aplicações fornecidas pelo fabricante do SGBD ou por produtores independentes. Em particular. • Os clientes são as diversas aplicações executadas sobre o SGBD .3. Assim. o objetivo geral desses sistemas é fornecer suporte ao desenvolvimento e à execução de aplicações de bancos de dados. MAPEAMENTOS Além dos três níveis básicos. Portanto. ele oferece todo o suporte de nível externo. ou seja.tanto aplicações escritas por usuários quanto aplicações internas. a maioria dos sistemas permite que a definição de certas visões externas seja expressa em-termos de outras (efetivamente. o termo "servidor" neste contexto é tão-somente um outro nome para o SGBD. 3. através de mapeamentos externos/externos).2. em vez de sempre exigir uma definição explícita do mapeamento no nível conceitual . ARQUITETURA CLIENTE/SERVIDOR Descrevemos até agora neste capítulo os sistemas de bancos de dados sob o ponto de vista da cbamada ar-quitetura ANSI/SPARC. é claro que não existe nenhuma diferença entre aplicações escritas . conceitual e interno que examinamos anteriormente. o Um mapeamento externo/conceitual define a correspondência entre uma visão externa específica e a visão conceitual. No que se refere ao servidor.

Usuários finais Clientes Servidor Banco de dados .pelo usuário e aplicações internas .todas elas empregam a mesma interface para o servidor.

Processadores de linguagem natural. Ferramentas para gerenciamento de cópias ou "extração de dados". escrito em uma linguagem de geração de relatórios de nível muito alto (e finalidade especial). a finalidade das ferramentas é permitir aos usuários.embora em ambos os casos a linguagem precise ser de algum modo acoplada a uma sublinguagem de dados apropriada. criar aplicações sem ter de escrever programas em uma linguagem de programação convencional). como C ou COBOL. a qualidade das ferramentas disponíveis é. Pacotes estatísticos.computer-aided software engineering). tendo em vista que toda a importância de um sistema de banco de dados está em dar suporte à criação e à execução de aplicações. c. Qualquer solicitação de relatório pode ser considerada um pequeno programa aplicativo. e. Geradores de relatórios. Subsistemas gráficos de negócios. h.Vamos aprofundar o exame da questão de aplicações escritas pelo usuário versus aplicações fornecidas pelo fabricante: • Aplicações escritas pelo usuário são basicamente programas aplicativos comuns.tools) são aplicações cuja finalidade básica é auxiliar na criação e execução de outras aplicações! As aplicações criadas são aplicações adaptadas a alguma tarefa específica (elas podem não ser muito semelhantes às aplicações no sentido convencional. b. Processadores de linguagem de consulta. ou deve ser. Por exemplo. As ferramentas fornecidas pelo fabricante podem ser divididas em diversas classes mais ou menos distintas: a. i. ou então em alguma linguagem proprietária de quarta geração (L4G) . Observamos que. o processo de escolha do produto de banco de dados apropriado). Outras ferramentas para desenvolvimento de aplicações. em especial aos usuários finais. d. um fator preponderante na "decisão sobre o banco de dados" (isto é. Em . g. cuja finalidade é permitir que os usuários finais obtenham relatórios formatados a partir do sistema sob solicitação. f. inclusive produtos de engenharia de software auxiliada pelo computador (CASE . escritos (em geral) em uma linguagem de programação convencional de terceira geração (L3G). uma das ferramentas fornecidas pelo fabricante será um gerador de relatórios. de fato. Geradores de aplicações (inclusive processadores L4G). • Aplicações fornecidas por fabricante (chamadas frequentemente de ferramentas . Planilhas eletrônicas.

Na verdade. Linguagens de Bancos de Dados Cada SGBD . É um método para selecionar determinados registros de um banco de dados. Encerramos esta seção com uma referência para o que se segue. seguindo um critério especificado a sua escolha. servidores e clientes. existe o potencial para o processamento distribuído. Como o sistema por completo pode estar tão claramente dividido em duas partes. A linguagem SQL padrão funciona com qualquer banco de dados de estrutura relacional. O processamento distribuído significa que máquinas diferentes podem estar conectadas entre si para formar algum tipo de rede de comunicações. alteração e cancelamento nas tabelas que compõem o banco de dados de um sistema .. O SQL é considerado uma linguagem padrão para o gerenciamento de banco de dados relacionais. Qual é a função do mapeamento 3. surge a possibilidade de executar os dois em máquinas diferentes. nem mesmo é necessariamente o fator mais significativo. criação e gerenciamento de banco de dados relacionais. o SGBD em si não é o único fator que precisa ser levado em consideração. Fazer operações de inclusão. atualização.por uma variedade de razões. índices. SQL (Structured Query Language – Linguagem de consulta estruturada É uma linguagem usada para a consulta. Em outras palavras. domínios. Fazer consultas simples ou complexas em uma base de dados. de tal modo que uma única tarefa de processamento de dados possa ser dividida entre várias máquinas na rede.1. Explique os três níveis da arquitetura definida pela Ansi/Parc 2.Sistema Gerenciador de Banco de Dados . Explique a arquitetura Cliente/Servidor Capítulo 4.possui uma arquitetura interna própria. para a criação e manutenção de uma base de dados. 4. essa possibilidade é tão atraente .outras palavras. Com o SQL é possível definir tabelas. principalmente de ordem económica que o termo "cliente/servidor" passou a se aplicar a quase exclusivamente ao caso em que o cliente e o servidor estão de fato localizados em máquinas diferentes. etc. Exercícios 1.

uma unidade lógica de . logicamente. uma transferência no mundo real.2. ¾ Exemplo de DML SQL: SELECT cidade. Assim. ela começa com a execução de uma operação BEGIN TRANSACTION e termina com a execução de uma operação COMMIT ou ROLLBACK. Como você pode ver.1. Exemplo: ¾ Exemplo de DDL SQL: CREATE TABLE cliente ( nome cidade rua ) 4. a quantia de R$100 temporariamente ficará faltando entre as duas atualizações.de fato envolve duas atualizações separadas no banco de dados. não deverá afetar a soma total de reais nas respectivas contas. VARCHAR(35). rua FROM custumer WHERE nome = “João Capítulo 5.4. mas. Transações 5. Considere a possibilidade da existencia de uma transação cuja finalidade é transferir a quantia R$100 da conta 123 para a conta 456. Além do mais. É comumente utilizada para busca de informação e modificações no banco de dados. no sentido de que não reflete um estado de coisas válido no mundo real.3. Linguagem de Definição de Dados (DDL) É a linguagem utilizada para criar o esquema de banco de dados. TRANSAÇÕES Uma transação é uma unidade lógica de trabalho. O resultado de uma DDL pode ser um conjunto de tabelas. Linguagem de Manipulação de Dados (DML) VARCHAR(50). de uma conta para outra. em nosso exemplo. VARCHAR(30) É a linguagem que permite aos usuários do banco de dados manipularem os dados. o banco de dados está em um estado incorreto entre essas duas atualizações."transferir dinheiro de uma conta para outra" . É através deste tipo de linguagem que os usuários manipulam os dados. o que presumivelmente deveria ser uma operação indivisível . a definição de indices (método de acesso) ou de restrições de integridade referencial.

Se todas as respostas foram "OK". UNDO : /* término bem sucedido */ /* término mal sucedido */ Vejamos como ele funciona. UPDATE CONTA 123 { SALDO := SALDO . que é uma transação. a decisão será "cancelar". o gerenciador de recursos terá agora um registro permanente do trabalho que realizou para a transação. essa decisão será COMMIT. END IF . aconteça o que acontecer daí por diante. Supondo-se que a gravação forçada seja bem-sucedida.ou seja. ela geralmente envolve uma sequência de várias dessas operações. a instrução no âmbito do sistema que ela emite é COMMIT. cuja finalidade é transformar um estado correto do banco de dados em outro estado também correto. e será capaz de completar o COMMIT de suas atualizações ou cancelá-las. • COMMIT: Depois de receber respostas de todos os participantes. BEGIN TRANSACTION. assim. o gerente de recursos responderá agora "OK" ao coordenador. cada gerenciador de recursos envolvidos . isso significa que cada participante do processo . UPDATE CONTA 456 { SALDO := SALDO + $100 } . caso contrário. e cada participante deverá então . o coordenador força a gravação de uma entrada em seu próprio log físico. ele instrui todos os gerenciadores de recursos a ficarem prontos para "seguir qualquer caminho" na transação. Ao receber essa requisição de COMMIT. Para simplificar. COMMIT . para o armazenamento não volátil.deve forçar todas as entradas de log de recursos locais utilizados pela transação em seu próprio log físico (isto é. END IF . suponha que a transação tenha concluído com sucesso seu processamento de banco de dados. o coordenador executa o seguinte processo em duas fases: • Preparar: Primeiro. sem necessariamente preservar a correção em todos os pontos intermediários.trabalho. IF ocorreu algum erro THEN GO TO UNDO . Na prática. GO TO FINISH . De qualquer forma.$100 } . como for preciso). ele responderá "Não OK". IF ocorreu algum erro THEN GO TO UNDO . não envolve necessariamente uma única operação sobre o banco de dados. se qualquer resposta tiver sido "Não OK". e não ROLLBACK. registrando sua decisão a respeito da transação. Em vez disso. o coordenador informará sua decisão a cada participante.

esse é o protocolo. Se o encontrar.2. Assim.fazer o COMMIT ou cancelar a transação de modo local. Resumindo: Atomicidade: Ou todas as operações da transação são refletidas corretamente no banco de dados ou nenhuma o será. 5. para todo par de transações 1 e 2. sem execução concorrente de outra transação) preserva a consistência do banco de dados. Propriedades de Transações As transações possuem quatro propriedades importantes. o sistema garante que. cada transação não toma conhecimento do outras transações concorrentes no sistema. mais especificamente ela é tratada por um componente chamado de componente de gerenciamento de transações. Mesmo asseguradas as propriedades de consistência e de atomicidade para cada • • . então o processo de COMMIT de mas fases poderá continuar do ponto em que foi interrompido. A idéia básica por trás da garantia da atomicidade é a seguinte. Assegurar a permanência da consistência após uma transação em particular é de responsabilidade do programador da aplicação que codifica a transação. se a transação não se completar. • Isolamento e Durabilidade. e mais uma vez o processo poderá ser concluído adequadamente. conforme tiver sido instruído. Se não achar o registro. Consistência. Assegurar a atomicidade é responsabilidade do próprio sistema de banco de dados. ele presumirá que a decisão foi "cancelar". Consistência: A execução de uma transação isolada (ou seja. os valores antigos sãos restabelecidos para fazer com que pareça que ela nunca foi executada. Isolamento: Embora diversas transações possam ser executadas de forma concorrente. O sistema de banco de dados mantém um registro (em disco) dos antigos valores de quaisquer dados sobre os quais a transação executa uma gravação e. que são chamadas 6 "propriedades ACID": Atomicidade. Observe que cada participante tem de fazer o que lhe diz o coordenador na Fase 2 . ou que 2 começou sua execução após 1 terminar. Essa tarefa pode ser facilitada por meio do teste automático dos requisitos de integridade. o procedimento de reinicialização procurará o registro de decisão no log do coordenador. Se o sistema falhar em algum ponto durante o processo geral. Observe também que o aparecimento do registro de decisão no log físico do coordenador assinala a transição da Fase l para a Fase 2. 1 tem a sensação de que 2 terminou sua execução antes de 1 começar.

A serialização das escalas geradas por transações concorrentes pode ser garantida por meio de um entre vários mecanismos chamados de esquemas de controle de concorrência.transação. recuperação Assegurar a durabilidade é responsabilidade de um componente do sistema de banco de dados chamado de componente de gerenciamento de 5. Então. O componente de gerenciamento de controle de concorrência do banco de dados é o responsável pela manipulação dos esquemas de controle da concorrência. é necessário que o sistema controle a interação entre as transações concorrentes.2. quando diversas transações concorrentes são executadas. A propriedade de durabilidade garante que. O . Há várias noções diferentes de equivalência que conduzem aos conceitos de serialização de conflito e serialização de visão. Assegurar a propriedade de isolamento é responsabilidade de um componente do sistema de banco de dados chamado componente de controle de concorrência. Portanto. Como uma transação é uma unidade que preserva a consistência.1. resultando em um estado inconsistente. Transações Concorrentes Quando várias transações são executadas de modo concorrente no banco de dados. as mudanças que ela faz no banco de dados persistem. suas operações podem ser intercaladas de modo inconveniente. A propriedade de isolamento de uma transação garante que a execução simultânea de transações resulte em uma situação no sistema equivalente ao estado obtido caso as transações tivessem sido executadas uma de cada vez. até mesmo se houver uma falha de sistema após a transação se completar. em qualquer ordem. Do sistema que garante essa propriedade diz-se que ele garante a serialização. exigimos que qualquer escala produzida pelo processamento concorrente de um conjunto de transações tenha um efeito equivalente a uma escala produzida quando essas transações são executadas seqüencialmente em alguma ordem. uma execução seqüencial das transações garante a preservação da consistência. • Durabilidade: Depois da transação completar-se com sucesso. todas as atualizações realizadas no banco de dados persistirão. a consistência dos dados não pode mais ser garantida. até mesmo se houverem falhas no sistema. uma vez completada a transação com sucesso.

O protocolo garante a serialização. mas não está livre de deadlocks. ela mantém o timestamp antigo quando reiniciada. se o timestamp da transação T1 é menor que o da transação T2.3. Assim. o esquema garante que a escala de execução produzida seja equivalente a uma escala serializada na qual a transação T1 aparece antes da transação T2. O esquema da ordenação por timestamp garante a serialização pela seleção da ordem de execução entre pares de transações. Os esquemas de esperarmorrer e de ferir-esperar são dois esquemas com base em preempção. o gráfico de espera contém um ciclo. Na ausência de informações a respeito do tipo de acesso que será feito no item de dados. Um único timestamp é associado a cada transação no sistema. é construído um gráfico de espera. Isso é feito revertendo a transação sempre que a ordem for violada. Um modo de evitar deadlocks é usando a preempção e o rollback de transações. Bloqueio O protocolo de bloqueio é um conjunto de regras que estabelecem quando uma transação pode bloquear e desbloquear cada um dos itens de dados do banco de dados. o protocolo de bloqueio em duas fases é tanto necessário quanto suficiente para garantia da serialização. 5. Se uma transação é revertida. RECUPERAÇÃO DO SISTEMA . Vários protocolos de bloqueio não são resistentes a deadlocks. Para fazê-lo. Quando o algoritmo de detecção identifica um deadlock. Os timestamps das transações determinam a ordem de serialização. O protocolo do bloqueio em duas fases permite que uma transação bloqueie um novo item de dado somente até desbloquear o primeiro deles.componente de gerenciamento da recuperação de um banco de dados é o responsável por assegurar as propriedades de atomicidade e durabilidade das transações. e somente se. Isso é feito revertendo uma ou mais transações para quebra do deadlock. Outro método para o tratamento de deadlocks é usar o esquema de detecção de deadlock e recuperação. o sistema precisa recuperar-se. Esses timestamps são usados para decidir se uma transação deverá ser revertida ou deverá esperar. marcamos um único timestamp para cada transação. Um sistema está em estado de deadlock se. Para controla a preempção.

5. como uma entrada inadequada ou um dado não encontrado. erro lógico ou erro de sistema. pode ser causada pela que bra do cabeçote. Falha de disco: Esta falha leva à perda do conteúdo do disco. Causas comuns desta falha são mau funcionamento de hardware ou bug no software de banco de dados.Falhas em Bancos de Dados Pode-se classificar as falhas da seguinte forma: Falha de transação: Esta falha pode ser causada por dois tipos de erro. sem afetar o conteúdo do armazenamento nãovolátil. e ações após a falha. Um mecanismo de recuperação que restaure o banco de dados para um estado consistente existente ante s da falha é. Um sistema de banco de dados deve garantir propriedades como atomicidade e durabilidade de suas transações mesmo que falhas ocorram. como no caso de um deadlockdiz-se que ocorreu um erro de sistema. Queda do sistema: Esta falha causa a perda do conteúdo do armazenamento volátil. que efetivamente recuperam o conteúdo do banco de dados para um estado consistente. Os algoritmos de recuperação em banco de dados são responsáveis por assegurar a consistência do banco de dados e a atomicidade das transações. O problema está em modificar o banco de dados sem que a transação será de fato efetivada.2. Estas variam de falta de energia à erros de software. portanto. Erro lógico ocorre quando uma condição interna impede a execução normal da transação. Quando o sistema entra num estado inadequado.Informações podem ser perdidas de um sistema computacional devido à ocorrência de falhas. Para isto eles devem efetuar ações durante o processamento normal de uma transação garantindo que haja informação suficiente pra pe rmitir a recuperação.1. Recuperação e Atomicidade Ao ocorrer uma falha durante uma transação. 5. garantindo a atomicidade da transação e a durabilidade. soluções do tipo re-executar ou ignorar poderão levar o banco a um estado inconsistente.3.3. para ndo o processamento da transação. . impedindo a execução normal de uma transação. de extrema importância.

5. sendo executado o rollback. manter um estado consistente dos dados. marcas no log onde todas as operações de escrita anteriores ao checkpoint já foram efetivadas em disco. Isto permitir que.3. 5. a recuperação de dados utilizando o log pode ser muito demorada. Logo só é preciso refazer as transações concluídas que foram feitas depois da criação do checkpoint. Abaixo estão descritas duas técnicas de realizar essa gravação. mantendo o identificador da transação. O log ou journal documenta as atividades em um banco de dados. Para manter a atomicidade devese mandar todas as alterações para um armazenamento estável. commit – Marca o fim de uma transação abort –Marca o aborto de uma transação. de forma que caso ocorra uma falha que interrompa uma transação. Existem duas políticas de gravação quando se utiliza o log. Os registros do log são gravados antes da modificação no banco. .4. Recuperação utilizando log Recuperação baseada em log é técnica mais usada para gravar modificações em um banco de dados.Para evitar inconsistências é necessário que todas ou nenhuma alteração relacionadas a uma transação sejam feitas no banco. Checkpoints Como refazer todas as operações do log é custoso e o tamanho do log tende a crescer rápido. todos os registros de log residentes em memória são gravados em armazenamento estável. restaurando o estado anterior. update – Marca uma alteração em registro. o banco de dados possa retornar a um estado consistente. há algumas operações primitivas que podem ser registradas: start – Marca o inicio de uma transação. sem modificar o banco de dados. não sendo necessário refazê-las. junto com o identificador desta. Durante a criação do checkpoint.3. o log de atualizações documenta todas as alterações de registros. Uma solução para esse problema é a criação de checkpoints. apesar de falhas. seguido de blocos de buffer modificados. Em especial.3. Muitas transações já foram efetivadas em disco. No log. do registro e valores atuais e/ou valores anteriores.

o operador digite 400. Vamos pensar no seguinte exemplo: Vamos supor que ao invés de lançar no banco que um determinado funcionário trabalhou 40 horas por semana. Qual seria uma forma de evitar que isto aconteça? Basta definir através de restrições que a carga horária de um funcionário só poderá variar entre 0 e 40 horas semanais. Capítulo 6. Integridade de Dados Integridade de dados é a garantia de que estes dados estão realmente corretos. Cada remessa deverá envolver um fornecedor existente. se o tipo de dado estiver incorreto. Ainda existirá uma margem de erro.2. isto evita que o operador lance um código inexistente na hora de enviar o pedido. Integridade de Domínio A integridade de domínio nada mais é do que a integridade do campo como o tipo de dados correto. Estes mecanismos foram criados para dar integridade aos campos. default´s. se permite null ou not null.1. É impossível evitar 100% de erros por parte dos operadores de dados.2. é armazenado o registro de log que marca a conclusão do checkpoint. Outra regra para que não possa haver dois fornecedores com o mesmo código. . pode haver ali um risco que quebre a integridade. existem algumas técnicas bastante avançadas para evitar que isto aconteça. Os tipos de dados também são caracterizados como integridade de domínio. 6. Tipos de restrições de integridade 6.Somente após isto. Caso alguém altere o código de um fornecedor. devem ser comparados todos os campos que já existem no banco para saber se não há outro com este código ou se este fornecedor já existe com outro código. O check aqui é em nível de campo apenas por exemplo: Tenho um campo Meses e quero que entre valores de 1 até 12 somente. etc. A estas regras chamamos de restrições de integridade. porém. ou com mais posições que o necessário. Outro exemplo é o seguinte: Definir uma regra para que todos os fornecedores de uma determinada localidade tenham status X. check. ou seja. porém a delimitação impede erros gritantes e diminui as possibilidades.

no ato da criação da tabela crio um check.2. isto é conseguido através das Primary Keys. Medico2.2. uma tabela sem PK é uma tabela sem integridade de entidade. Função Secretária Salário 500. são as Foreign Keys. a integridade referencial consiste também em check em nível de tabela e não em nível de campo. eu apenas consigo criar Foreign Keys a partir de uma Primary Key. para isto preciso de um check em nível de tabela.: Departamento Empregado Matr(PK) 100 Nome Ana Endereço R. por exemplo: Tenho uma tabela com 2 campos Medico1. Ex. e quero que um dos campos sempre seja preenchido não CodDep(PK) D2 D1 D5 Nome Produção Custos Pessoal MatrGerent 210 105 NULL importa qual.00 Depart(FK) D1 Branco . 12.2. 6. A. nada mais é que eu aceitar valores em minha entidade que estão em outra entidade.3 Integridade Referencial A integridade referencial é mais conhecida. Pedro I. isto é possível a partir da integridade de entidade.6. Integridade de Entidade A integridade de entidade nada mais é que a integridade da tabela.

00 D1 Liberdade 108 210 105 André Paulo Sônia R.: "Nenhum empregado pode ganhar mais que seu gerente" "O número de horas máximo que um empregado pode trabalhar num projeto é 40 horas". Operações de atualização em relações 6. Silva. um conjunto de atributos de uma relação R1 é uma chave estrangeira se satisfaz às seguintes regras: • Os atributos da chave estrangeira têm o mesmo domínio dos atributos da chave primária de outra relação R2. Itália. Nações R. Estados R. B. Oliveira. 'Engenheiro'.250 Pedro R. 24.nome.980'. 6.'D1'> => viola a restrição de chave.3. A.salário.00 2500. J. • Um valor da chave estrangeira numa linha l1 de R1 possui o mesmo valor da chave primária para alguma linha l2 em R2 ou é NULO.matr_supervisor) Ex. Técnico Engenheiro Engenheiro 950. '1. 'Maria'. Pará. • Ex. Inserir <'102'. • A integridade referencial estabelece que todo valor de chave estrangeira numa relação deve corresponder a um valor de chave primária de uma segunda relação ou deve ser nulo. null. Inserir <'100'.00 1810. 98. Engenheiro 1500.'André'. .'D2'> => é aceito sem problemas 2. '950'. 33.Inserção 1.null. B.00 D2 D2 D1 Form alme Branco nte.: Empregado(matrícula.1. 76. 'Técnica'.3.

3.) O que fazer quando uma violação ocorrer numa remoção? • • Rejeitar a remoção Dar o efeito cascata na remoção.'Rua 4'. (empregados que estão alocados neste departamento.'D1'> => viola restrição de integridade de entidade. O que fazer quando se detectar uma violação de integridade? • • Rejeitar a inserção (podendo explicar o porquê) Tentar corrigir a anomalia para depois inserir. 6.'980'. Remover da tabela departamento a linha com CodDep = 'D1'.3.Remoção 1.null. 4. 2.3. remoção aceita sem problemas.'Engenheiro'. removendo todas as linha referenciadas por aquela linha que está sendo removida. 6.'1.'Cecília'.950'.2. uma operação de remoção poderá violar apenas a integridade referencial.'Técnico'. Remover da tabela empregado a linha com matrícula = '100'. • Modificar os atributos referenciados para novos valores ou nulos (caso não façam parte da chave primária). • Dos três tipos de restrições de integridade discutidas. Modificar o salário do empregado com matrícula='250' . Inserir <null.'B6'> => viola a restrição de integridade referencial.3. => viola a regra de integridade referencial. Modificação 1. Inserir <'108'.'Mauro'.

Modificar a matrícula do empregado '100' para '250' => viola regra de integridade de chave. Bernardo Sayão. Exercícios: Seja as duas tabelas seguintes: Curso Codcurso(PK) C1 C2 C3 C4 C5 Descrição Sistemas de Informação Educação Física Farmácia Administração Pedagogia CodUnid 156 156 156 156 156 Aluno RA(PK) 1050 1123 Nome Rafael Bandeira Ricardo Azevedo Endereço Rua das Camélias.=> operação aceita sem problemas. 76 R. Modificar o número do departamento da linha de empregado com matrícula '210' para 'D1' => operação aceita sem problemas. 156 Curso C1 C2 . Modificar o número do departamento de empregado '108' para 'D9' => viola a integridade referencial 4. 3. 2.

‘Rua 107. 12’ .e.Alterar o endereço do Aluno cujo RA é 1112. ‘C8’) 2. Pascal. ‘José Maria Rocha’.Inserir (‘1175’. um procedimento permite a passagem de parâmetros de entrada e de saída. mas que são guardados no servidor.Inserir (‘1012’. ‘Rua das rosas. .Inserir (null. ‘Ana Maria Bernardes’. ‘Silvana Andrade’. informe qual é o tipo de restrição de integridade que a mesma está violando: 1.Alterar o código do curso do aluno com RA 1050 para C3 8. João Pinheiro. que pode ser um outro procedimento. aceitando valores e devolvendo algum tipo de resultado à entidade que o invocou.1896 1475 Mirela Domigues Juliana Didone R. como qualquer subprograma. Carmópolis. ‘Sistemas de Informação´. ‘Av.Alterar o código de curso C2 para C16 6. ‘C4’) 4. 10. informe se as alterações abaixo são possíveis nas tabelas alunos e cursos. null) 6.Deletar (‘C1’. 33 R. C1 C4 1112 Carlos Eduardo Rocha R. apto 105B. Basic. ´156’) 5. Java. Belo horizonte. As Stored procedures retornam um valor de status indicando se aconteceu um erro. 7. 75 C3 Diante destas informações. Roma. ‘João da Silva’.).Deletar o aluno cujo RA é 1123. C. um gatilho ou mesmo uma aplicação externa cliente. Isto é. São basicamente blocos de instruções SQL compiladas num único plano de execução. ‘C10’) 9. 350’ . Aceitam parâmetros de entrada e retornam resultados.Inserir (‘1112’. ‘Rua Afonso Pena. 52’ . 115’ . ‘C3’) 3. 197. etc. Caso não seja possível. 46’ . e qual foi.Inserir (‘1796’.3. ‘Carlos Santana’. ‘Rua do Calvário. Procedimentos Armazenados (Store Procedures) Stored Procedures são semelhantes a sub-rotinas ou subprogramas desenvolvidos noutras linguagens de programação (p.

Propósitos/Vantagens. os stored procedures conseguem ser mais rápidos. .4. NroParcelas = NroParcelas – 1 where DiaVencimento = day(getdate()) • Chamada de um storedprocedure exec PagaEmpréstimo 6. mesmo que não tenham permissão para utilizar o mesmo código diretamente através de um editor. pode ser invocado várias vezes num programa. Se uma operação tem muitas instruções T-SQL e/ou é executada muitas vezes. Exemplo – débitos diários de parcelas de empréstimos create procedure PagaEmpréstimo as update Empréstimos set ValorTotal = ValorTotal – ValorParcela. DELETE ou UPDATE for executado em uma tabela do banco de dados.Segurança. Pode ser dada permissão aos utilizadores para executar um stored procedure. mas também servidor de programas para a manipulação dos dados. A execução destes programas no seio de um servidor permite reduzir substancialmente o tráfego de rede provocado por aplicações que solicitem ao servidor a execução de instruções SQL. . O servidor passa a ser assim não só servidor de dados. . .Execução mais rápida. pois são compilados e otimizados no momento da sua criação. . Pode também ser alterado sem que haja necessidade de alterar em todos os lados.1. Um stored procedure após ser guardado na BD.Diminuição do tráfego na rede.3.6. Gatilhos (Trigger) Um Trigger é bloco de comandos Transact-SQL que é automaticamente executado quando um comando INSERT .Programação por módulos.

00) begin print ‘salário injusto para o estado civil!’ exec CorrigeSalário end b) Se a data de retorno do vôo for anterior à data de partida. rotinas de segurança e consistência de dados . emitir uma mensagem e não completar a transação. A ação que o Trigger vai executar ( Geralmente um bloco de códigos SQL ) Exemplo: Mostrar ao usuário que o valor do salário não é compatível ao estado civil do funcionário. desta forma estes controles deixam de ser executados pela aplicação e passam a ser executados pelos Triggers em determinadas situações : • • • Mecanismos de validação envolvendo múltiplas tabelas Criação de conteúdo de uma coluna derivada de outras colunas da tabela Realizar análise e e atualizações em outras tabelas com base em alterações e/ou inclusões da tabela atual A criação de um Trigger envolve duas etapas : 1. restrições de acesso .Os Triggers são usados para realizar tarefas relacionadas com validações . a) create trigger SalárioInjusto after insert. UPDATE) 2. update on Empregados if exists (select * from Empregados where estadoCivil = casado and salário < 250. create trigger AumentoSalário before update on Empregados referencing NEW salário as SalárioNovo when salário > SalárioNovo (Rollback Transaction) . c) Trigger para executar erro em aumento de salário. Um comando SQL que vai disparar o Trigger ( INSERT . DELETE .

Esquemas de segurança 7. a destruição e a leitura (roubo) não-autorizada de informações. principalmente. Considerando a sua importância no mundo das aplicações científicas e de negócio é imprescindível prover a proteção dos dados e informações armazenados. Tais considerações previnem a perda da integridade através da introdução acidental de inconsistência. quando se trata de “segurança de SGBD’s” surge a preocupação com a má utilização dos dados armazenados. mas não modificação dos dados.read: leitura.1. A proteção de um sistema de banco de dados torna-se uma tarefa bastante difícil quando se trata de prevenir ataques insidiosos. Diversas óticas devem ser consideradas. . Abaixo segue uma breve explanação sobre os diversos níveis de . Em especial. resultando em alteração ou destruição insidiosa das informações. Níveis de permissão para manipulação de dados e informações (DML’s): . Segurança em Bancos de Dados Bases de dados são as fundações de qualquer negócio eletrônico.insert: inserção. A escolha ou configuração errada de níveis de acesso a usuários pode resultar em resultados desastrosos tanto do ponto de vista funcionalidade como. tais como: manutenção da integridade referencial e semântica da base. Autorização A correta concessão de permissões aos usuários é um ponto fundamental no esquema de segurança de uma aplicação que faça uso de banco de dados. recuperação após falhas e anomalias em processos concorrentes. com o alto valor agregado das informações e com a introdução intencional de inconsistências causadas por má fé dos envolvidos no processo e/ou por acessos não autorizados. sistema de gestão financeira ou empresarial. 7. mas não a modificação dos dados.1. do ponto de vista da segurança.Capítulo 7. Manter a integridade nestes casos significa prevenir a alteração.1. Deste ponto em diante o termo “segurança” será usado para se referir à manutenção da integridade perante ataques insidiosos. permissão.

nenhuma delas ou um subconjunto das mesmas. colhendo informações em função dos dados da base. Outros usuários poderiam ter permissão de insert para determinados tipos de dados como cadastro de funcionários. update e remove para todas as partes da aplicação.1. é prudente salientar a necessidade de um usuário como responsável pela definição e modelagem da base. Além de todos os usuários de manipulação de dados.update: modificação.alteration: permite adição ou remoção de atributos de uma relação . Tais permissões podem ser concedidas a usuários (ou grupos de usuários) separadamente ou em conjunto. Usuários de leitura da base.drop: permite a remoção de relações Numa aplicação de porte deve existir uma distinção bastante clara entre os diversos níveis de acesso para cada usuário bem como o papel de cada usuário no sistema. companhia ou projeto. departamentos. Concluindo: usuários devem ter acesso estritamente ao que precisam ter acesso. concedidas a eles próprios. utilizados para realizar consultas.. existe a necessidade de determinados usuários possuírem apenas privilégios de read sobre determinado conjunto de dados ou sobre toda a base de dados. Imaginando uma aplicação como um Enterprise Resource Planning (ERP).resource: permite criar novas relações . Níveis de permissão para manipulação da definição da base (DDL’s) . sendo que um usuário pode ter todas as permissões. usualmente. controle de finanças.2. não devem necessitar de permissão de criação de visões ou gatilhos. 7. ou subconjuntos das mesmas.index: permite criar índices na base . mas conhecido como concessão de privilégios. Consiste em permitir que usuários concedam a outros usuários as permissões. criando assim . mas não a remoção dos dados. pode ser necessária a permissão de conceder permissões. por exemplo. enquanto outro conjunto de usuários possuiria nível de acesso de insert. A negação das permissões também é possível. .delete: remoção dos dados. Concessão de privilégios De acordo com as necessidades organizacionais de cada aplicação.

algoritmos fracos podem ser facilmente quebrados. Uma visão pode reunir fragmentos de dados de diversas relações montando uma relação resultante. delete. Este modelo de segurança de dados é bastante útil devido à sua facilidade de implementação e sua funcionalidade. Entretanto. muitas vezes complexas.uma rede. bastante complexa sem que um usuário tenha acesso a mais do que deveria. Visões O mecanismo de criação de visões parciais ou agregados de informações da base permite ao administrador de uma base de dados conceder permissões sobre determinado subconjunto de uma relação.4. Embora uma consulta ou ação (insert. estejam criptografadas na base de dados e apenas a aplicação responsável pelo acesso ao sistema possua a maneira de reconhecer os dados codificados. incorrendo em vulnerabilidade do SGBD. update) sobre uma relação possa ser negada a um usuário. determinados tipos de aplicações podem ter necessidade de criptografar dados altamente relevantes para que apenas leitores habilitados a descriptografá-los estejam aptos a fazer uso da informação. em alguns casos. Criptografia Mesmo com todos os esquemas de segregação de informação distribuindo usuários em grupos e níveis de acesso. de certa maneira. por exemplo. Da mesma forma. a concessão de uma visão permite que o mesmo só possua acesso o que é estritamente necessário. de propagação de permissões sobre elementos da base de dados. Recomenda-se que senhas de usuários. 7.3. inviável o seu uso. A tarefa de um administrador é saber distinguir bem entre a necessidade de sigilo do dado e a funcionalidade da aplicação. algoritmos complicados de criptografia podem gerar uma excessiva sobrecarga sobre o sistema de maneira a tornar.1. Há um vasto número de técnicas de criptografia usando-se de avançados recursos tecnológicos e matemáticos para fornecer uma encriptografia segura e eficiente para dados na base. Uma boa técnica de criptografia deve ter as seguintes propriedades: . deixando o sistema mais seguro sem perda de poder de ação por parte do usuário semibloqueado. 7.1.

. invasores podem fazer uso de técnicas cada vez mais engenhosas para encontrar brechas de segurança e fazer mau uso de acesso indevido. Se um usuário mal intencionado transgride a segurança do SGBD e acessa a base com determinados privilégios.relativamente simples de ser decodificada pelos usuários autorizados . Cavalos de Tróia: imagine uma situação em que um usuário mal intencionado crie ou altere procedimentos armazenados na base para colher informações sobre mudanças de senha na base de dados. Muitos produtos comerciais apresentam brechas que só vão sendo corrigidas ao longo do tempo e do ganho de maturidade do produto. Diversas outras vulnerabilidades existem e outras ainda estão por serem descobertas. Por mais que se aplique mecanismos de segurança. como chamadas ao Shell do sistema. O que se pode fazer é tomar medidas que aumentem o custo tanto em dinheiro como em tempo e dificuldade de se atacar um determinado sistema. Vulnerabilidades comuns Falta de maturidade em características de segurança: os SGBD’s possuem um processo gradativo de suporte a segurança. para que a tentativa de invasão seja praticamente inexeqüível. o que permite ao usuário definir senhas fáceis de serem .extremamente difícil para um intruso quebrar a chave de codificação e descobrir o real significado dos dados codificados 7.2. A cada mudança de senha o SGBD enviaria informações de usuário/senha para o invasor. Brechas para ataque em sistemas operacionais: existem SDBD’s que provêm funcionalidades que permitem acessar o sistema operacional. O invasor esperaria então até ocorrer uma mudança na senha de administrador da base e ser notificado da senha de ‘sa’. na maioria dos SGBD’s não existe um sistema verificador de senhas fracas. Gerenciamento de senhas: quebradas. essas funcionalidades podem incorrer em perigo à integridade de todo o sistema operacional.

A maioria dos aplicativos SGBD’s atualmente trata com bastante seriedade a questão da segurança. Diante desta configuração há mais risco de ataques e roubos de informações dado que a disponibilidade dos sistemas está cada vez maior. escolha e proteção de um sistema operacional seguro. Conclusão Os requisitos de segurança vêm crescendo a cada dia. independentemente de qual for o produto escolhido como servidor de dados. empresa ou corporação decidir por alternativas que mais lhe satisfaçam em relação a custo e benefício. haja vista o aumento exponencial da oferta de serviços no ambiente coorporativo e comercial.3. Cada fornecedor trata do problema e organiza o seu esquema de segurança da maneira como acredita ser a mais conveniente mas. é importante salientar a importância de políticas educacionais fortes frente aos usuários.7. entre outras ações que venham a somar ao esquema de segurança fornecido pelo fabricante da base e não simplesmente delegar o cuidado com a proteção ao SGBD. diante das mais diferentes necessidades e níveis de proteção aos dados cabe a cada entidade. A necessidade de segurança em um ambiente de risco como o citado é irrevogável e. administração correta do SGBD. .