SGDB como uma Interface

Segundo Silberschatz,

O principal objetivo de um DBMS é fornecer uma maneira de recuperar informações de um banco de dados que seja tanto conveniente quanto eficiente.

Note bem: SGBD fornece uma maneira conveniente e eficiente. A conveniência é obtida por uma interface comum e padronizada. Isso é conseguido com o uso do SQL. Por sua vez, a eficiência tem relação com velocidade de recuperação dos dados. Um SGBD é desenvolvido por uma equipe de programadores especializados no assunto. Com isso, os SGBD’s tendem a ser mais velozes que algoritmos desenvolvidos pelos próprios programadores. Por isso, dizemos que um SGBD provê uma interface conveniente e eficiente para acesso aos dados.

Segundo Navathe, um SGBD facilita o processo das seguintes ações:

  • Definir um banco de dados envolve especificar os tipos, estruturas e restrições dos dados a serem armazenados. A definição ou informação descritiva do banco de dados também é armazenada pelo SGBD na forma de catálogo ou dicionário chamado metadados.
  • A construção do banco de dados é o processo que envolve armazenar os dados em algum meio controlado pelo SGBD.
  • A manipulação de um banco de dados inclui funções como consulta ao banco de dados para recuperar dados específicos, atualização do banco de dados para refletir mudanças no minimundo e geração de relatórios com base nos dados.
  • O compartilhamento de um banco de dados que permite que diversos usuários e programas acessem-no simultaneamente

Assim, memorize que um SGBD provê mecanismos para:

  • Definição do Banco do Dados
  • Construção efetiva do Banco de Dados
  • Manipulação dos dados
  • Compartilhamento de acesso aos dados

A definição está ligada a especificação das estruturas do banco de dados e suas restrições. Por exemplo, em um banco de dados relacional é preciso definir quais serão as tabelas e quais tipos dados podem ser inseridos nelas. A construção, como nome sugere, é a materialização do banco de dados. Ou seja, é quando os dados são inseridos de fato no banco. A manipulação está ligada as operações do dia a dia em um banco de dados. Ou seja, inserir, consultar, atualizar e remover dados da base. Por fim, o SGBD controla o acesso ao banco de dados. Esse é um aspecto de segurança. Assim, por exemplo, o SGBD irá definir que somente um determinado grupo de usuários poderá ter acesso a uma determinada base de dados.

CESPE

(CESPE/Técnico/TRT 5/2008) Um SGBD pode ser definido como uma aplicação ou conjunto de aplicações que permite ao usuário criar, definir e manter uma base de dados, além de controlar o acesso ao mesmo.

Certo.
O SGBD é um software construído para facilitar as atividades de definição, construção e manipulação de um banco de dados. Além disso, o SGBD provê o controle do acesso e a integridade dos dados.

(CESPE/Técnico/SERPRO/2013) O SGBD é um software construído para facilitar as atividades de definição, construção e manipulação de um banco de dados.

Certo.
A definição refere-se à definição das estruturas do banco, a construção refere-se a criação do banco de dados em si e a manipulação está ligada as operações para inserir, remover, recuperar e alterar dados do banco de dados.

Segurança e Proteção

O SGBD controla o acesso ao banco de dados. Esse é um aspecto de segurança. Assim, por exemplo, o SGBD irá definir que somente um determinado grupo de usuários poderá ter acesso a uma determinada base de dados.

Para Silberschatz,

O sistema de banco de dados precisa garantir a segurança das informações armazenadas, apesar de falhas de sistema ou de tentativas de acesso não autorizado. (grifo nosso)

Isso é o que Navathe chama de proteção. Segundo o autor,

Outras funções importantes fornecidas pelo SGBD incluem proteção do banco de dados e sua manutenção por um longo período. A proteção inclui proteção do sistema contra defeitos (ou falhas) de hardware e software e proteção de segurança contra acesso não autorizado ou malicioso. Um banco de dados grande pode ter um ciclo de vida de muitos anos, de modo que o SGBD precisa ser capaz de manipular o sistema, permitindo que ele evolua à medida que os requisitos mudam com o tempo. (grifo nosso)

Assim, das definições acima, percebemos que o SGBD tem ainda duas funções adicionais: proteção e manutenção.

A proteção divide-se em dois tipos. O primeiro tipo é relativo a questões de recuperação dos dados em caso de defeitos. Por exemplo, se parte dos dados de HD for corrompido, o SGBD será capaz de restaurar o banco de dados? O segundo tipo de proteção é em relação ao acesso. É o que temos chamado de controle de acesso. Ou seja, a proteção nesse caso tem relação com a confidencialidade/sigilo das informações. Somente quem tem direito de ter acesso aos dados deve poder acessar esses dados. Por fim, note que a proteção também pode ser chamada de segurança.

