Teoria
Teoria
Aula 00
OBJETIVOS DA AULA
Nossa aula começa com os objetivos. Ao final dela, ao ler o resumo, você deve ter certeza de
que fixou os principais conceitos associados aos seguintes objetivos:
● Entender o que é um banco de dados e por que sistemas de banco de dados (SBD) e
os sistemas de gerenciamento de banco de dados (SGBDs) são úteis.
● Entender a importância da abstração na construção de um banco de dados e como
essa abstração é desenvolvida por meio de modelos de dados em diferentes níveis.
● Conhecer uma arquitetura genérica para sistemas de banco de dados denominada
ANSI/SPARC.
● Descrever o ambiente de banco de dados em função dos diversos componentes.
Conceitos Básicos
2. ANO: 2014 ÓRGÃO: TJ-AP PROVA: ANALISTA JUDICIÁRIO - BANCO DE DADOS - DBA
A redundância controlada de dados em um sistema de banco de dados ocorre quando
A) um programa está ciente da múltipla representação de uma dada informação e garante o
sincronismo entre as diversas representações.
B) a responsabilidade pela manutenção do sincronismo entre as múltiplas representações de
uma dada informação é compartilhada entre o programa e o usuário.
C) os dados mais importantes são duplicados a cada backup do sistema, visando aumentar
a garantia da recuperação da informação em caso de problemas.
D) a responsabilidade pela manutenção do sincronismo entre as múltiplas representações
de uma dada informação é do usuário.
E) um programa está ciente da múltipla representação de uma dada informação, mas não
garante o sincronismo entre as diversas representações.
Comentário:
Nesta questão vamos entender o que está sendo cobrado antes de avaliarmos as
alternativas. Em primeiro lugar, precisamos lembrar que o SGBD vai controlar a redundância
dentro do banco de dados. Esse controle é feito quando diferentes usuários compartilham a
mesma informação.
Suponha uma tabela de endereços de clientes em um banco comercial. Todos os setores do
banco podem fazer uso desta informação. A área de investimento pode mandar o extrato
das suas aplicações, o setor de cartão de crédito pode enviar sua fatura e o relacionamento
com o cliente pode te enviar um cartão de feliz aniversário. A importância deste ponto
único de contato é verificada quando a cliente muda de endereço, a atualização da tabela
vai ser efetiva para os diferentes usuários da informação.
Agora vamos analisar as alternativas, ao ler cada uma delas, podemos observar que no
SGBD um programa deve estar ciente da múltipla representação de uma dada informação e
garantir o sincronismo entre as diversas representações. Essa descrição está presente na
alternativa A que é a nossa resposta.
Gabarito: A.
A figura mostra dois sistemas. O primeiro representa a estrutura de um sistema de arquivos onde
os dados são acessados diretamente pelos aplicativos. Na segunda temos um sistema de banco
de dados no qual o SGBD aparece entre os dados e os aplicativos.
Perceba que do lado esquerdo não temos o SGBD, já do lado direito existe o elemento. Para
entender como e por que esse camarada apareceu aí vamos compreender os conceitos
elementares para o entendimento do assunto. Em qualquer ciência, o entendimento completo do
seu conteúdo deve se basear nos conceitos fundamentais. Nossa aula começa focada nesses
conceitos.
E o primeiro conceito que preciso que você armazene é o de banco de dados, neste instante,
você seria capaz de responder a seguinte pergunta:
Você já consegue definir esse termo e suas principais características? Se você ainda não tem o
entendimento perfeito do que seria um banco de dados, nosso objetivo agora é construir o
conceito. Uma forma tradicional de definir banco de dados é começar entendendo o significado
das palavras que compõem o termo: Banco de dados.
O termo Banco tem diversas definições possíveis no dicionário da língua portuguesa. Dentre elas
a que melhor se encaixa no nosso contexto é um conjunto organizado e categorizado de
objetos, por exemplo, podemos ter um banco de fotografias ou um banco de leite.
Dados são fatos conhecidos que podem ser registrados e possuem um significado implícito. Esse
conceito, porém, é um pouco amplo e abstrato para nosso intuito. Quando reduzimos o escopo à
tecnologia da informação, temos um conceito mais adequado para dado. Ele é a representação
física de um evento no tempo e espaço que não agrega fundamento ou significado para quem o
sente ou recebe. É, basicamente, um registro!
Imagine que eu fale para você por “32260436, cinco, aprovado, Thiago”. Você vai pensar, o
professor está ficando louco! Mas em um banco de dados, esses registros são armazenados e
chamados de dados. Para representarem uma informação eles precisam de um contexto
associado. Se pensarmos em uma agenda telefônica, o número “32260436” pode ser o telefone
de Thiago. Aprovado pode ser a sua situação no seu próximo concurso e cinco seria a colocação
no referido certame.
Agora que temos o entendimento dos termos vamos partir para a definição
do banco de dados.
De forma simples e direta: um Banco de dados é uma coleção de dados
relacionados. Vejam que essa definição não estabelece a necessidade de os
dados serem armazenados em formato digital. Alguns livros trazem o
exemplo de uma agenda telefônica de papel como um exemplo bastante
didático do conceito de banco de dados.
Esta definição, porém, é considerada muito simplista para alguns autores por não contextualizar o
termo. O Navathe, por exemplo, cita três propriedades implícitas que contribuem para o
entendimento do termo banco de dados (BD). Primeiramente, o BD representa algum aspecto do
mundo real, às vezes chamado de minimundo ou de universo de discurso (UoD – Universe of
Discourse). As mudanças no minimundo devem ser refletidas no banco de dados.
A segunda característica implícita diz que a coleção de dados é logicamente coerente com algum
significado inerente. Uma variedade aleatória de dados não pode ser chamada de banco de
dados. Um banco de dados pode armazenar as informações de uma empresa, uma faculdade ou
um órgão do setor público. Veja que essas informações estão dentro de um contexto, sendo,
logicamente, coerente.
A terceira propriedade afirma que um banco de dados é construído e populado com dados para
uma finalidade específica. Ele possui um grupo de usuários bem definido e algumas aplicações,
previamente concebidas, sobre as quais esses usuários interessados fazem acesso aos dados.
Não adianta você criar um repositório sem propósito! Ele tem que atender alguma necessidade
de acesso ao conjunto dos dados.
Vamos voltar ao nosso exemplo físico da agenda telefônica, você consegue visualizar as
propriedades definidas pelo Navathe neste banco de dados. Qual o aspecto do mundo real que
ela representa? Os dados estão logicamente relacionados? Possuem uma finalidade específica?
Acredito que sim! Tente responder a essas perguntas mentalmente antes de seguir em frente.
Ok!! As três propriedades definidas pelo Navathe começam a estruturar os conceitos na sua
cabeça. Vamos consolidar o conceito de banco de dados apresentado mais algumas definições
presentes na literatura:
Acho que você já entendeu o conceito de banco de dados! Na lista acima, você
conheceu todas as definições que podem aparecer na sua prova. :)
Vamos agora entender a diferença entre banco de dados, sistemas de gerenciamento de banco
de dados (SGBD) e sistemas de banco de dados (SBD). São três conceitos diferentes para os
autores dos livros teóricos sobre o assunto. Para entender essas diferenças peço que você
observe a figura a seguir:
Seguindo o fluxo de acesso aos dados, podemos observar que os usuários e programadores se
comunicam com o sistema de banco de dados. Este, por sua vez, faz acesso ao sistema de
gerenciamento do banco de dados. O SGDB usa as informações presentes nos bancos de dados,
representados pelos cilindros da figura acima, para ter acesso aos dados armazenados.
Um Sistema de Gerenciamento de Banco de Dados (SGBD) é um conjunto de programas que
permitem armazenar, modificar e extrair informações de um banco de dados. Seu principal
objetivo é proporcionar um ambiente tanto conveniente quanto eficiente para a recuperação e
armazenamento das informações do banco de dados.
Contudo, os SGBDs não se restringem apenas a manipulação dos dados. Eles fornecem uma
variedade de programas com diferentes funcionalidades.
A figura acima apresenta algumas funcionalidades dos SGBDs. Cada espaço está preenchido
com alguma funcionalidade que faz parte do escopo de um software de SGBD. Não se preocupe
se você não tiver ideia do que está presente em cada espaço, ao longo desta aula ou do nosso
curso, quando você começar a entender melhor o assunto, você perceberá a presença deles
dentro do contexto de um SGBD. Vamos em frente!
Outro aspecto interessante sobre banco de dados são as descrições ou definições dos objetos,
pense em uma tabela do modelo relacional. Para termos acesso a uma tabela precisamos
conhecer sua estrutura, começando pelo seu nome e das suas colunas. Essa tarefa 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
numa estrutura conhecida como catálogo ou dicionário de dados, que armazena os chamados de
metadados dos objetos. Os metadados carregam consigo um significado. Uma coluna de uma
tabela pode ser definida por um tipo de dados, inteiro, uma restrição, not null.
É possível ainda fazer o compartilhamento dos dados entre diversos usuários e programas,
possibilitando o acesso ao banco de dados de forma simultânea. Outras funções importantes
também são providas como proteção do sistema contra defeitos de hardware e software, feitos
por meio de redundância ou replicação, e proteção de segurança contra acesso não autorizados
ou maliciosos.
Outros aspectos interessantes estão relacionados com o controle de transações, recuperação
após falha, otimização de consultas ou do próprio SGBD, auditoria por meio de logs de sistema,
enfim, são várias as funcionalidades providas pelos softwares presentes em um SGBD. Vamos
agora definir o próximo conceito: sistema de banco de dados!
O sistema de banco de dados (SBD) é considerado a união entre o banco de dados e o sistema
de gerenciamento de banco de dados. Em outras palavras, consiste em uma coleção de dados
inter-relacionados e de um conjunto de programas para acessá-los. Partindo da figura que
apresentamos anteriormente conseguimos construir a seguinte fórmula:
SBD = BD + SGBD + (Programa de aplicação/consulta)
Antes de continuarmos construindo nosso arcabouço teórico sobre o assunto vamos resolver
algumas questões de provas passadas.
4. Ano: 2018 Banca: FGV Órgão: MPE-AL Prova: FGV - 2018 - MPE-AL - Técnico do Ministério
Público - Geral
O conjunto de programas responsável pelo gerenciamento de uma base de dados e que,
entre outras funções, suporta uma linguagem de consulta, gera relatórios e disponibiliza
uma interface para que os seus clientes possam incluir, alterar ou consultar dados, é
chamado de
a) Banco de Dados Relacional (BDR).
b) Dicionário de Dados (DD).
c) Modelo Entidade Relacionamento (MER).
d) Sistema de Suporte à Decisão (SSD).
e) Sistema Gerenciador de Bancos de Dados (SGBD).
Comentário:
Perceba que o conjunto de programas é o SGBD, presente na alternativa E. O banco de
dados relacional é um conjunto de dados interrelacionados estruturados de acordo com o
modelo relacional (será visto ainda nesta aula). Dicionários de dados são os metadados ou
catálogo de dados que apresenta a descrição dos dados armazenados. Modelo Entidade
==144bb1==
Relacionamento é um modelo de dados de alto nível usado para descrever quais os dados
serão armazenados no banco de dados usando elementos gráficos. Já os sistemas de
suporte à decisão procuram tratar os dados para auxiliar na tomada de decisão.
Gabarito: E.
de escala. Você normalmente paga apenas pelos serviços de nuvem que usa, ajudando a
reduzir os custos operacionais, a executar sua infraestrutura com mais eficiência e a
escalonar conforme as necessidades da sua empresa mudam.
Assim, reforçando a nossa resposta encontra-se na alternativa B.
Gabarito: B.
7. Ano: 2016 Órgão: TCE-SC Prova: Auditor Fiscal de Controle Externo - Informática
Com relação aos bancos de dados relacionais, julgue o próximo item.
O catálogo de um sistema de gerenciamento de banco de dados relacional armazena a
descrição da estrutura do banco de dados e contém informações a respeito de cada arquivo,
do tipo e formato de armazenamento de cada item de dado e das restrições relativas aos
dados.
Comentário:
Perceba que a definição acima está de acordo com o termo dicionários de dados, catálogo
de dados ou metadados presentes em um sistema de banco de dados. Lembre-se que essa
separação entre a descrição dos dados e os dados propriamente dito é uma das
Características da Abordagem de BD
Segundo Navathe, são quatro as principais características da abordagem de banco de dados que
a fazem sobressair em relação às abordagens de processamento de arquivos.
Esses esforços visam reduzir a redundância, o que implica em reduzir o desperdício no espaço de
armazenamento e os esforços para manter os dados comuns ou duplicados atualizados. Tudo
realizado por meio de um único repositório!
Vejam que a lista acima pode ser caracterizada como uma enumeração e, como eu sempre digo,
listas fazem parte do rol de questões de prova de concurso. Seja qual for a matéria, sempre gaste
um pouco do seu tempo lendo, mais de uma vez, cada uma das listas pertencentes aos assuntos.
A verdade é: não importa o grau de relevância dentro do assunto, um examinador preguiçoso
sempre está propício a utilizar deste artifício ao elaborar uma questão.
A primeira característica listada pelo Navathe é conhecida por nós como catálogo do SGBD,
dicionário de dados ou metadados. Esta propriedade permite ao SGBD gravar as definições das
suas estruturas e restrições. E, quais são as descrições que podem ser gravadas? Descrição de
tabelas, tamanho do campo, tipo dos dados, propriedade de ser nulo ou não, valores default,
restrições de integridade, entre outros. Para facilitar sua visualização pense numa definição de
uma tabela em SQL1. Veja o exemplo a seguir e observe algumas dessas descrições.
CREATE TABLE EMPREGADO (
ID_EMPREGADO INT PRIMARY KEY,
FK_ID_SUPERVISOR INT,
PRIMEIRO_NOME VARCHAR2(100) NOT NULL,
ULTIMO_NOME VARCHAR2(100) NOT NULL,
EMAIL VARCHAR2(100) NOT NULL,
DATA_NASC_FUNC DATE NOT NULL,
DATA_INICIO_FUN DATE DEFAULT SYSDATE,
DATA_FIM_FUN DATE DEFAULT NULL,
CONSTRAINT FK_SUP FOREIGN KEY EMPREGADO (ID_EMPREGADO)
);
A próxima característica é uma decorrência da anterior. A partir do momento em que temos um
dicionário de dados, é possível excluir da estrutura dos programas a definição dos dados
presentes nos mesmos. Agora isolados, dados e aplicações, criam um conceito chamado
independência de dados do programa. Isso só é possível por conta da abstração de dados. A
abstração de dados permite a criação de diferentes níveis de modelos. Cada modelo revela a
estrutura dos dados de uma forma específica.
O suporte a múltiplas visões parte do princípio de que diferentes usuários têm diferentes
necessidades sobre os dados. Se pensarmos em SQL, uma VIEW representa um subconjunto de
informações referentes a uma ou mais tabelas (ou até a nenhuma tabela). Do ponto de vista mais
abstrato, uma visão é a parte do banco de dados ao qual um usuário ou grupo de usuários tem
acesso. Porém, existe a possibilidade dessa visão conter um dado virtual que é derivado das
informações armazenadas. Imagine, por exemplo, a idade calculada a partir da data de
nascimento.
Quando falamos de suporte a múltiplos usuários queremos, basicamente, permitir que diferentes
usuários acessem o banco de dados ao mesmo tempo. Para garantir que isso ocorra é preciso
que o SGBD forneça um mecanismo de controle de concorrência. As transações efetuadas
devem levar o sistema a um estado válido (C), não ter conhecimento umas das outras (I), serem
executadas sempre por completo (ou não serem executadas) (A) e, uma vez gravadas na base,
devem persistir ao longo do tempo (D).
Você deve estar se perguntando, o que são essas letras ao lado das características das transações
citadas anteriormente? Elas se referem às características de uma transação: atomicidade,
consistência, isolamento e durabilidade. Elas formam uma sigla conhecida como ACID e são
bastante conhecidas dentro do modelo de dados relacional/transacional.
1
SQL é uma linguagem declarativa usada para enviar comandos aos sistemas de gerenciamento de banco de dados. Esses
comandos permitem a criação de tabelas e a manipulação dos dados armazenados. Na criação da tabela podemos observar a
definição dos tipos de dados (VARCHAR2, DATE, NUMBER), bem como das restrições de integridade (NOT NULL, DEFAULT).
Acabamos de tratar das características que o Navathe utiliza para diferenciar sistemas de arquivo
dos sistemas de banco de dados. Vamos agora listar as características descritas pelo Date e pelo
Silberschatz. Date chama de benefícios da abordagem de banco de dados. Quais sejam:
Lembrem-se, não precisamos decorar todas essas listas, apenas tomar conhecimento da
sua existência, pois fazem parte do contexto. Elas procuram sempre expor as
características que diferenciam os sistemas de arquivos dos sistemas de banco de dados.
Vejamos mais algumas questões que tratam do assunto.
Isolamento (Isolation): O isolamento garante que o resultado de uma transação seja invisível para
outras transações até que a transação esteja concluída. Cada transação é executada como se
fosse a única transação no sistema, evitando interferências de outras transações concorrentes.
Durabilidade (Durability): A durabilidade assegura que uma vez que uma transação é confirmada
(completa), seus efeitos permanecem permanentes, mesmo em caso de falha do sistema. As
alterações feitas por uma transação confirmada são persistentes e sobrevivem a reinicializações
ou falhas do sistema.
Essas propriedades garantem a confiabilidade e integridade dos dados em um ambiente
transacional, assegurando que as operações do banco de dados sejam executadas de maneira
segura e consistente. Logo, teremos a nossa resposta na alternativa A.
Gabarito: A
2. Ano: 2021 Banca: FGV Órgão: TCE-RO Prova: FGV - 2021 - TCE-RO - Analista de
Tecnologia da Informação - Desenvolvimento de Sistemas
No contexto da implementação de bancos de dados, o acrônimo ACID denota o conjunto de
propriedades que devem ser observadas por sistemas transacionais.
Essas quatro propriedades são:
a) Amorfabilidade, Concorrência, Integridade e Durabilidade;
b) Atomicidade, Consistência, Isolamento e Durabilidade;
c) Atualização, Coesão, Inserção e Deleção;
d) Auditabilidade, Conformidade, Independência e Distribuição;
e) Automação, Concorrência, Integridade e Distribuição.
Comentário:
Vejamos quais seriam as propriedades de transações:
[A]tomicidade = As transações devem ser executadas de forma integral ou não devem ser
executadas de modo algum.
[C]onsistência = Cada transação deve transformar o Banco de Dados de um estado consistente
para outro estado igualmente consistente.
[I]solamento = É assegurado que as transações não sejam influenciadas pelas ações simultâneas
umas das outras.
[D]urabilidade = Os efeitos de uma transação devem ser mantidos, mesmo diante de
interrupções de energia ou ocorrência de erros.
Gabarito: B
Já a alternativa B nos remonta às funcionalidades do SGBD. O que podemos fazer com tal
sistema? É possível, primariamente, armazenar e manipular dados, para tal, é necessário
descrever as estruturas das tabelas. Todos os SGBDs possuem estrutura para construção do
banco de dados, usando uma linguagem como SQL. Sendo assim, a alternativa B também está
incorreta.
As próximas duas alternativas tratam das propriedades das transações, mais especificamente da
consistência, que tem por objetivo levar o banco de dados de um estado válido para outro
estado consistente, e da atomicidade, que parte do princípio de que uma transação é composta
por vários comandos de modificação da base de dados e que estes comandos devem ser
executados em conjunto completamente ou não serem executados. Desta forma, para garantir a
atomicidade, caso uma transação falhe todas as operações já efetuadas precisam ser desfeitas.
Desta forma, a alternativa C está incorreta e a alternativa D é a nossa resposta.
Por fim, o controle de concorrência é um mecanismo que permite que apenas um usuário consiga
modificar um dado do sistema em um determinado momento. É importante entender que é
possível várias pessoas terem acesso aos dados para leitura. Como se todos estivessem lendo um
livro. Contudo, na hora de escrever, só existe uma caneta e, se alguma pessoa estiver de posse
da caneta, apenas ela poderá fazer alterações na base.
Gabarito: D.
d) ERRADA. Essa é outra vantagem dos bancos de dados. Com a internet, por exemplo, é
possível compartilhar informações com outros usuários em qualquer lugar do mundo por meio de
bancos de dados distribuídos.
e) ERRADA. Mais uma vantagem dos bancos de dados. Um caderno, por exemplo, pode ter suas
páginas deterioradas com o tempo ou a tinta da caneta pode apagar. As mídias digitais,
entretanto, permitem que a informação esteja acessível por quanto tempo for necessário. Claro
que, para isso, devem ser utilizadas técnicas de backup e redundância dos dados.
Desta forma, podemos encontrar a nossa resposta para essa questão na alternativa B.
Gabarito: B.
Metadados
Os metadados fornecem informações sobre cada conjunto de dados, como tamanho, esquema
de um banco de dados, formato, hora da última modificação, listas de controle de acesso, uso,
etc. O uso de metadados permite o gerenciamento de uma plataforma e arquitetura escalável de
data lake, bem como dados de governança . Os metadados são normalmente armazenados em
um catálogo central para fornecer aos usuários informações sobre os conjuntos de dados
disponíveis.
Os metadados podem ser classificados em três grupos:
● Os metadados técnicos capturam a forma e a estrutura de cada conjunto de dados, como
o tamanho e a estrutura do esquema ou tipo de dados (texto, imagens, JSON, ...). A estrutura do
esquema inclui os nomes dos campos, seus tipos de dados, seus comprimentos, se podem estar
vazios e assim por diante. A estrutura geralmente é fornecida por um banco de dados relacional
ou pelo título de uma planilha, mas também pode ser adicionada durante a ingestão e
preparação de dados. Existem alguns metadados técnicos básicos que podem ser obtidos
diretamente dos conjuntos de dados (ou seja, tamanho), mas outros tipos de metadados são
derivados.
● Os metadados operacionais capturam a linhagem, qualidade, perfil e proveniência (por
exemplo, quando os elementos de dados chegaram, onde estão localizados, de onde chegaram,
qual é a qualidade dos dados, etc.). Também pode conter quantos registros foram rejeitados
durante a preparação de dados ou uma execução de trabalho e o sucesso ou fracasso dessa
execução em si. Os metadados operacionais também identificam a frequência com que os dados
podem ser atualizados ou atualizados.
● Os metadados comerciais capturam o que os dados significam para o usuário final para
facilitar a localização e a compreensão dos campos de dados, por exemplo, nomes comerciais,
descrições, tags, qualidade e regras de mascaramento. Eles estão vinculados à definição de
atributos de negócios para que todos interpretem consistentemente os mesmos dados por meio
de um conjunto de regras e conceitos definidos pelos usuários de negócios. Um glossário
comercial é um local central que fornece uma descrição comercial para cada elemento de dados
por meio do uso de informações de metadados.
Perceba que até aqui estamos falando de metadados de forma ampla, mas nosso assunto é
banco de dados e, neste momento, estamos mais interessados nos metadados técnicos.
Metadados desempenham um papel crucial no contexto dos bancos de dados, fornecendo
informações essenciais sobre os próprios dados armazenados. Essencialmente, os metadados são
dados sobre dados - eles descrevem características, propriedades e estruturas dos dados
contidos em um banco de dados.
Em um sistema de gerenciamento de banco de dados (SGBD), os metadados desempenham
várias funções importantes:
1. Descrição da Estrutura de Dados: Os metadados descrevem a estrutura do banco de
dados, incluindo informações sobre tabelas, campos, tipos de dados, chaves primárias, chaves
estrangeiras e índices. Eles fornecem uma visão abstrata e organizada da organização dos dados
dentro do banco de dados.
2. Controle de Acesso: Os metadados também são usados para gerenciar o acesso aos
dados. Eles especificam as permissões de acesso para usuários e grupos de usuários, garantindo
a segurança e a integridade dos dados.
3. Otimização de Consultas: Ao fornecer informações sobre a estrutura dos dados e os
índices disponíveis, os metadados ajudam o SGBD a otimizar consultas e operações de
recuperação de dados, melhorando o desempenho do sistema.
4. Recuperação de Informações: Os metadados facilitam a recuperação de informações ao
fornecer descrições detalhadas dos dados armazenados. Eles permitem que os usuários
entendam o significado e o contexto dos dados, facilitando a análise e interpretação.
5. Manutenção e Administração: Os metadados são essenciais para a manutenção e
administração do banco de dados. Eles registram informações sobre a última modificação dos
dados, o histórico de alterações e outras atividades relacionadas à gestão do banco de dados.
Em resumo, os metadados desempenham um papel fundamental na organização, gestão e
utilização eficiente dos dados em um banco de dados. Eles fornecem informações essenciais que
permitem aos usuários compreender, acessar e manipular os dados de forma eficaz, garantindo a
integridade, segurança e desempenho do sistema como um todo.
Comentário:
==144bb1==
PERSONAGENS DO ECOSSISTEMA DE BD
Quando tratamos de grandes organizações, as atividades relacionadas a banco de dados devem
ser compartilhadas entre diferentes pessoas. Trataremos agora dos dois principais papéis dentro
desse processo: o administrador de banco de dados (DBA) e o administrador de dados (AD).
Só para termos uma ideia, algumas empresas do setor bancário chegam a ter algumas dezenas
de ADs dentro da organização. O Bradesco tem por volta de 40 ADs. Vamos então começar
falando um pouco sobre esse perfil de trabalhador especializado em banco de dados.
O AD é a pessoa que toma as decisões estratégicas e de normas com relação aos dados da
empresa. Os administradores de dados também podem ser conhecidos por projetista de dados.
Suas tarefas são realizadas principalmente antes do banco de dados ser realmente implementado
e/ou preenchido com dados.
Eles são responsáveis por identificar os dados a serem armazenados e escolher estruturas
apropriadas para representar esses dados. Para isso precisam se comunicar com todos os
potenciais usuários a fim de entender suas necessidades e criar um projeto que atenda suas
necessidades. Eles definem então visões para cada grupo de usuários. Podemos listar ainda
como atribuições do AD:
Falaremos agora do DBA – Database Administrator, ou, da pessoa que fornece o suporte técnico
necessário para implementar as decisões. Assim, o DBA é responsável pelo controle geral do
sistema em um nível técnico. Tem como recurso primário o banco de dados e como recursos
secundários o SGBD e os softwares relacionados.
O DBA é o responsável por autorizar o acesso ao banco de dados, coordenar e monitorar seu
uso, adquirir recursos de software e hardware conforme a necessidade e por resolver problemas
tais como falhas de segurança ou demora no tempo de resposta do sistema. Segundo o Date
uma lista de atividades associadas ao DBA contém as seguintes tarefas:
1
Esse esquema conceitual é estabelecido no âmbito da arquitetura em três esquemas. Veremos que ele não tem relação com o
modelo de dados conceitual.
2
Carga e recarga ou dumping é uma outra forma de definir backup de banco de dados.
Vamos comentar cada uma das alternativas. (A) Dados e informações são conceitos distintos. A
informação precisa de contexto e significado, já o dado é apenas um fato registro (bruto). (B) Os
projetistas são conhecidos como administradores de dados. (C) Todo banco de dados deve
descrever alguma coisa do mundo real, podendo ser concreto ou abstrato. (D) Falamos sobre isso
no início da nossa aula. A lista telefônica do seu Zacarias é considerada um banco de dados,
mesmo não sendo digital. (E) Fazer alterações no banco de dados nem sempre é onerosa, alguns
fatores podem permitir uma alteração rápida do registro.
Gabarito: D
Você precisa entender que são dois os principais papéis presentes no trabalho diário de
organização e manutenção de banco de dados. O administrador de dados que cuida do
contexto estratégico dos dados, sua preocupação está em saber quais os dados serão
armazenados em um banco de dados, quem são as pessoas que precisam dos mesmos e ainda,
procurar padronizar os nomes dos atributos e outros objetos para que dados redundantes não
sejam armazenados.
Outro indivíduo importante neste processo é o administrador de banco de dados. Nessa função
encontramos todo o suporte técnico necessário para as atividades diárias de um sistema de
banco de dados. O DBA distribui as permissões de acesso aos dados, cria os objetos que vão
armazenar os dados, faz ajustes para que eles funcionem de forma adequada.
os membros são os nós filhos associados a esses registros proprietários. Essa organização em
árvore é fundamental para a representação e o armazenamento eficientes de dados em um
modelo hierárquico. Vamos tentar apresentar um exemplo para retirar um pouco da abstração do
conceito.
A figura abaixo descreve um banco de dados de Estudante, cada estudante pode se matricular
em várias disciplinas ... Neste caso, os estudantes têm um relacionamento de 1-N com disciplina
... Ou seja, se diferentes alunos cursarem a mesma disciplina, elas serão cadastradas várias vezes
no banco de dados, uma para cada aluno.
Esses dois modelos, em rede e hierárquico, apresentavam problemas sérios, entre eles:
De acordo com essa figura, os itens indicados como I e II representam, respectivamente, registro
a) principal e registro secundário.
b) inicial e registro final.
c) proprietário e registro membro.
d) principal e registro auxiliar.
e) total e registro parcial.
Comentário:
Os principais tipos de registros representados no modelo hierárquico são:
Registro Proprietário: É o registro pai na hierarquia. Por exemplo, no contexto da empresa,
o CEO seria o registro proprietário, pois não possui um registro pai.
Registro Membro: São os registros filhos na hierarquia, que estão abaixo do registro
proprietário. No exemplo da empresa, os diretores seriam registros membros, pois possuem
o CEO como registro pai.
Logo, temos a nossa resposta na alternativa C.
Gabarito: C
a) híbrido
b) de rede
c) relacional
d) hierárquico
e) orientado a objetos
Comentário:
O modelo hierárquico organiza dados em uma estrutura de árvore, nele cada registro tem
um único "pai" ou raiz. Registros "irmãos" são classificados em uma ordem específica. Essa
ordem é usada como a ordem física para armazenar o banco de dados. Este modelo é bom
para descrever muitas relações do mundo real. Contudo, possui limitações para descrever
relacionamentos N-N entre os elementos de dados. Esse modelo foi usado principalmente
pelos Sistemas de Gestão de Informações da IBM nos anos 60 e 70, mas são raramente
vistos hoje devido a certas ineficiências operacionais.
Curiosidade: O modelo hierárquico foi implementado em um esforço conjunto da IBM e
North American Rockwell em 1965. A IBM teve o Information Management System IMS
(DL/1), largamente utilizado durante as décadas de 1970 e início da década de 1980
Gabarito: D
No geral, os primeiros SGBDs eram muito complexos e inflexíveis, o que tornou cada vez mais
difícil o trabalho, quando era necessária a adição de novos aplicativos ou a reorganização dos
dados. Para resolver esses e outros problemas Edgar (Ted) Codd, conhecido como o pai do
modelo relacional, trabalhando no laboratório da IBM em San Jose propôs no artigo “A
Relational Model of Data for Large Shared Data Banks” a definição do modelo relacional.
A ideia de Codd era usar conceitos matemáticos da teoria dos conjuntos e da lógica de primeira
ordem para definir objetos de dados conhecidos como relações. As relações podem ser vistas
como tabelas compostas por linhas. O modelo chamou as linhas de tuplas. As tuplas são
constituídas por um conjunto de atributos cada um definido dentro de um conjunto de valores
possíveis (domínio). Perceba que todos os dados são armazenados em uma estrutura predefinida,
com tipos de dados e tamanhos bem estabelecidos.
Segundo Codd, o modelo fornece um meio de descrição de dados apresentando apenas a sua
estrutura natural - isto é, sem sobreposição de qualquer estrutura adicional para efeitos de
representação física dos dados. Perceba a grande sacada de Codd!! Ele construiu um modelo
que abstraía a representação física dos dados!! Quando você descreve uma relação, você não se
importa com a forma de acesso aos dados quando estes estiverem armazenados.
Essa ideia trouxe uma simplicidade estrutural ao modelo. Assim, ele forneceu uma base para uma
linguagem de dados de alto nível que permite obter a independência máxima entre dados e
programas com a representação de um lado e a estrutura física da máquina do outro.
Em outras palavras, o modelo relacional teve suas bases estabelecidas na independência de
dados e, na forma de acesso aos dados definida por uma linguagem clara e ampla. Em vez de
processar um registro de cada vez, um programador pode usar o idioma para especificar
operações individuais que seriam realizadas em todo o conjunto de dados.
Devido à natureza técnica do artigo e a relativa complicação matemática presente no texto, o
significado e proposição do artigo não foram prontamente identificados. Entretanto, Codd levou
a IBM a montar um grupo de pesquisa conhecido como System R (Sistema R) para tentar avançar
sobre o assunto.
O projeto do Sistema R era criar um sistema de banco de dados relacional o qual eventualmente
se tornaria um produto. Os primeiros protótipos foram utilizados por muitas organizações, tais
como na Sloan School of Management (renomada escola de negócios norte-americana). Novas
versões foram testadas com empresas de aviação para rastreamento de manufaturas em estoque.
Em meados da década de 80, tornou-se óbvio que existiam várias áreas onde bancos de dados
relacionais não eram aplicáveis, por causa dos tipos de dados envolvidos. Estas áreas incluíam
medicina, multimídia e física nuclear, todas com necessidades de flexibilidade para definir como
os dados seriam representados e acessados.
Este fato levou ao início de pesquisas em bancos de dados orientados a objetos, nos quais os
usuários poderiam definir seus próprios métodos de acesso aos dados e como estes seriam
representados e acessados. Ao mesmo tempo, linguagens de programação orientadas a objetos
(Object Oriented Programming - POO), tais como C++, começaram a surgir na indústria.
No início de 1990, temos a aparição do primeiro Sistema de Gerenciamento de Banco de Dados
Orientado a Objetos (SGBDOO), através da companhia Objectivity. Isso permitiu que usuários e
organizações criassem bancos de dados para armazenar resultados de pesquisas como o CERN
(maior laboratório que trabalha com partículas em pesquisas de física nuclear - europeu) e SLAC
(Centro de Aceleração Nuclear - norte-americano), para mapeamento de rede de provedores de
telecomunicações e para armazenar registros médicos de pacientes em hospitais, consultórios e
laboratórios.
A evolução nos levou aos SGBDs orientados a objetos, mas a praticidade nos trouxe de volta
para o modelo objeto-relacional, pois a grande maioria das empresas continuou utilizando os
bancos de dados relacionais. Contudo esse modelo começou a apresentar outra lista de
problemas ou desafios:
2. Poder de crescimento elástico horizontal – controle de transação ACID torna inviável com a
elasticidade.
3. Fácil distribuição dos dados e/ou processamento – SGBD paralelos são caros.
Tivemos então o surgimento de um novo movimento no mercado em busca de uma solução que
superasse tais problemas: o movimento NoSQL. Este teve sua origem em junho de 2009, para
nomear um encontro promovido por Johan Oskarsson e Eric Evans, que teve como objetivo
discutir o surgimento crescente de soluções open source de armazenamento de dados
distribuídos não relacionais.
Podemos considerar NoSQL uma nova onda de SGBDs, pois propõe algumas alternativas ao
modelo relacional, porém com uma grande diferença histórica: o movimento NoSQL não tem
como objetivo invalidar ou promover a total substituição do modelo relacional, e sim o fim do
modelo relacional como bala de prata, como a única solução correta ou válida. Inclusive, é
importante entender que NoSQL não significa “no SQL” (não ao SQL), mas sim “not only SQL”
(não só SQL).
Juntamente com NoSQL surge o conceito de Big Data. A definição mais tradicional usa a
equação dos cinco Vs. Nela, Big Data = volume + variedade + velocidade + veracidade + valor,
de dados. Cada característica desta é associada aos dados armazenados. É possível justificar
cada uma delas. Vejamos:
Volume porque além dos dados gerados pelos sistemas transacionais, temos a
imensidão de dados gerados pelos objetos na Internet das Coisas, como sensores e
câmeras, e os dados gerados nas mídias sociais por meio de PCs, smartphones e
tablets.
Variedade porque estamos tratando tanto de dados textuais estruturados como não
estruturados como fotos, vídeos, e-mails e tweets.
Velocidade porque os dados são gerados muito rapidamente e os sistemas devem ter
capacidade de receberem esses dados. Muitas vezes precisamos responder aos
eventos quase em tempo real, ou seja, estamos falando de geração e tratamento de
dados em fluxo massivos.
O ponto de vista da veracidade também deve ser considerado, pois não adianta muita coisa lidar
com a combinação "volume + velocidade + variedade" se não houver dados confiáveis. É
necessário que haja processos que garantam a consistência dos dados.
O último V, valor, considera que informação é poder, informação é patrimônio. A combinação
"volume + velocidade + variedade + veracidade", além de todo e qualquer outro aspecto que
caracteriza uma solução de Big Data, se mostrará inviável se o resultado não trouxer benefícios
significativos e que compensem o investimento.
O que acontece agora? Diante destas definições, importantes à implementação de SGBDs que
suportem a estratégia definida pelo Big Data, podemos sugerir diferentes soluções. Bancos do
tipo NoSQL são mais flexíveis, sendo inclusive compatíveis com um grupo de premissas que
"compete" com as propriedades ACID dos SGBDs tradicionais: a BASE (BAsically Available, Soft
state, Eventually consistency – Basicamente disponível, estado leve, eventualmente consistente).
Exemplos de bancos de dados NoSQL são o Cassandra, o MongoDB, o HBase, o CouchDB e o
Redis. Mas, quando o assunto é Big Data, apenas um banco de dados do tipo não basta. É
necessário também contar com ferramentas que permitam o tratamento correto do volume de
dados. Neste ponto, o Hadoop é, de longe, a principal referência.
O Hadoop é uma plataforma open source desenvolvida especialmente para processamento e
análise de grandes volumes de dados, sejam eles estruturados ou não estruturados. Pode-se
dizer que o projeto teve início em meados de 2003, quando o Google criou um modelo de
programação que distribui o processamento a ser realizado entre vários computadores para
ajudar o seu mecanismo de busca a ficar mais rápido e livre das necessidades de servidores
poderosos (e caros). Esta tecnologia recebeu o nome de MapReduce.
Vamos ficando por aqui, isso é o que nos interessa para o contexto histórico. Apresentamos
acima uma figura com uma evolução dos modelos de dados ao longo do tempo e logo em
seguida um resumo com as principais características de cada tipo de modelo de dados.
c) relacional;
d) hierárquico;
e) orientado a objetos.
Comentário:
O modelo de banco de dados em que a associação entre dois registros é feita por meio do
relacionamento entre um registro-pai e vários registros-filhos com cardinalidade 1:N, e a
navegação é feita da raiz para as folhas, é o: d) hierárquico.
Gabarito: D
[57] Considere que um determinado tipo de banco de dados organiza os dados na forma de uma
pirâmide, onde o registro principal no topo da pirâmide é chamado registro raiz. Os registros são
organizados como pai e filho onde um registro filho sempre tem apenas um registro pai ao qual
ele está ligado, como em uma árvore familiar normal. Em contrapartida, um registro pai pode ter
mais de um registro filho a ele ligado.
Trata-se do Banco de Dados
a) hierárquico.
b) relacional.
c) orientado a objeto.
d) objeto-relacional.
e) de rede.
Comentário:
Vamos fazer uma rápida revisão sobre os conceitos associados aos modelos de banco de dados
orientados a registros:
O modelo hierárquico de dados foi o primeiro modelo de dados desenvolvido na década de
1960. O modelo de dados hierárquico foi chamado de IMS (Information Management System) e
foi desenvolvido pela IBM e pela Rockwell Company. Ele foi amplamente utilizado durante os
anos 1960 e 1970. As entidades e as relações entre entidades foram estruturadas e gerenciadas
com a ajuda de uma estrutura em forma de árvore. Nesta árvore, existe uma raiz que está
relacionada aos seus filhos. Uma raiz é conhecida como pai. Podemos observar que essa é a
nossa resposta. Veja a figura abaixo com a representação de uma estrutura hierárquica.
Já o modelo de dados de rede representa dados usando o link entre os registros. O registro pai é
chamado de Registro Proprietário, e o registro filho é chamado de Registro de Membro. Se os
registros Proprietário e Membro estiverem relacionados com o relacionamento
muitos-para-muitos, eles estão conectados através do registro do conector que é conhecido
como Set. Agora vejamos um modelo semelhante ao visto acima, agora com as características do
modelo em rede:
Temos ainda o conceito de modelo relacional apresentado por E. F. Codd, em 1970, em seu
documento histórico sobre o modelo de dados relacionais. No modelo relacional, os dados são
representados em uma forma tabular denominada, relação (tabela), e estão associados a
relacionamentos. Portanto, o nome desse modelo é o modelo de dados relacional. Cada
entidade é convertida em relação e a associação é tratada através de chaves primárias e
estrangeiras. Cada ocorrência da entidade é conhecida como tupla (registro) e a característica de
uma entidade é chamada de atributo (coluna). É muito fácil representar a relação
muitos-para-muitos usando o modelo de dados relacionais. O modelo relacional é amplamente
utilizado em todo o mundo, hoje em dia, para armazenar dados. Vejamos agora um exemplo de
um banco de dados relacional de uma livraria on-line.
Gabarito: A
Uma informação importante é que vários desses SGBDs podem se encaixar em mais de um tipo
de modelo de dados. Uma lista completa por tipo de banco de dados pode ser vista no site:
https://db-engines.com/en/ranking. Esse site apresenta uma lista atualizada dos bancos de dados
mais utilizados no mercado.
Outro critério usado para classificar SGBDs é o número de usuários suportados pelo sistema.
Sistemas monousuário admitem apenas um usuário de cada vez, e são usados principalmente
com PCs. Sistemas multiusuário, que incluem a maioria dos SGBDs, admitem múltiplos usuários
simultaneamente.
O terceiro critério é o número de locais sobre os quais o banco de dados está distribuído. Um
SGBD é centralizado se os dados estiverem armazenados em um único computador. Um SGBD
centralizado pode atender a vários usuários, mas o SGBD e o banco de dados residem
integralmente em um único computador. Um SGBD distribuído (SGBDD) pode ter o banco de
dados real e o software de SGBD distribuídos por vários locais, conectados por uma rede de
computadores.
Os SGBDDs homogêneos usam o mesmo software de SGBD em todos os locais, ao passo que
SGBDDs heterogêneos podem usar um software de SGBD diferente em cada local.
Um outro critério de classificação é quanto ao custo para aquisição do produto. Temos os SGBDs
livre, ou de código aberto, e os SGBDs pagos ou de código fechado.
==144bb1==
MONOUSUÁRIO OU MULTIUSUÁRIOS
CENTRALIZADO OU DISTRIBUÍDO
HOMOGÊNEO OU HETEROGÊNEO
PAGO OU GRATUITO
Instâncias x Esquemas
Antes de adentrar no estudo dos modelos de dados queria que você entendesse a diferença
entre esquema e instância. O esquema é a definição da estrutura do modelo e a instância se
refere aos dados armazenados em um esquema em um momento do tempo.
Para descrever os modelos utilizamos os elementos fornecidos por cada um deles e construímos
esquemas. Conhecido como projeto geral do banco de dados, o esquema é basicamente a
descrição do banco, conhecido também como a intenção ou conotação. Baseado nesse
esquema é possível criar uma instância do BD. Essa coleção de dados armazenados no banco de
dados em um determinado instante é o próprio banco de dados, também denominada de
extensão.
Quando se trata de uma instância de banco de dados, o Date faz uma distinção interessante
sobre os valores que estão armazenados. Ele divide os dados armazenados em campo, registro e
arquivo. A figura abaixo nos ajuda a consolidar essa ideia:
==144bb1==
MODELO DE DADOS
Um modelo de dados fornece um significado necessário para permitir a abstração dos dados,
ocultando detalhes de armazenamento. Pode ser visto como uma coleção de conceitos que são
usados para descrever a estrutura de um banco de dados. Cada modelo deve definir uma
coleção de ferramentas conceituais para as seguintes tarefas:
Boa parte dos modelos também dá suporte a operações, algumas dessas operações podem
representar o aspecto dinâmico ou comportamento de uma aplicação de banco de dados. Com
esse conhecimento já podemos resolver uma questão sobre o assunto:
Os modelos de dados podem ser divididos em três categorias de acordo com os tipos de
conceitos usados para descrever a estrutura do banco de dados. No nível mais alto temos os
modelos de dados conceituais que apresentam os dados da forma como os usuários finais
percebem. Em um nível intermediário está a classe de modelos de dados lógicos ou
representacionais que fornece um entendimento aos envolvidos no processo de
desenvolvimento do BD, mas já introduz informações sobre a forma pela qual os dados são
armazenados dentro de um computador. O último nível apresenta os modelos de dados físicos
ou de baixo nível. Observem na figura a seguir:
Antes de continuarmos gostaria de apresentar para você uma figura que mostra a existência de
uma evolução ou um refinamento nos modelos de dados. Esse refinamento reduz o nível de
abstração permitindo a implementação da estrutura de dados no disco rígido ou em outro
dispositivo físico. O passo a passo do projeto de banco de dados será visto em outro momento
neste curso.
Um modelo de dados é uma descrição formal das estruturas de dados presentes em um banco
de dados. Os dois níveis de abstração dos modelos de dados considerados em um projeto de
banco de dados são:
a) modelo conceitual e modelo lógico.
b) modelo lógico e modelo físico.
c) modelo conceitual e modelo físico.
d) modelo de classes e modelo de entidades.
e) modelo de entidades e modelo de relacionamentos.
Comentário:
A provável intenção da FGV nesta questão é que você soubesse quais dois modelos possuem
maior abstração de dados. Ela considerou que o modelo físico não abstrai informações para
definir como os dados serão armazenados. Dessa forma, os modelos onde pode se perceber
maior abstração de dados são o modelo conceitual e o lógico.
Relembrado o conceito de abstração de dados: “o sistema de banco de dados deve garantir uma
visão totalmente abstrata do banco de dados para os diversos tipos de usuários, ou seja, a partir
do grau de conhecimento sobre modelagem e da necessidade de entendimento, pode ser
apresentado ao usuário uma estrutura mais simples, sem muita complexidade, que descreve
apenas quais os dados são armazenados.”
Assim, temos a nossa resposta na alternativa A.
Gabarito: A
evoluir o modelo com as pessoas que vão de fato utilizar os dados armazenados. Essas ações
levam a construção de um projeto de banco de dados mais robusto e adequado para a
organização. O projetista de banco de dados precisa interagir com os usuários da aplicação para
entender suas demandas. Essas demandas vão dar origem a um diagrama que representa as
informações de forma simples, em alto nível.
Esse diagrama geralmente utiliza notações gráficas para representar as entidades,
relacionamentos e atributos que serão armazenados em um banco de dados. Esse tipo de
construção consegue estabelecer uma semântica para os dados. Dentre os exemplos de modelos
conceituais podemos citar o modelo entidade-relacionamento. Partindo dessa representação do
modelo de dados podemos refinar o diagrama, diminuindo a abstração do modelo.
Uma abstração similar pode ser observada quando pensamos na construção de uma casa ou
prédio. Para entender melhor os requisitos do cliente, um arquiteto pode se utilizar de uma
planta baixa ou de uma simulação em três dimensões, ambas são abstrações ou representações
da casa. Assim, o futuro morador pode decidir sobre a disposição dos móveis em um ambiente,
==144bb1==
cores e tamanhos.
Perceba que a casa real é uma implementação do modelo abstrato descrito na planta baixa ou no
modelo em três dimensões (3D). Essa ideia também vale para bancos de dados, o banco de
dados será a implementação de um modelo abstrato que apresenta os requisitos e as definições
necessárias. Para chegarmos ao nível de implementação precisamos começar no nível conceitual
dos modelos de dados, definindo um esquema conceitual.
Perceba que no modelo de dados conceitual queremos definir quais dados serão armazenados.
Neste momento, pouco importa como os dados serão armazenados fisicamente. Por isso,
podemos dizer que os modelos de dados conceituais são independentes de hardware e
software. Eles também não estão associados a um SGBD específico e possuem o mais alto nível
de abstração.
Depois de estabelecermos um modelo conceitual, podemos incorporar mais informações a
respeito das restrições e tipos de dados presentes em cada entidade ou relacionamento. Assim,
reduzimos o nível de abstração do modelo, definindo um modelo lógico ou de implementação
para os dados. A relação ou tabela é a estrutura básica que define um modelo lógico, mais
especificamente um modelo lógico relacional.
Nesta etapa já é possível termos detalhes suficientes para estruturarmos nosso banco de dados.
Podemos, portanto, utilizar a linguagem SQL para definição das tabelas. O comando SQL é
recebido pelo SGBD que se encarrega de criar a estrutura física para armazenamento dos dados.
Ao final da execução dos comandos SQL temos um esquema físico de banco de dados.
O fluxo do projeto de banco de dados possui algumas etapas mais importantes que aparecem
com frequência em provas de concursos: projeto (ou modelagem) conceitual, projeto lógico e
projeto físico.
Gabarito: B
Após conhecermos a divisão de modelo de dados, vamos mudar nosso foco para outra
classificação presente no contexto de banco de dados. Silberschatz apresenta um conceito de
níveis de abstração. O nível de abstração mais baixo ou físico descreve como os dados realmente
são armazenados. Este nível descreve em detalhes estruturas de dados complexas.
O próximo nível de abstração descreve que dados estão armazenados no banco de dados e que
relações existem entre eles. O nível lógico descreve o banco de dados inteiro em termos de um
pequeno número de estruturas relativamente simples. Embora a implementação das estruturas
simples no nível lógico possa envolver estruturas complexas em nível físico, o usuário do nível
lógico não precisa tomar ciência desta complexidade.
O nível de abstração mais alto descreve apenas parte do banco de dados. Muitos usuários de
sistema de banco de dados não precisam de todas as informações armazenadas. Em vez disso,
eles precisam apenas de uma parte do banco de dados. O nível de visão (view) existe para
simplificar sua interação com o sistema, que pode fornecer muitas visões para o mesmo banco de
dados.
A hierarquia de níveis de abstração de dados pode ser vista na figura abaixo:
⦿ Nível externo ou visão - (também conhecido como nível lógico do usuário) é o mais
próximo dos usuários – ou seja, é aquele que se ocupa do modo como os dados são
vistos por usuários individuais.
Olhando para a figura anterior percebemos que diferentes grupos de usuários acessam visões
externas distintas. A figura mostra dois grupos de usuários A e B acessando suas respectivas
visões externas por meio de uma sublinguagem de dados (DSL). Toda DSL é dividida em pelo
menos duas sublinguagens: uma linguagem de definição de dados (DDL) que dá suporte à
criação de objetos no banco de dados; e a linguagem de manipulação de dados (DML) que
permite o processamento ou manipulação dos objetos.
O nível externo é o nível de usuário individual. Uma visão externa representa o conteúdo visto
por um determinado usuário. Pense que para esse usuário o banco de dados é composto apenas
pela parte que ele enxerga (sabe nada inocente! :)). Muitas vezes, um usuário tem acesso a
apenas alguns atributos de uma tabela ou arquivo. Essa composição de atributos que não
compreende a totalidade das colunas é conhecida como registro externo. Cada visão externa é
definida como um esquema externo e descrita por meio de uma DDL externa.
A visão conceitual representa todo o conteúdo do banco de dados também em um nível de
abstração razoável quando comparado ao nível interno. A visão conceitual consiste em várias
ocorrências de cada um dos tipos de registros conceituais. Um esquema conceitual é usado para
descrever cada um dos registros para tal usa uma linguagem de definição conhecida como DDL
conceitual.
A visão interna é uma representação de baixo nível do banco de dados inteiro. Ela é formada por
várias ocorrências dos registros internos1. No nível interno deverá haver referência a
representações de campos armazenados, sequências de registros armazenados, índices,
esquemas de hashing, ponteiros ou outros detalhes de armazenamento e acesso. Para tal, vamos
usar um esquema interno usando uma DDL interna.
Veja na tabela abaixo que, embora os termos nível, registros, esquemas e DDL apareceram várias
vezes na explicação acima, eles seguem a lógica do "♫cada um no seu quadrado♫".
1
Registro interno é o termo ANSI/SPARC que representa a construção que temos chamado de registro armazenado
Falta falar sobre um último tópico desta seção ... a independência dos dados que nada mais é do
que a capacidade de alterar o esquema em um nível dos sistemas de banco de dados sem alterar
o esquema no nível mais alto ou, em outras palavras a habilidade de modificar a definição de um
esquema em um nível sem afetar a definição do esquema em um nível mais alto.
Segundo Navathe é possível definir dois tipos de independência de dados:
Se a estrutura do banco de dados armazenado for alterada – isto é, se for efetuada uma mudança
na definição do banco de dados armazenado – o mapeamento conceitual/interno terá de ser
alterado de acordo, a fim de que o esquema conceitual possa permanecer invariável. Em outras
palavras, os efeitos dessas mudanças devem ser isolados abaixo do nível conceitual, a fim de
preservar a independência de dados física.
Apresentamos a seguir uma figura que descreve os níveis da arquitetura em três esquemas.
Observem que pela definição de independência de dados é necessário a existência de um nível
superior ao esquema alterado. Desta forma só temos o conceito para os níveis conceitual e
interno da figura.
De uma forma simples, cada um dos níveis possui uma função dentro das suas respectivas
abstrações. O nível de visão do usuário determina a parte em que o usuário tem acesso. O nível
conceitual identifica os dados armazenados e suas relações. Por fim, o nível interno é o nível mais
baixo de abstração, define a maneira como os dados estão armazenados. Vejamos mais algumas
questões sobre o assunto:
No que se refere às características de um banco de dados relacional, julgue o item que se segue.
Visões podem ser usadas para definir relações no esquema externo que exibem para os
aplicativos as alterações feitas no esquema conceitual do banco de dados.
Comentário:
As visões são usadas para manter a independência de dados, logo elas vão esconder as
alterações feitas no esquema conceitual da arquitetura em 3 esquemas e não as exibir. Assim,
temos uma alternativa incorreta.
Gabarito: Errado
a) ==144bb1==
b)
c)
d)
e)
Comentário:
Perceba que a figura que apresenta as descrições corretas para os nomes e os níveis está
presente na alternativa A.
Gabarito: A
Acabamos de falar da arquitetura em três esquemas ANSI/SPARC que tem como objetivo separar
a aplicação do banco de dados físico. Nessa arquitetura, temos uma divisão dos esquemas em
três níveis:
Interno: nesse nível está o esquema interno do banco de dados. Esse esquema contém a
descrição da estrutura física, ou seja, informações detalhadas sobre como os dados são
armazenados no hardware, definições das estruturas, índices, caminhos de acesso.
Conceitual: nesse nível está o esquema conceitual, onde é descrita a estrutura do banco de
dados para uma comunidade de usuários. Esse esquema não traz detalhes físicos, o foco é
descrever quais dados do banco são armazenados, como eles se relacionam e as restrições
existentes.
Externo: nesse nível existem uma série de esquemas externos ou visões do usuário. Cada uma
dessas visões descreve uma parte do banco que interessa a um determinado usuário (ou grupo
de usuários), ocultando todo o restante dos dados.
Assim, temos nossa resposta na alternativa B.
Gabarito: B
Considerando o sistema gerenciador de banco de dados (SGBD), assinale a opção correta acerca
de bancos de dados.
a) Enquanto a DDL (Data Definition Language) é utilizada para definir a estrutura do banco de
dados, a SDL (Storage Definition Language) é utilizada para especificar o esquema conceitual e
seus mapeamentos com o esquema interno.
b) A informação armazenada no catálogo do SGBD é denominada metamodelo.
c) Na independência de dados do programa, propriedade do SGBD, a estrutura dos arquivos de
dados é armazenada no catálogo separadamente dos programas de acesso.
d) Na arquitetura de três esquemas de um banco de dados, o nível conceitual é responsável por
descrever de forma detalhada as estruturas de armazenamento físico, incluindo os
relacionamentos entre as tabelas.
e) Na arquitetura de três esquemas, a capacidade de alterar o esquema interno sem ter de alterar
o esquema conceitual consiste na independência lógica de dados.
Comentário:
Nesta questão, tão importante quanto saber que a alternativa C está correta, e esse assunto nós
já vimos no início da aula, é entender por que as outras estão erradas. Perceba primeiramente
que, se formos teoricamente precisos, deveríamos trocar SGBD por SDB. (lembra?!, SGBD + DB
= SBD) A questão é que alguns autores falam da abordagem de sistemas de gerenciamento de
banco de dados. Assim, essa acaba sendo a menos errada das alternativas.
Na alternativa A, o examinador sugere que SDL, é utilizada para descrever um esquema
conceitual. Vejam que SDL está relacionada com armazenamento, e, quando existe de forma
separada em uma linguagem, é utilizada para definir os detalhes do nível interno.
Na alternativa B, no lugar de meta modelo, o correto seria metadados.
Na alternativa D, o nível descrito é o nível interno.
Por fim, a alternativa E trata de independência física e não lógica como descrito no texto.
Gabarito: C.
7. Ano: 2016 Órgão: TCE-PA Prova: Auditor de Controle Externo - Área Informática -
Analista de Sistema
Julgue o item subsequente, no que se refere a sistemas de gerenciamento de bancos de dados
(SGBD).
Independência lógica de dados refere-se à capacidade de alterar o esquema conceitual sem a
necessidade de alterar os esquemas externos ou os programas de aplicação.
Comentário:
Lembre-se que a independência lógica ou conceitual atual no nível intermediário da arquitetura
em 3 esquemas. Ela está relacionada ao fato de que modificações nesta camada da arquitetura
não gera necessidade de alteração nos esquemas externos ou programas de aplicação. Desta
forma, a alternativa encontra-se correta.
Gabarito: C.
8. Ano: 2016 Órgão: TCE-PA Prova: Auditor de Controle Externo - Área Informática -
Administrador de Banco de Dados
Com relação a sistemas gerenciadores de bancos de dados (SGBD), julgue o próximo item.
No nível conceitual da arquitetura de três camadas de banco de dados, cada esquema externo
descreve a parte do banco que interessa a determinado grupo de usuários e oculta desse grupo
o restante do banco de dados.
Comentário:
Perceba que essa questão apresenta uma casca de banana das mais malvadas. Ele mistura o nível
conceitual da arquitetura em três esquemas com o nível externo. Sabemos que os esquemas
externos estão associados às diferentes visões dos grupos de usuários. Tal fato reflete os
interesses distintos de cada grupo quanto ao acesso às informações do banco de dados. Assim,
podemos marcar nosso gabarito como errado.
Gabarito: E.
Nas próximas linhas vou descrever um pouco dos componentes da figura acima. Os conceitos
podem ser úteis para que você entenda um pouco da “caixa preta” por trás de um SGBD.
O acesso aos discos rígidos é controlado pelo sistema operacional ou pelo próprio SGBD. O
controle vai escalonar as operações de leitura e escrita sobre o disco. Quando consideramos a
execução de uma transação sobre o banco de dados, o intervalo de tempo gasto na transferência
de dados entre a memória e o disco é considerado um gargalo no processamento. Para otimizar
o processo alguns SGBDs podem contar com um módulo de gerenciamento de buffer que
planeja a troca de dados entre a memória principal e o disco.
modelo relacional é um exemplo de objeto que podemos criar por meio de uma instrução DDL
em nossa base de dados.
Quando o DBA digitar uma instrução ou comando DDL, essa é enviada ao compilador DDL. Um
compilador transforma o código fonte (da linguagem de programação) em um código que o
computador entenda. O compilador da DDL processa as definições de esquema especificadas e
armazena as descrições de esquema (metadados) no catálogo do SGBD. Esse fluxo pode ser
observado no lado esquerdo da figura anterior.
Outra função do DBA é o ajuste fino ou tuning do sistema de gerenciamento de banco de dados,
bem como a configuração de parâmetros que são feitos por meio dos comandos privilegiados.
Apenas para exemplificar, um comando presente na maioria dos SGBDs é o REORG, serve para
reorganizar uma tabela ou índice na estrutura física do banco de dados.
Os usuários casuais interagem usando alguma interface de consulta interativa. Essas consultas
são analisadas e validadas pela exatidão da sintaxe da consulta, os nomes de arquivos e
elementos de dados, e assim por diante, por um compilador de consulta. Essa consulta interna
está sujeita a melhorias feitas pelo otimizador de consultas, que se preocupa com o rearranjo e a
possível reordenação de operações, com a eliminação de redundâncias e uso dos algoritmos e
índices corretos durante a execução.
Ele consulta o catálogo do sistema em busca de informações estatísticas e outras informações
físicas sobre os dados armazenados, gerando um código executável. Este por sua vez realiza as
operações necessárias para a consulta e faz chamadas ao processador em tempo de execução
(falaremos mais sobre ele logo mais).
Os programadores de aplicação escrevem programas em linguagens hospedeiras, como Java e
C#, que são submetidas a um pré-compilador. Este extrai os comandos DML do programa de
aplicação. Para entender melhor como funciona essa divisão vamos partir para um exemplo
prático. No exemplo abaixo temos um código Java com um comando SQL. O comentário (//) no
código delimita o início da instrução SQL dentro do código Java.
Figura 18 - Exemplo de código em Java que faz acesso a uma tabela de nomes de usuários. Primeiramente criamos uma conexão
com o banco, depois um objeto Statement e executamos a consulta passando o código SQL para o método executeQuery da
classe Statement. O resultado é gravado em uma instância da classe ResultSet.
Observem que o comando select. Ele está escrito na linguagem SQL considerada uma DML.
Esses comandos são enviados ao compilador DML para serem compilados em código objeto
com acesso ao banco de dados. O restante do programa é enviado ao compilador da linguagem
hospedeira. Os códigos objetos para os comandos DML e o restante do programa são ligados
(‘linkados’) formando uma transação programada ou compilada.
As transações programadas são executadas repetidas vezes pelos usuários paramétricos, que
apenas fornecem os parâmetros para as transações. No nosso exemplo anterior, as informações
necessárias são login e senha. Cada execução é considerada uma transação separada. Outro
exemplo de transação é o saque no caixa eletrônico, no qual o número da conta e o valor são
fornecidos como parâmetros.
Na parte inferior da figura temos o processador de banco de dados em tempo de execução
(PBDTE). Ele é responsável por executar os comandos privilegiados, os planos de consulta
executáveis e as transações programadas. Para isso são utilizadas informações e dados
estatísticos do catálogo do sistema. O PBDTE também trabalha com o gerenciador de dados
armazenados.
Os sistemas de controle de concorrência, backup e recuperação são apresentados como um
módulo da figura. Eles são integrados ao processador de banco de dados em tempo de
execução para fins de gerenciamento de transações. Você precisa ter em mente que esses
controles são necessários para o perfeito funcionamento do SGBD. O backup é utilizado durante
a recuperação caso alguma falha aconteça. A concorrência entre transações deve existir dentro
de limites bem definidos para evitar que o banco de dados entre em um estado inconsistente.
A figura apresentada não pretende descrever um SGBD específico nem esgotar suas
funcionalidades. Nossa ideia foi ilustrar os módulos básicos de um SGBD e estruturar seu
raciocínio. Lembre-se que um SGBD é um sistema informatizado. Para executar todas as suas
tarefas sua implementação é dividida em diferentes módulos. O SGBD interage ainda com o
sistema operacional quando o acesso ao disco rígido é necessário. Vamos fazer uma questão que
trata do assunto.
Gabarito: A.
Espero que você tenha entendido nossa proposta de apresentar o ambiente do SGBD.
Acabamos aqui o nosso primeiro conjunto de assuntos teóricos envolvidos na introdução dos
sistemas de bancos de dados.