CESPE

(CESPE/Técnico Judiciário/TRE AL/2004) O controle de acesso deve dispor de recursos que possibilitem selecionar a autoridade de cada usuário, de forma a garantir o acesso apenas aos recursos que lhe são destinados.
Certo.

Uma das funções do SGBD é fazer o controle de acesso. O controle de acesso começa verificando quem pode ou não acessar uma determinada base de dados. Além disso, ele controla o que pode ser feito. Ou seja, quais tabelas e dados podem ser lidos, apagados e/ou alterados por um determinado usuário.

(CESPE/Analista Judiciário/TJ SE/2014) Os dados físicos de um banco de dados podem ser acessados diretamente por meio de qualquer sistema, sem a necessidade de utilização do SGBD.
Errado.

Uma das funções do SGBD é prover o controle de acesso. Assim, somente usuários e programas autorizados podem ter acesso a base de dados. Mesmo que a base de dados fosse acessível, o programador precisaria praticamente reconstruir um SGBD para pode manipular os dados do banco de dados.

(CESPE/Técnico Judiciário/STJ/2004) Restrições de segurança, que são funções integrantes do sistema operacional, não são aplicadas por meio de recursos próprios de um SGBD.
Errado.

A segurança corresponde a proteger os dados contra usuários não autorizados. O sistema operacional faz isso no nível do sistema de arquivos. O SGBD protege o acesso aos dados no nível do banco de dados. Logo, o SGBD também aplica restrições de segurança.

(CESPE/Oficial de Inteligência/2004) O provimento de funcionalidades de backup e recuperação é uma das responsabilidades dos SGBDs.
Certo.

Segundo Navathe,

Um SGBD deve prover facilidades para a restauração de falhas de hardware ou de software. O subsistema de backup e recuperação dos subsistemas do SGBD é responsável pela recuperação dessas falhas. Por exemplo, se um sistema de computador falhar no meio de uma transação complexa de atualização, o subsistema de recuperação é responsável por garantir que o banco de dados seja recolocado no mesmo estado em que estava, antes do início da execução da transação. Alternativamente, o subsistema pode assegurar que a transação seja resumida do ponto em que foi interrompida — sendo assim, seu efeito completo seria armazenado no banco de dados.

Evolução do SGBD

A outra função que percebemos da definição do Navathe é a manutenção. O SGBD deve evoluir com o tempo. Ele deve ser capaz de suportar mudanças nas necessidades dos serviços por parte dos usuários. Ou seja, ele deve ser capaz de sofrer manutenção evolutiva.

Consulta e Transação

Relacionados ao SGBD, outros dois conceitos são fundamentais: consulta e transação.

Segundo Navathe,

Uma consulta normalmente resulta na recuperação de alguns dados; uma transação pode fazer que alguns dados sejam lidos e outros gravados no banco de dados.
Assim, note que quando falamos em consulta geralmente estamos falando uma operação única. Já a transação envolve mais de uma operação. De forma geral, um programa vai utilizar a linguagem SQL para fazer consultas e/ou transações junto a um banco de dados.

Sistema de Banco de Dados

Como vimos, similar ao conceito fornecido pelo Silberschatz para SGBD, é o conceito de sistema de banco de dados dado por Navathe. Nesse caso, o autor afirma que Sistema de banco de dados é a união do SGBD com o banco de dados. A figura, retirada do Navathe, ilustra visualmente o conceito.

 

Analisando a figura, note  que os usuários/programadores, que são os humanos, acessam ou criam programas. Estes programas não entram em contato direto com o banco de dados. Para acessar o banco de dados, eles fazem uso do SGBD. Note também que no nosso sistema, além do banco de dados em si, possui metadados. Os metadados guardam as definições dos dados que estão armazenados no banco de dados. Ou seja, são dados sobre os dados (por isso, o nome metadados). Note bem! Os metadados não fazem parte do banco de dados, em sentido estrito. Contudo, são uma base de dados necessária ao funcionamento do SGBD.

Note ainda que os usuários/programadores podem acessar o SGBD de duas formas. A primeira é por meio de uma aplicação que faz consultas ao SGBD. E segunda é fazendo consultas diretas. Geralmente, usuários comuns não fazem esse tipo de acesso. Eles têm contato somente com a aplicação. Contudo, um administrador do banco de dados geralmente acessa o banco de dados diretamente por uma interface fornecida pelo SGBD. Ou seja, inserindo comandos SQL diretamente em uma linha de comando.

A definição de Navathe separa claramente o conceito de SGBD e o conceito de Banco de dados. A junção dos dois elementos forma o Sistema de Banco de dados. Contudo, lembre-se que para outros autores o banco de dados faz parte do SGBD. Por exemplo, para Silberschtaz,

Um sistema gerenciador de de banco de dados (DBMS) é uma coleção de dados inter-relacionados e um conjunto de programas para acessar esses dados. A coleção de dados, normalmente chamada de banco de dados, contém informações relevantes a uma empresa.(grifo nosso)

Como já afirmamos, a definição do Navathe, nos parece ser mais precisa.

CESPE

(CESPE/Auditor-Fiscal da Receita Estadual/SEFAZ RS/2019) As funções de um sistema de gerenciamento de banco de dados (SGBD) incluem
a) gerenciar a integridade de dados, o dicionário e o armazenamento de dados, bem como a memória do computador enquanto o SGBD estiver em execução.
b) transformar e apresentar dados, controlar o acesso de multiusuário e prover interfaces de comunicação do banco de dados.
c) gerenciar o becape e a recuperação dos dados, bem como o escalonamento de processos no processador por meio do banco de dados.
d) gerenciar o sistema de arquivos e a segurança do banco de dados.
e) gerenciar a entrada e saída de dispositivos, linguagens de acesso ao banco de dados e interfaces de programação de aplicações.
Letra B.

a) gerenciar a integridade de dados, o dicionário e o armazenamento de dados, bem como a memória do computador enquanto o SGBD estiver em execução.

Errado. De fato, um SGBD preocupa-se com integridade dos dados e seu armazenamento. Além disso, há um dicionário de dados que é uma coleção de metadados que contém as definições dos dados. Esse dicionário também é gerenciado pelo SGBD. Contudo, o gerenciamento da memória do computador é papel do sistema operacional. O sistema operacional é que controla os recursos que são compartilhados pelos diversos aplicativos. Por exemplo, memória RAM, acesso ao HD, acesso ao processador, etc.

b) transformar e apresentar dados, controlar o acesso de multiusuário e prover interfaces de comunicação do banco de dados.

Certo. O SGBD se responsabiliza pela transformação e apresentação dos dados. Essas transformações e apresentações são solicitados pelo usuário ou programa por meio de comando SQL. O SGBD também tem o papel de controlar o acesso aos usuários. Ou seja, controlar quem pode acessar as tabelas e o que pode ser feito (leitura, inserção de dados, deleção, ….). Por fim, o SGBD provê a interface de comunicação. Essa comunicação é feita por meio da linguagem SQL. Ela pode ser usada dentro de um programa ou pode ser passada diretamente ao SGBD usando uma linha de comando.

c) gerenciar o becape e a recuperação dos dados, bem como o escalonamento de processos no processador por meio do banco de dados.

Errado. Os SGBD’s geralmente fornecem suporte a backup e restauração de dados. Contudo, essa atividade também pode ser feita por ferramentas especializadas. O que deixa o item errado, sem dúvidas, é afirmar que o escalonamento de processos é papel do SGBD. Um processo é um programa em execução. Assim, todo programa que você abre no seu computador é chamado de processo. Escalonar processos é dizer de quem será vez de usar o processador. Esse controle é feito pelo sistema operacional e não pelo SGBD.

d) gerenciar o sistema de arquivos e a segurança do banco de dados.

Errado. De fato, o SGBD pode prover questões de segurança do banco de dados. Contudo, o gerenciamento do sistema de arquivos é papel do sistema operacional. Cada sistema operacional tem seu próprio sistema de arquivos. Por exemplo, no Windows esse sistema é chamado de NTFS.

e) gerenciar a entrada e saída de dispositivos, linguagens de acesso ao banco de dados e interfaces de programação de aplicações.

Errado. Dispositivos de entrada e saída (E/S) são geralmente os periféricos do computador: mouse, teclado, monitor, etc. Esses dispositivos enviam sinais de entrada e produzem saídas. O gerenciamento de entrada e saída de dispositivos é função do sistema operacional e não do SGBD. As linguagens de acesso ao banco de dados e interface de programação fazem partes das bibliotecas e frameworks das linguagens de programação.

(CESPE/Assistente Judiciário/TJ AM/2019) Uma das vantagens de utilizar sistema gerenciador de banco de dados é o fato de ele realizar o controle da redundância de dados, o que impede a ocorrência de inconsistências entre os arquivos.

Certo.
Antes do desenvolvimento dos SGBDs, cada programador era responsável por controlar os dados que o programa utilizava por meio de arquivos. Assim, cada programa tinha seu próprio conjunto de arquivos. Um programa que controlava as vendas poderia ter um conjunto de arquivos diferentes do programa que controlava o estoque. Assim, uma mesma informação poderia aparecer em arquivos diferentes. O problema dessa abordagem é existência de redundância. Ou seja, dois arquivos diferentes contendo as mesmas informações. No nosso exemplo, o programa que controla as vendas e o que controla o estoque poderiam armazenar o preço das peças cada um em seus próprios arquivos. Assim, se um deles atualizar o preço e outro não teremos uma inconsistência nessa informação. Com o banco de dados e os SGBD’s as informações ficam um único local. Isso acaba com problema da redundância e evita o problema de inconsistências.

(CESPE/Analista/EBSERH/2018) Após um banco de dados ser criado, o administrador executa uma série de tarefas para dar permissão de acesso aos usuários que necessitam ler e gravar informações na base de dados. A responsabilidade de gerir os acessos ao banco de dados é do sistema gerenciador de banco de dados (SGBD).

Certo.

Uma das funções do SGBD é controlar o acesso ao banco de dados. Esse controle pode ocorrer em diferentes níveis. Ele pode definir quais bases podem ser acessadas e o que pode ser feito: ler, gravar, alterar, excluir, etc.

(CESPE/Técnico Judiciário/TRE TO/2017) A respeito das características de um sistema gerenciador de banco de dados (SGBD), julgue os itens a seguir.
I. Reduz o tempo de desenvolvimento de uma aplicação, uma vez que não é necessário escrever o código para acessar os dados.
II. Permite retornar os dados para um estado íntegro após uma falha.
III. Permite um acesso aos dados mais eficiente, por meio da criação de índices e visões.
IV. Possui limitações de dados conforme sua tipologia (numérico e alfanumérico).
Estão certos apenas os itens
a) I e II.
b) I e III.
c) II e III.
d) II e IV.
e) III e IV
Letra A.

Vejamos cada um dos itens.

I. Reduz o tempo de desenvolvimento de uma aplicação, uma vez que não é necessário escrever o código para acessar os dados.

Certo. Sem os bancos de dados e SGBD’s, o programador precisava escrever todo o código para salvar e recuperar os dados no sistema de arquivos.

II. Permite retornar os dados para um estado íntegro após uma falha.

Certo. Segundo Navathe, um SGBD precisa oferecer recursos para recuperar-se de falhas de hardware ou software. Seu subsistema de backup e recuperação é responsável por isso. Por exemplo, se o sistema do computador falhar no meio de uma transação de atualização complexa, o subsistema de recuperação é responsável por garantir que o banco de dados seja restaurado ao estado em que estava antes da transação ser executada. Como alternativa, o subsistema de recuperação poderia garantir que a transação seja reiniciada no ponto em que foi interrompida, de modo que seu efeito completo seja registrado no banco de dados. O backup de disco também é necessário no caso de uma falha de disco catastrófica.

Assim, é papel do SGBD ser capaz de recuperar-se de uma falha. A recuperação consiste em devolver o SGBD ao estado que se encontrava antes da falha. Ou seja, mantê-lo íntegro.

III. Permite um acesso aos dados mais eficiente, por meio da criação de índices e visões.

Errado. Para acelerar as consultas, de fato, podem ser usados índices. Um índice permite a otimização da recuperação de dados. Permite um acesso aos dados mais eficiente, por meio da criação de índices e visões. Contudo, uma visão é um subconjunto de um banco de dados gerado a partir de uma consulta. Seu intuito é melhorar a segurança de acessos ao banco de dados.

IV. Possui limitações de dados conforme sua tipologia (numérico e alfanumérico).

Errado. Um banco de dados tem uma grande variedade de tipos de dados. Além dos citados, um banco pode armazenar dados de data e hora. Também suporta dados binários. Ou seja, ele não é limitado como afirma o item.

(CESPE/Auditor de Controle Externo/TCE-PA/2016) A principal característica da abordagem de banco de dados consiste em apresentar as ferramentas de acesso físico dependentes da plataforma de armazenamento.
Errado.
Um banco de dados apresenta ferramentas de acesso físico independentemente da plataforma de armazenamento. Não importa se o SGBD está em Linux ou Windows, a forma de acesso será a mesma. O programador conversa com o banco de dados usando SQL, para ele não importa (nem mesmo precisa saber) onde de fatos os dados estão armazenados. Assim, o SGBD cria uma camada de abstração para o programador, fornecendo uma interface de acesso.

Rolar para cima