Você está na página 1de 124

Polícia Civil do Estado da Paraíba

Concurso Público 2021

Conteúdo
Noções de mineração de dados. - Noções e características. - Noções de aprendizado de máquina.
- Noções de bigdata: conceito, premissas, aplicação. - Noções de aplicação python e R. - API
(application programming interface). - Metadados de arquivos. - Teoria da informação. - Conceitos de
informação, dados, representação de dados, conhecimentos, segurança e inteligência.
Banco de dados. - Base de dados, documentação e prototipação. - Modelagem conceitual:
abstração, modelo entidade relacionamento, análise funcional e administração de dados. - Dados
estruturados e não estruturados. - Banco de dados relacionais: conceitos básicos e características. -
Chaves e relacionamentos.

Coletâneas de Exercícios Pertinentes

1
Noções de Mineração de Dados: Conceituação e Características
A mineração de dados usa princípios estatísticos pesquisados para descobrir padrões em seus dados,
ajudando-o a tomar decisões inteligentes sobre problemas complexos.
Ao aplicar os algoritmos de mineração de dados a seus dados no Analysis Services, você pode prever
tendências, identificar padrões, criar regras e recomendações, analisar a sequência de eventos em conjuntos
de dados complexos e ter novas ideias.

No SQL Server 2014, a mineração de dados é um recurso avançado, acessível e integrado com as ferramentas
que muitas pessoas preferem usar para análise e relatório.

Principais recursos de mineração de dados

O SQL Server fornece os recursos a seguir ao dar suporte a soluções de mineração de dados integradas:
- Várias fontes de dados: você não tem que criar um data warehouse ou um cubo OLAP para fazer mineração
de dados.
Você pode usar dados de tabelas de provedores externos, de planilhas e até mesmo de arquivos de texto.
Também é possível minerar facilmente cubos OLAP criados no Analysis Services. Porém, você não pode usar
dados de um banco de dados na memória.
- Limpeza de dados integrada, gerenciamento de dados e ETL: Data Quality Services fornecem ferramentas
avançadas para criação de perfil e limpar dados. O Integration Services pode ser usado para criar processos
ETL para limpar dados e também para criar, processar, treinar e atualizar modelos.
- Vários algoritmos personalizáveis: além de fornecer algoritmos como clustering, redes neurais e árvores
de decisões, a plataforma dá suporte a desenvolvimento de seus próprios algoritmos de plug-in personalizados.
- Infraestrutura de testes de modelo: teste seus modelos e conjuntos de dados usando ferramentas
estatísticas importantes como validação cruzada, matrizes de classificação, gráficos de comparação de
precisão e dispersões.
Crie e gerencie conjuntos de teste e treinamento com facilidade.
- Consulta e detalhamento: crie consultas de previsão, recupere padrões modelo e estatísticas e detalhe os
dados de caso.
- Ferramentas de cliente: além dos estúdios de desenvolvimento e design fornecidos pelo SQL Server, você
pode usar os Suplementos de Mineração de Dados para Excel para criar, consultar e procurar modelos. Ou
crie clientes personalizados, inclusive serviços Web.
- Suporte a linguagem de scripts e API gerenciada: todos os objetos de mineração de dados são
completamente programáveis. Gerar scripts é possível por meio do MDX, XMLA ou as extensões de
PowerShell para o Analysis Services. Use a linguagem DMX (Data Mining Extensions) para consultar e gerar
script rapidamente.
- Segurança e implantação: fornece segurança baseada em função por meio do Analysis Services, inclusive
permissões separadas para detalhamento para modelar e estruturar dados. Implantação fácil de modelos para
outros servidores, de forma que os usuários possam acessar os padrões ou executar previsões

Conceitos de mineração de dados

A mineração de dados é o processo de descoberta de informações acionáveis em grandes conjuntos de dados.


A mineração de dados usa análise matemática para derivar padrões e tendências que existem nos dados.
Normalmente, esses padrões não podem ser descobertos com a exploração de dados tradicional pelo fato de
as relações serem muito complexas ou por haver muitos dados. Esses padrões e tendências podem ser
coletados e definidos como um modelo de mineração de dados. Os modelos de mineração podem ser se
aplicados a cenários específicos, como:
- Previsão: Estimando vendas, prevendo cargas de servidor ou tempo de inatividade de servidor
- Risco e probabilidade: Escolhendo os melhores clientes para malas diretas, determinando o ponto
equilibrado provável para cenários de risco, atribuindo probabilidades a diagnósticos ou outros resultados
- Recomendações: Determinando quais produtos são mais prováveis de serem vendidos juntos, gerando
recomendações
- Localizando sequências: Analisando seleções de cliente em um carrinho de compras, prevendo os próximos
eventos prováveis

2
- Agrupamento: Separando clientes ou eventos em cluster de itens relacionados, analisando e prevendo
afinidades

Modelo de referência CRISP-DM. Técnicas para pré- processamento de dados.

O CRISP-DM (Cross Industry Standard Process for Data Mining) é um modelo de processo para realizarmos
mineração de dados, com o objetivo de termos um processo consistente, repetitividade e objetividade. O
modelo do processo de mineração de dados proporciona uma visão do ciclo de vida do projeto, contendo as
fases de um projeto, suas respectivas tarefas e as relações entre essas tarefas.

A criação de um modelo de mineração representa apenas uma parte de um processo maior que inclui desde
perguntas sobre dados e criação de um modelo até respostas para as perguntas feitas e implantação do
modelo em um ambiente de trabalho. Esse processo pode ser definido usando as seis etapas básicas a seguir:
- Definindo o problema
- Preparando dados
- Explorando dados
- Criando modelos
- Explorando e validando modelos
- Implantando e atualizando modelos

O diagrama a seguir descreve as relações entre cada etapa do processo e as tecnologias no Microsoft SQL
Server que você pode usar para concluir cada etapa.

O processo ilustrado no diagrama é cíclico, ou seja, criar um modelo de mineração de dados é um processo
dinâmico e repetitivo. Depois de explorar os dados, você pode descobrir que eles são insuficientes para criar
modelos de mineração apropriados e que você terá, portanto, que obter mais dados.

Ou você pode criar vários modelos e, depois, perceber que os modelos não respondem adequadamente o
problema definido e que você deverá redefinir o problema. Talvez seja necessário atualizar os modelos depois
de eles serem implantados, pois haverá mais dados disponíveis. Cada etapa do processo pode precisar ser
repetida muitas vezes para criar um bom modelo.

A Mineração de Dados do Microsoft SQL Server fornece um ambiente integrado para a criação e manipulação
dos modelos de mineração de dados. Este ambiente inclui o SQL Server Development Studio, que contém
algoritmos de mineração de dados e ferramentas de consulta que facilitam a construção de uma solução
abrangente para uma variedade de projetos e o SQL Server Management Studio, que contém ferramentas
para procurar modelos e gerenciar objetos de mineração de dados.

Definindo o problema

A primeira etapa do processo de mineração de dados, como destacado no diagrama a seguir, é definir
claramente o problema e considerar maneiras de os dados serem utilizados para fornecer respostas para ele.

3
Essa etapa inclui a análise dos requisitos de negócio, a definição do escopo do problema, a definição das
métricas usadas para avaliar o modelo e, por fim, a definição de objetivos específicos para o projeto de
mineração de dados.
Essas tarefas podem ser traduzidas em perguntas, como:
- O que você deseja? Quais tipos de relações está tentando localizar?
- O problema que você está tentando solucionar se reflete nas políticas e nos processos da empresa?
- Você deseja fazer previsões com o modelo de mineração de dados ou apenas identificar padrões e
associações interessantes?
- Qual resultado ou atributo você deseja prever?
- Que tipo de dados você tem e que tipo de informações está em cada coluna? Se houver várias tabelas, como
elas estão relacionadas? Você precisa executar alguma limpeza, agregação ou processamento para tornar os
dados utilizáveis?
- Como os dados são distribuídos? Os dados são sazonais?
Os dados representam de forma precisa os processos da empresa?

Para responder essas perguntas, talvez seja necessário realizar um estudo da disponibilidade de dados para
investigar as necessidades dos usuários da empresa com relação aos dados disponíveis. Se os dados não
forem suficientes para suprir as necessidades dos usuários, talvez você tenha que redefinir o projeto.
Também é necessário considerar a forma como os resultados do modelo podem ser incorporados em KPIs
(indicadores chave de desempenho) usados para avaliar o progresso dos negócios.

Preparando dados

A segunda etapa do processo de mineração de dados, como destacado no diagrama a seguir, é consolidar e
limpar os dados identificados na etapa Definindo o problema.

4
Os dados podem estar espalhados pela empresa e armazenados em diferentes formatos ou podem conter
inconsistência, como entradas ausentes ou incorretas. Por exemplo, os dados podem mostrar que um cliente
comprou um produto antes desse produto ser efetivamente colocado a venda no mercado ou que o cliente faz
compras regularmente em uma loja localizada a 3.000 quilômetros da casa dele.

A limpeza de dados não envolve apenas a remoção de dados incorretos ou interpolação de valores ausentes,
mas também a localização de correlações ocultas nos dados, a identificação de fontes de dados mais precisas
e a determinação de quais colunas são mais apropriadas para a análise. Por exemplo, você deveria usar a
data de envio ou a data de pedido? O melhor influenciador de vendas é a quantidade, o preço total ou o preço
com desconto? Dados incompletos, incorretos e entradas que parecem independentes, mas que são muito
relacionadas, podem influenciar os resultados do modelo de formas inesperadas.

Portanto, antes de iniciar a criação de modelos de mineração, você deve identificar esses problemas e
determinar como solucioná-los. Para a mineração de dados, normalmente você está trabalhando com um
conjunto de dados muito grande e não pode examinar a qualidade de dados de cada transação; portanto, você
pode precisar usar alguma forma de criação de perfis de dados e ferramentas automatizadas de limpeza de
dados e filtragem, como as fornecidas no Integration Services, Microsoft SQL Server 2012 Master Data
Services ou SQL Server Data Quality Services para explorar os dados e localizar as inconsistências.

É importante saber que os dados usados na mineração de dados não precisam estar armazenados em um
cubo OLAP (processamento analítico online) nem mesmo em um banco de dados relacional, apesar de ambos
poderem ser usados como fontes de dados. Você pode conduzir a mineração de dados usando qualquer fonte
de dados definida como uma fonte de dados do Analysis Services. Isso inclui arquivos de texto, pasta de
trabalho do Excel e dados de outros provedores externos.

Explorando dados

A terceira etapa do processo de mineração de dados, como destacado no diagrama a seguir, é explorar os
dados preparados.

5
Você deve compreender os dados para tomar decisões apropriadas ao criar os modelos de mineração. As
técnicas de exploração incluem cálculos dos valores máximos e mínimos, cálculos das médias e dos desvios
padrões e análise da distribuição dos dados. Por exemplo, ao analisar os valores máximos, mínimos e médios,
você pode determinar que os dados não são representativos para seus clientes ou processos de negócio e
que você deve obter mais dados equilibrados ou revisar as suposições que determinam suas expectativas. Os
desvios padrão e outros valores de distribuição podem fornecer informações útil sobre a estabilidade e precisão
dos resultados. Um desvio padrão muito grande indica que incluir mais dados pode ser útil para melhorar o
modelo. Os dados que desviam muito de uma distribuição padrão podem estar distorcidos ou representar uma
imagem precisa do problema real, dificultando, porém, o ajuste de um modelo aos dados.

Ao explorar os dados levando em consideração o seu conhecimento do problema dos negócios, é possível
decidir se o conjunto contém dados imperfeitos. Com isso, você poderá criar uma estratégia para solucionar
os problemas ou compreender ainda mais os comportamentos típicos na sua empresa.

Você pode usar ferramentas como o Master Data Services para investigar origens disponíveis de dados e
determinar a sua disponibilidade para mineração de dados. Você pode usar ferramentas como o SQL Server
Data Quality Services, ou o Criador de Perfil no Integration Services, para analisar a distribuição de seus dados
e corrigir problemas como dados errados ou ausentes.

Depois de definir suas origens, você as combina em uma exibição da fonte de dados usando o Designer de
Exibição da Fonte de Dados no SQL Server Data Tools.

Este designer também contém várias ferramentas que você pode usar para explorar os dados e verificar que
eles funcionarão para criar um modelo.

Observe que, ao criar um modelo, o Analysis Services cria automaticamente resumos estatísticos de dados do
modelo, que podem ser consultados para uso em relatórios ou para análises detalhadas.

Criando modelos

A quarta etapa do processo de mineração de dados, como destacado no diagrama a seguir, é criar o modelo
ou modelos de mineração. Você usará o conhecimento obtido na etapa Explorando dados para ajudá-lo a
definir e criar os modelos.

6
Você define as colunas de dados que você deseja usar ao criar uma estrutura de mineração. A estrutura de
mineração é vinculada à origem dos dados, mas realmente não contém nenhum dado até que seja processada.
Ao processar a estrutura de mineração, o Analysis Services gera agregações e outras informações estatísticas
que podem ser usadas para análise. Essas informações podem ser usadas por qualquer modelo de mineração
com base na estrutura.

Antes de a estrutura e o modelo serem processados, também o modelo de mineração de dados é apenas um
contêiner que especifica as colunas usadas para entrada, o atributo que você está prevendo e os parâmetros
que indicam ao algoritmo como os dados devem ser processados. O processamento de um modelo é
geralmente chamado de treinamento. Treinamento refere-se ao processo de aplicação de um algoritmo
matemático específico aos dados na estrutura com a finalidade de extrair padrões. Os padrões que você
localiza no processo de treinamento dependem da seleção de dados de treinamento, o algoritmo que você
escolheu e como você configurou o algoritmo. O SQL Server 2014 contém muitos algoritmos diferentes, cada
um adequado a um tipo diferente de tarefa e cada um criando um tipo diferente de modelo.

Você também pode usar parâmetros para ajustar cada algoritmo e aplicar filtros aos dados de treinamento para
usar apenas um subconjunto de dados, criando diferentes resultados. Depois de passar os dados pelo modelo,
o objeto do modelo de mineração conterá resumos e padrões que poderão ser consultados ou usados para
previsão.

É possível definir um novo modelo usando o Assistente de Mineração de Dados do SQL Server Data Tools ou
a linguagem DMX (Data Mining Extensions).

É importante lembrar-se de que sempre que os dados mudarem, será necessário atualizar a estrutura e o
modelo de mineração. Quando você atualiza uma estrutura de mineração reprocessando-a, o Analysis
Services recupera dados da origem, incluindo quaisquer dados novos caso a origem seja atualizada
dinamicamente, e repopula a estrutura de mineração. Se você tiver modelos com base na estrutura, poderá
optar pela atualização dos modelos com base na estrutura, o que significa que eles serão retreinados nos
novos dados, ou poderá manter o modelo como está.

Explorando e validando modelos

A quinta etapa do processo de mineração de dados, como destacado no diagrama a seguir, é explorar os
modelos de mineração criados e testar a eficiência deles.

7
Antes de implantar um modelo em um ambiente de produção, você provavelmente o testará para avaliar o
desempenho. Além disso, ao criar um modelo, você normalmente cria vários modelos com diferentes
configurações e os testa para verificar qual deles gera os melhores resultados para seu problema e seus dados.
O Analysis Services fornece ferramentas que o ajudam a separar seus dados em conjuntos de dados de teste
e de treinamento, de forma que você possa avaliar com precisão o desempenho de todos os modelos nos
mesmos dados. Você usa o conjunto de dados de treinamento para criar um modelo e o conjunto de dados de
teste para testar a precisão do modelo ao criar consultas de previsão. No SQL Server 2014 Analysis Services
(SSAS), esse particionamento pode ser feito automaticamente durante a criação do modelo de mineração de
dados.

É possível explorar as tendências e os padrões que os algoritmos descobrem usando os visualizações no


Designer de Mineração de Dados do SQL Server Data Tools.

Você também pode testar como os modelos criam previsões usando ferramentas do designer, como o gráfico
de comparação de precisão e a matriz de classificação. Para verificar se o modelo é específico para seus
dados ou se pode ser usado para fazer deduções na população geral, você pode usar a técnica estatística
chamada validação cruzada para criar, automaticamente, subconjuntos de dados e testar modelos em cada
subconjunto.

Se nenhum dos modelos criados na etapa Criando modelos tiver um bom desempenho, você poderá retornar
a uma etapa anterior no processo e redefinir o problema ou investigar novamente os dados no conjunto de
dados original.

Implantando e atualizando modelos

A última etapa do processo de mineração de dados, como destacado no diagrama a seguir, é implantar os
modelos que tiveram o melhor desempenho em um ambiente de produção.

8
Depois que os modelos de mineração existirem em um ambiente de produção, será possível realizar várias
tarefas de acordo com suas necessidades. Estas são algumas tarefas que você poderá realizar:
- Use os modelos para criar previsões, que poderão ser usadas para tomar decisões comerciais. O SQL Server
fornece
a linguagem DMX, que pode ser usada para criar consultas de previsão, e o Construtor de Consultas de
Previsão para ajudá-lo a criar as consultas.
- Crie consultas de conteúdo para recuperar estatísticas, regras ou fórmulas do modelo.
- Insira a funcionalidade de mineração de dados diretamente em um aplicativo. Você pode incluir Objetos de
Gerenciamento de Análise (AMO) que contém um conjunto de objetos que seu aplicativo pode usar para criar,
alterar, processar e excluir estruturas e modelos de mineração. Como alternativa, você pode enviar mensagens
XMLA (XML for Analysis) diretamente para uma instância do Analysis Services.
- Use o Integration Services para criar um pacote no qual um modelo de mineração é usado para separar dados
recebidos, de forma inteligente, em diversas tabelas. Por exemplo, se um banco de dados for atualizado
continuamente com clientes potenciais, será possível usar um modelo de mineração juntamente com o
Integration Services para dividir os dados recebidos entre os clientes que têm probabilidade de adquirir um
produto e os que têm probabilidade em não adquirir o produto.
- Crie um relatório que permita que os usuários consultem diretamente um modelo de mineração existente.
- Atualize os modelos depois da revisão e análise. As atualizações exigirão o reprocessamento dos modelos.
- A atualização dinâmica dos modelos, à medida que a organização gera mais dados, e alterações constantes
para melhorar a eficiência da solução devem fazer parte da sua estratégia de implantação.

Técnicas e tarefas de mineração de dados.

Classificação. Regras de associação.

A estrutura de mineração define os dados a partir dos quais os modelos de mineração são criados. Ela
especifica a exibição da fonte de dados, o número e tipo de colunas e uma partição opcional nos conjuntos de
treinamento e teste. Uma única estrutura de mineração pode oferecer suporte a vários modelos de mineração
que compartilham o mesmo domínio. O diagrama a seguir mostra a relação da estrutura de mineração de
dados com a fonte de dados e com os modelos de mineração de dados que a compõe.

9
A estrutura de mineração apresentada neste diagrama tem como base uma fonte de dados que contém
diversas tabelas ou exibições unidas no campo ID do Cliente. Uma tabela contém informações sobre os
clientes, como região geográfica, idade, renda e sexo, enquanto que a tabela aninhada relacionada contém
diversas linhas com informações adicionais sobre cada cliente, como o tipo de produto adquirido. O diagrama
mostra que vários modelos podem ser criados na mesma estrutura de mineração e que os modelos podem
usar colunas diferentes da estrutura.
Modelo 1: Usa ID do Cliente, Renda, Idade e Região e filtra os dados em Região.
Modelo 2: Usa ID do Cliente, Renda, Idade e Região e filtra os dados em Idade.
Modelo 3: Usa ID do Cliente, Idade, Sexo e a tabela aninhada, sem filtro.

Como os modelos usam colunas diferentes para entrada e, além disso, dois modelos restringem ainda mais os
dados que são usados no modelo com a aplicação de um filtro, os modelos podem ter resultados bem
diferentes, mesmo que tenham como base os mesmos dados. Observe que a coluna CustomerID é obrigatória
em todos os modelos, pois ela é a única coluna disponível que pode ser usada como chave do caso.
Esta seção explica a arquitetura básica de estruturas de mineração de dados: como você define uma estrutura
de mineração, como você a popula com dados e como você a usa para criar modelos.

Definindo uma estrutura de mineração

A configuração de uma estrutura de mineração de dados inclui as seguintes etapas:


- Definir uma fonte de dados.
- Selecionar colunas de dados para incluir na estrutura (nem todas as colunas precisam ser adicionadas ao
modelo) e definindo uma chave.
- Definir uma chave para a estrutura, incluindo a chave para a tabela aninhada, se aplicável.
- Especifique se os dados de origem devem estar separados em um conjunto de treinamento e um conjunto de
teste. Essa etapa é opcional.
- Processar a estrutura.
Essas etapas são descritas mais detalhadamente nas seções a seguir.

Fontes de dados para estruturas de mineração

Quando você define uma estrutura de mineração, você usa colunas que estão disponíveis em uma exibição da
fonte de dados existente. Uma exibição de fonte de dados é um objeto compartilhado que permite que você
combine várias fontes de dados. As fontes de dados originais não são visíveis a aplicativos cliente e você pode
usar as propriedades da exibição da fonte de dados para modificar tipos de dados, criar agregações, ou
designar um alias para as colunas.

10
Se você criar vários modelos de mineração a partir da mesma estrutura de mineração, os modelos poderão
usar colunas diferentes da estrutura. Por exemplo, você pode criar uma única estrutura e, em seguida, criar
uma árvore de decisão separada e modelos clustering dele, com cada modelo usando colunas diferentes e
prevendo atributos diferentes.

Além disso, cada modelo pode usar as colunas da estrutura de modos diferentes. Por exemplo, sua exibição
da fonte de dados pode conter uma coluna de Receita que você pode guardar de modos diferentes para
modelos diferentes.

A estrutura de mineração de dados armazena a definição da fonte de dados e as colunas nela na forma de
associações para os dados de origem. No entanto, observe que você também pode criar uma estrutura de
mineração de dados sem associação a uma fonte de dados específica; basta usar a instrução DMX CRIAR
UMA ESTRUTURA DE MINERAÇÃO (DMX).

Colunas da estrutura de mineração

Os blocos de construção da estrutura de mineração são as colunas da estrutura de mineração, que descrevem
os dados que a fonte de dados contém. Essas colunas contêm informações como tipo de dados, tipo de
conteúdo e como os dados são distribuídos. A estrutura de mineração não contém informações sobre como as
colunas são usadas para um modelo de mineração específico ou sobre o tipo de algoritmo usado para criar um
modelo; essas informações são definidas no próprio modelo de mineração.

Uma estrutura de mineração também pode conter tabelas aninhadas. Uma tabela aninhada representa uma
relação um para muitos entre a entidade de um caso e seus atributos relacionados. Por exemplo, se as
informações que descrevem o cliente residirem em uma tabela, e as compras do cliente residirem em outra
tabela, você poderá usar tabelas aninhadas para combinar as informações em um único caso. O identificador
de cliente é a entidade, e as compras são os atributos relacionados. Para obter mais informações sobre quando
devem ser usadas as tabelas aninhadas, consulte

Tabelas aninhadas (Analysis Services - Mineração de Dados).

Para criar um modelo de mineração de dados no SSDT (SQL Server Data Tools), você deve primeiro criar uma
estrutura de mineração de dados. O Assistente de Mineração de Dados o guia pelo processo de criação de
uma estrutura de mineração, seleção de dados e adição de um modelo de mineração.
Se você criar um modelo de mineração usando DMX (Data Mining Extensions), poderá especificar o modelo e
as colunas nele, e o DMX criará automaticamente a estrutura de mineração necessária.

Dividindo os dados em conjuntos de treinamento e de teste

Quando você define os dados da estrutura de mineração, você também pode especificar que alguns deles
devem ser usados para treinamento e outros para teste. Portanto, não é mais necessário separar seus dados
antes de criar uma estrutura de mineração de dados. Em vez disso, enquanto você cria seu modelo, pode
especificar que uma determinada porcentagem dos dados são para teste e que o restante deve ser usado para
treinamento ou pode especificar que um determinado número de casos deve ser usado como conjunto de
dados de teste. As informações sobre os conjuntos de dados de treinamento e teste são armazenadas em
cache com a estrutura de mineração e, como resultado, o mesmo conjunto de teste pode ser usado com todos
os modelos baseados nessa estrutura.

Habilitando o detalhamento

Você pode adicionar colunas à estrutura de mineração mesmo que você não pretenda usá-la em um modelo
de mineração específico. Isso será útil, por exemplo, se você desejar recuperar os endereços de e-mail de
clientes em um modelo de clustering, sem usar o endereço de e-mail durante o processo de análise. Para
ignorar uma coluna durante a fase de análise e previsão, você a adiciona à estrutura, mas não especifica um
uso para a coluna, ou define o sinalizador de uso como Ignorar. Os dados sinalizados dessa maneira podem
ainda ser usados em consultas se o detalhamento tiver sido habilitado no modelo de mineração e se você tiver
as permissões apropriadas. Por exemplo, você pode examinar os clusters resultantes da análise de todos os
clientes, e então usar uma consulta de detalhamento para obter os nomes e endereços de e-mail de clientes
em um cluster específico, mesmo que essas colunas de dados não tenham sido usadas para criar o modelo.

11
Processando estruturas de mineração

Uma estrutura de mineração é apenas um contêiner de metadados até ser processado. Quando você processa
uma estrutura de mineração, o Analysis Services cria um cache local que armazena estatísticas sobre os
dados, informações sobre como qualquer atributo contínuo é diferenciado e outras informações que serão
usadas posteriormente pelos modelos de mineração. O próprio modelo de mineração não armazena estas
informações de resumo, mas referência as informações que foram armazenadas em cache quando a estrutura
de mineração foi processada. No entanto, você não precisa reprocessar a estrutura cada vez que adiciona um
novo modelo a uma estrutura existente; você poderá processar somente o modelo.

Você pode optar por descartar este cache depois de processar, se o cache for muito grande ou você desejar
remover dados detalhados. Se não quiser que os dados sejam armazenados em cache, poderá alterar a
propriedade CacheMode da estrutura de mineração como ClearAfterProcessing. Isso destruirá o cache depois
que qualquer modelo for processado. A definição da propriedade CacheMode como ClearAfterProcessing
desabilitará o detalhamento do modelo de mineração.

No entanto, depois de destruir o cache, você não será capaz de adicionar novos modelos à estrutura de
mineração. Ao adicionar um novo modelo de mineração à estrutura, ou alterar as propriedades de modelos
existentes, você precisará reprocessar a estrutura de mineração primeiro.

Exibindo estruturas de mineração

Você não pode usar visualizadores para procurar dados em uma estrutura de mineração. No entanto, no SSDT
(SQL Server Data Tools), é possível usar a guia Estrutura de Mineração do Designer de Mineração de Dados
para exibir as colunas de estrutura e suas definições. Se quiser revisar os dados na estrutura de mineração,
poderá criar consultas usando DMX (Data Mining Extensions). Por exemplo, a instrução SELECT * FROM
<structure>.CASES retorna todos os dados da estrutura de mineração. Para recuperar essas informações, a
estrutura de mineração deve ter sido processada e os resultados desse processamento devem ter sido
armazenados em cache.
A instrução SELECT * FROM <model>.CASES retorna as mesmas colunas, mas apenas para os casos de um
determinado modelo.

Usando modelos de mineração de dados com estruturas de mineração

Um modelo de mineração de dados aplica um algoritmo de modelo de mineração aos dados que são
representados por uma estrutura de mineração. Um modelo de mineração é um objeto que pertence a uma
estrutura de mineração específica e herda todos os valores de propriedades definidas pela estrutura de
mineração. O modelo pode usar todas as colunas contidas na estrutura de mineração ou um subconjunto das
colunas. Você pode adicionar várias cópias de uma coluna de estrutura a uma estrutura. Você também pode
adicionar várias cópias de uma coluna de estrutura a um modelo e, em seguida atribuir nomes diferentes ou
aliases a cada coluna de estrutura do modelo.

Tarefas relacionadas

Use os links fornecidos aqui para saber mais sobre como definir, gerenciar e usar estruturas de mineração.
- Trabalhar com estruturas de mineração relacionais
- Criar uma nova estrutura de mineração relacional
- Adicionar uma tabela aninhada a uma estrutura de mineração
- Trabalhar com estruturas de mineração com base em cubos OLAP
- Criar uma nova estrutura de mineração OLAP
- Filtrar o cubo de origem para uma estrutura de mineração
- Trabalhar com colunas em uma estrutura de mineração
- Adicionar colunas a uma estrutura de mineração
- Remover colunas de uma estrutura de mineração
- Alterar ou consultar dados e propriedades da estrutura de mineração
- Alterar as propriedades de uma estrutura de mineração
- Trabalhar com as fontes de dados subjacentes e atualizar dados de origem
- Editar a exibição da fonte de dados usada para a Estrutura de Mineração
- Processar uma estrutura de mineração

12
Classificação. Regras de associação.

13
Análise de agrupamentos (clusterização)

A ideia é simples como o nome sugere: agrupar dados.

14
Porém, conforme a finalidade da descoberta dos grupos e o tipo dos dados em questão a tarefa pode se tornar
terrivelmente complexa, árdua e demorada.
Vamos mostrar aqui a teoria básica do assunto e os principais algoritmos.

Há também o clustering que se refere a elaboração e montagem de clusters de computadores. Grandes redes
de máquinas que trabalham como uma só. Subárea de sistemas distribuídos. Aqui estamos lidando com uma
subárea de inteligência artificial.

O que é clustering?

Clustering, análise de clusters (grupos) ou agrupamento é a tarefa de inserir objetos dispersos em grupos
(chamados de clusters) de forma que os objetos no mesmo cluster sejam mais similares - segundo algum
critério definido no caso - entre si do que entre os objetos em outros clusters.

Clustering é uma das principais áreas da mineração de dados e uma técnica muito comum para análise de
dados estatísticos em muitas áreas, como aprendizado de máquina, reconhecimento de padrões, análise de
imagens, recuperação de informação e bioinformática.

A análise de clusters não é um algoritmo específico, mas uma classe de problemas a serem resolvidos por
vários algoritmos que diferem muito entre si, tanto na maneira de como formam os clusters, quanto na eficiência
que o fazem.

Dentre as maneiras mais comuns de se formar grupos podemos citar menor distância entre os membros do
cluster, áreas mais densas na distribuição espacial, intervalos ou distribuições estatísticas específicas.
Clustering pode ser formulado como um problema de otimização com múltiplos objetivos. Onde o algoritmo a
se escolher e seus parâmetros (valores como a função de distância, o limiar de densidade ou o número
esperado de clusters) dependem dos dados e do tipo de resultado procurado. Além de o próprio algoritmo
poder ser considerado um parâmetro, já que dificilmente sabemos de antemão qual apresentará os melhores
resultados.

A análise de clusters não é uma tarefa automática, é um processo de descoberta de conhecimento iterativo
que envolve muita tentativa e erro. Normalmente é preciso mudar o pré-processamento, parâmetros e mesmo
os algoritmos até obter as propriedades desejadas.

Clustering x Classificação

Sempre há confusão quanto a essas duas áreas. Pois a diferença entre elas é sutil em seu primeiro ver. Mas
a diferença mais básica entre elas é que em clustering nós recebemos os dados e vamos descobrir grupos ali
dentro utilizando técnicas não supervisionadas. Ou seja, nosso resultado são grupos.

Já em classificação, nós já conhecemos os grupos de antemão. Queremos é descobrir em qual desses grupos
os dados que possuímos se encaixam. Ou seja, nosso resultado são dados classificados, geralmente, para
tomada de decisão.

Num exemplo isso fica mais claro. Vamos supor que você tem em mãos um grande banco de dados de um
grande loja e foi te dada a tarefa de descobrir quantos e quais são os principais perfis de clientes que
frequentam a loja relativo, é claro, ao consumo. Isto é uma tarefa de clustering: você não tem os grupos, quer
descobri-los.

Agora, suponha que você trabalhe para um banco e tenha que montar um sistema para descobrir quais clientes
são bons ou maus pagadores. O banco precisa de uma forma automatizada para auxiliar os gerentes. Assim
eles podem conceder empréstimos ou não com mais segurança. Isto é uma tarefa de classificação: você tem
os grupos (bom pagador e mau pagador) e quer classificar os clientes neles.

Clustering e classificação tem diversos termos em comum.

Por isso explicamos desde já a diferença para evitar confusões no futuro. Por exemplo, o ato de encontrar
clusters, muitas vezes é chamado de classificação, da mesma forma como o ato de classificar, de fato, em
classificação. A coisa fica muito confusa quando misturamos as duas áreas. Porém, vamos prosseguir só com
o clustering.

15
Aplicações de clustering

Algoritmos de clustering podem ser utilizados em praticamente qualquer área de conhecimento, por exemplo:
- Marketing: encontrar grupos de consumidores com comportamento similar data uma base de dados grande
contendo seus bens e compras passadas;
- Biologia: classificação de plantas e animais a partir de suas características;
- Livrarias: otimizar a organização dos livros;
- Seguros: identificar grupos com grandes chances de custo acima do normal, ou fraudes;
- Planejamento de cidades: identificar grupos de casas conforme seu tipo, valor e localização;
- Estudo de terremotos: analisar epicentros de terremotos para identificar áreas perigosas;
- WWW: classificação de documentos; agrupamento de dados de blogs para descobrir grupos com padrões de
acesso similares.

Algoritmos – Requisitos
Os requisitos que um algoritmo de clustering tem de satisfazer são:
- escalabilidade (ser capaz de lidar com grandes volumes de dados);
- lidar com diferentes tipos de atributos (texto, imagem, números;
- descobrir clusters com tamanhos e formas arbitrários;
- exigirem conhecimentos de área mínimo para determinar os parâmetros de entrada;
- habilidade de lidar com ruído e outliers (dados extremamente fora do padrão);
- insensibilidade a ordem dos dados;
- alta dimensionalidade (lidar com dados com muitas dimensões/atributos);
- interpretabilidade (a resposta do algoritmo tem que ser inteligível para seres humanos);
- usabilidade (ser fácil de aprender/usar ajuda)

Algoritmos – Problemas
Há vários problemas com as tarefas de clustering. Claro!
Sempre tem problemas sobrando. Mesmo dentro de algo que deveria ser uma solução. Dentre eles:
- nenhum dos algoritmos de clustering atuais cobrem todos os requisitos corretamente (convenhamos, que boa
parte dos requisitos são querer demais);
- lidar com muitas dimensões e muitos dados pode ser problemático por questões de tempo (50 anos de
processamento não é algo muito interessante, não concorda?);
- a efetividade do algoritmo depende da função distância usada no caso (para algoritmos baseados em
distância);
- se uma distância óbvia não existe, nós devemos defini-la.
O que nem sempre é fácil, especialmente em espaços multidimensionais
- o resultado do algoritmo de clustering é sujeito a múltiplas interpretações (muitas vezes o próprio algoritmo
pode).

Algoritmos de clustering
Os algoritmos de clustering podem ser divididos em algumas categorias:
- Clustering exclusivo
- Clustering de sobreposição (Overlapping)
- Clustering hierárquico
- Clustering probabilístico
Clustering exclusivo: neste caso, os dados são agrupados de forma exclusiva, ou seja, cada dado só pode ser
inserido em um único grupo. Um exemplo simples disso é mostrado na figura abaixo, onde a separação dos é
conseguida usando uma reta. Aí temos dois grupos, com dados acima de reta e abaixo, nenhum em ambos
grupos.

16
Clustering de sobreposição (Overlapping): ao contrário dos exclusivos, esta categoria utiliza grupos fuzzy
para agrupar os dados. O que significa que dados podem pertencer a vários grupos ao mesmo tempo com
diferentes graus de associação. Geralmente o valor do grau de associação é um percentual que representa o
quanto esse dado pertence a um grupo.

Clustering hierárquico: Aqui, os algoritmos se baseiam na união de grupos muito próximos. Começando por
definir cada dado como um grupo. Depois de uma série de iterações, os clusters desejados são obtidos.

Clustering probabilístico: como o nome diz, utiliza métodos probabilísticos para montar os grupos.
E, claro, um algoritmo pode pertencer a mais de uma categoria.
Para finalizar, temos aqui uma lista de alguns dos algoritmos mais usados nessa área:
- Canopy
- C-médias fuzzy
- Dirichlet Process Clustering
- K-médias
- K-média fuzzy
- Latent Dirichlet Allocation (LDA)
- Maximização de expectativa (EM)
- Mean Shift
- Mixture of Gaussians
- Shi–Malik
- SLINK

Detecção de anomalias

Uma mineração de dados bem executada deve cumprir tarefas como: detecção de anomalias, aprendizagem
da regra de associação (modelo de dependência), clustering (agrupamento), classificação, regressão e
sumarização.
A detecção de anomalias: é a tarefa de identificar observações cujas características sejam significativamente
diferentes do resto dos dados. Tais observações são conhecidas como anomalias ou fatores estranhos.

Modelagem preditiva

É possível usar a análise preditiva para resolver seus problemas mais difíceis. Ela ajuda a descobrir padrões
no passado que podem sinalizar o que está por vir. Este é o primeiro artigo de uma série de quatro voltados
para a análise preditiva. Ele começa com as analíticas em geral e, em seguida, posiciona analíticas acionadas
por dados em relação a regras de negócio e conhecimentos especializados. Os dois tipos de conhecimento
podem melhorar a sua capacidade de tomada de decisão. A análise preditiva é capaz de descobrir padrões

17
ocultos nos dados que o especialista humano não pode ver. Ela é, na verdade, o resultado de matemática
aplicada a dados.
Como tal, beneficia-se de inteligentes técnicas matemáticas, bem como de dados bons. Considerando que
podemos aplicar a análise preditiva para uma infinidade de conjuntos de dados em diferentes segmentos de
mercado e verticais, este artigo ajuda você mesmo a identificar alguns aplicativos de analíticas preditivas.

Introdução à analítica

Hoje vivemos em um mar cada vez maior de dados. Para navegar por ele com segurança, nós usamos a
analítica. Sem analítica, nós simplesmente nos afogaríamos, sem saber realmente o que aconteceu ou o que
vai acontecer. Neste artigo, vamos nos concentrar no conhecimento obtido a partir da analítica, que podemos
classificar como descritiva ou preditiva. Enquanto a analítica descritiva nos permite saber o que aconteceu no
passado, a análise preditiva se concentra no que vai acontecer a seguir.

Nossa necessidade de compreender os acontecimentos do passado levou a uma disciplina que hoje
chamamos inteligência de negócios. Ela nos permite tomar decisões com base em estatísticas obtidas a partir
de dados históricos. Por exemplo:
- Quantos clientes têm reclamado ou desistiram devido a atrito nas últimas seis semanas?
- Quanto dinheiro foi perdido devido a fraude nos últimos três meses?
- Com que frequência os chamados de suporte estão sendo criados?
- Onde estão localizados os clientes (talvez mostrado usando o Google Maps)?

A analítica descritiva percorre um longo caminho para a viabilização de decisões de negócio baseadas em
fatos e não em sentimentos. No entanto, a analítica descritiva simplesmente não é suficiente. Na sociedade
em que vivemos hoje, é imprescindível que as decisões sejam altamente precisas e repetidas. Para isso, as
empresas estão usando análise preditiva para literalmente tocar para o futuro e, com isso, definir decisões de
negócio e processos.

Como uma disciplina, a Análise Preditiva tem estado presente por muitas décadas. Um tema em destaque na
academia por muitos anos, sua relevância no segmento de mercado cresceu juntamente com a quantidade de
dados sendo capturados pelas pessoas (por exemplo, a partir de transações online e redes sociais) e sensores
(por exemplo, a partir de dispositivos móveis GPS), bem como a disponibilidade do poder de processamento
com custo reduzido, seja baseado em Hadoop ou Nuvem.

Dados guiados versus conhecimento de especialista

É fascinante pensar sobre o conhecimento e sobre como transferi-lo e usá-lo. Tradicionalmente, contamos com
especialistas do domínio para nos ajudar a aproveitar ao máximo um processo particular. O conhecimento de
especialista se baseia na experiência e é usado diariamente por todas as empresas para influenciar as
operações do dia a dia.

Considerando a forma como podemos converter conhecimento de especialista em um conjunto de regras de


negócio, desenvolvemos sistemas com base em decisões para aplicar automaticamente o conhecimento
elucidado de especialistas humanos. O IBM ILOG é um excelente exemplo de um sistema que converte
conhecimento de especialista em um conjunto de instruções IF-THEN que podemos colocar para funcionar
imediatamente.

Por outro lado, o conhecimento controlado por dados, como o seu nome sugere, é baseado nos dados—
geralmente, muitos deles. Algumas décadas atrás, uma série de técnicas estatísticas surgiu com a intenção de
descobrir padrões de dados normalmente invisíveis ao olho humano. Visto que capturamos dados em um
volume cada vez maior hoje, estas técnicas estão se revelando indispensáveis para extrair valor a partir de
dados, tornando os processos repetidos e precisos.

O filme O Homem que Mudou o Jogo exemplifica isso muito bem. No filme, um grupo de agentes de
recrutamento experientes oferece seu conhecimento em primeira mão e dá palpites sobre quais jogadores
devem ser convidados a fazer parte da equipe. Isso é contrastado com uma abordagem voltada para dados
em que o conhecimento é extraído a partir dos dados já disponíveis para cada jogador, e uma equipe montada
a partir dele. Embora O Homem que Mudou o Jogo escolha um tipo de conhecimento sobre o outro, na maioria
dos casos, devemos e usamos o conhecimento de especialistas e o conhecimento voltado a dados juntos.

18
A analítica é capaz de produzir estatísticas confiáveis, previsões e contagens. É até um sistema baseado em
regras, no entanto, para decidir sobre o que fazer com todo o conhecimento que é voltado para dados. Por
exemplo, podemos usar uma série de regras para acionar decisões de negócios, dependendo do resultado
obtido por um modelo preditivo. Por exemplo, se um modelo existe para prever o risco de perda de clientes ou
deserção, podemos colocar regras conhecidas para reduzir a rotatividade no local a fim de definir as decisões
de negócios específicas de acordo com diferentes níveis de risco. Portanto, se o risco for alto, podemos dar a
um cliente um desconto de 20% em sua próxima compra, mas se o risco for muito alto, podemos, então, dar
um desconto de 50%.

O que é um modelo preditivo?

Um modelo preditivo é simplesmente uma função matemática que é capaz de aprender o mapeamento entre
um conjunto de variáveis de entrada de dados, geralmente agrupadas em um registro, e uma variável de
resposta ou de destino.

Nós nos referimos a este aprendizado como supervisionado porque, durante o treinamento, os dados são
apresentados para um modelo preditivo com os dados de entrada e a saída ou resultado desejados. O
treinamento é repetido até que o modelo aprenda a função de mapeamento entre as entradas de dados e a
saída desejada. Os exemplos de modelos preditivos usando aprendizagem supervisionada incluem redes
neurais de retorno de propagação, máquinas de vetor de suporte e árvores de decisão. Um modelo de previsão
também pode usar a aprendizagem não supervisionada. Neste caso, ele só é apresentado com os dados de
entrada. Sua tarefa é, então, descobrir como os registros de dados de entrada diferentes se relacionam entre
si. O armazenamento em cluster é o tipo mais comumente usado de modelo preditivo, que usa aprendizado
não supervisionado.

Assim, como exemplo, imagine que deseja criar um modelo preditivo que será capaz de dizer quem, entre os
seus clientes, tem maior probabilidade de reclamar (20 ou 50 por cento de desconto para alguém?). Primeiro,
volte aos seus dados históricos em busca de recursos que poderia usar para desenvolver um modelo para
fazer isso. Ao olhar para seu banco de dados, é possível compilar uma lista de recursos relacionados a atrito
para clientes atuais e passados que reclamaram. Pode incluir o número de reclamações nos últimos seis
meses, o número de chamados de suporte abertos nas últimas quatro semanas, quantas vezes e quanto
dinheiro o cliente gastou na compra de mercadorias ou serviços (online ou na loja) e informações genéricas,
como idade, sexo e demografia. a figura abaixo mostra dois desses clientes em conjunto com os recursos
obtidos para cada um deles. O Cliente 1 é um cliente existente e parece estar satisfeito. O Cliente 2, no entanto,
reclamou.

19
Em um tipo de aprendizagem supervisionada de cenário, como mostrado na a figura a seguir, você apresenta
todos os dados dos seus clientes para uma técnica preditiva durante o treinamento. Neste caso, a entrada é
constituída por todos os recursos apresentados (satisfação relacionada, demográfica, e assim por diante) para
cada cliente, bem como o resultado associado. O resultado informa ao modelo preditivo se o registro de dados
representa um cliente que migrou ou não para o concorrente. A lógica aqui é que o modelo é capaz de aprender
as diferenças, ou padrões, entre os dois grupos: os clientes atuais satisfeitos e clientes que desistiram.

Depois de desenvolver um modelo preditivo, é preciso validá-lo. A questão de validação tenta responder: "Será
que funciona?" e, se sim, "Qual é a precisão disso?" Se a resposta à primeira pergunta for um sonoro sim e a
resposta à segunda pergunta for altamente preciso, você saberá que o seu modelo funciona e que é capaz de
generalizar. Tudo que você precisa agora é torná-lo disponível para a execução. Para isso, precisa ser
implementado operacionalmente. Felizmente, existe um padrão chamado PMML (Predictive Model Markup
Language) que permite que modelos preditivos se movam facilmente entre diferentes sistemas. Com PMML,
podemos usar um aplicativo como o IBM SPSS Statistics para desenvolver e validar um modelo preditivo que
podemos, então, salvar como um arquivo PMML. Como tal, podemos fazer o upload dele diretamente em um
mecanismo de pontuação, como o mecanismo Zementis ADAPA, onde ele está pronto para ser usado em
tempo real.

Após a implementação, podemos usar o modelo de reclamação para monitorar toda a atividade de clientes
existentes.

Um bom modelo preditivo é capaz de generalizar seu conhecimento para calcular o risco de reclamação,
mesmo para clientes que nunca tiveram reclamações antes. A próxima figura mostra os dados de um cliente,
identificados como cliente 3, sendo apresentados ao nosso modelo de reclamação.

20
Se o modelo percebe que um padrão de rotatividade está emergindo para um determinado cliente, que
aumentará o seu risco ou saída de acordo até que haja uma decisão de negócio de sua parte para enfrentá-
lo. Quando esse cliente em particular está mais uma vez satisfeito com seus produtos e serviços, o risco
diminuirá, uma vez que o padrão de rotatividade não é mais detectado.

A importância de bons dados

Meu primeiro impulso em nomear esta seção era chamá-la de "A importância dos dados", porque sem dados,
não há analítica e o importa, a análise preditiva. Durante a minha carreira como um cientista de mineração de
dados, eu tenho visto muitas pessoas bem-intencionadas nos negócios em busca de uma solução de análise
preditiva para a sua empresa.

Enquanto elas sabem que a análise preditiva pode ajudar em seus resultados, elas têm dados insuficientes.
Ou seja, não há dados suficientes para um cientista de dados realmente treinar um modelo que faça sentido.
Em uma era de Big Data, você pode ser surpreendido como, de fato, frequentemente acontece. Para que
determinados modelos preditivos sejam capazes de aprender e generalizar, são necessários milhares e
milhares de registros. De acordo com nosso exemplo acima, uma centena de registros contendo os dados dos
clientes que reclamaram no passado pode não ser suficiente. Se não houver dados suficientes para serem
usados para o treinamento, um modelo pode não ser capaz aprender ou pior, pode ultrapassar. Isso significa
que ele aprende tudo sobre os dados fornecidos durante o treinamento, mas é incapaz de generalizar esse
conhecimento quando se apresenta com novos dados. Ele é simplesmente incapaz de prever.

Se há dados suficientes disponíveis, então, é uma questão de quanto ele é bom. Isso porque, a qualidade dos
dados refletirá diretamente na qualidade do modelo. Para dizer o mínimo: entrou lixo, saiu lixo!

Anos atrás, eu e minha equipe fomos incumbidos de desenvolver um modelo para prever se um determinado
processo de fabricação iria resultar em falha ou sucesso. A manufatura levou cerca de oito horas para ser
concluída e consumiu uma grande quantidade de recursos. Somente após a conclusão, os engenheiros da
empresa de garantia de qualidade foram capazes de determinar se algo dera errado durante a manufatura. Se
assim fosse, todo o lote deveria ser desfeito, e um novo começaria novamente do zero. A ideia aqui é que nós
poderíamos olhar para os dados obtidos no passado por todas as etapas do processo para lotes que viraram
bons e ruins. Então, nós poderíamos treinar um modelo para detectar quando as coisas começam a ficar ruins
no início do processo.

Tão emocionante como era, nós nunca construímos realmente todos os modelos. Durante a análise dos dados,
descobrimos que os dados foram corrompidos ou pior, faltavam algumas das principais fases da manufatura.
Mais importante ainda, não foi possível encontrar o resultado, ou a informação que nos permitiria separar os
lotes bons dos ruins. Isso significa que não seríamos capazes de usar uma técnica de aprendizagem
supervisionada. E, se faltassem partes importantes dos dados de entrada em risco, o uso de uma técnica sem
supervisão.
Os dados por si só não se traduzem em valor preditivo. Os dados bons sim.

Aplicativos da análise preditiva

21
Um aplicativo de análise preditiva que tem sido extremamente bem-sucedido há muitos anos é o de detecção
de fraudes. Toda vez que você passar o seu cartão de crédito ou usá-lo online, há chances de sua transação
estar sendo analisada em tempo real para uma possível fraude.

Dependendo do risco percebido, a maioria das instituições implementa um conjunto de regras de negócio que
pode até mesmo recusar uma operação de alto risco. Este é o objetivo final da análise preditiva na luta contra
o crime, isto é, impedir que isso aconteça, em primeiro lugar.

Em um artigo escrito anteriormente para o developerWorks, listo alguns aplicativos importantes de análise
preditiva na assistência médica. A fraude na assistência médica está definitivamente no topo da lista, mas o
uso de análise preditiva também está para implementar o cuidado preventivo eficaz. Ao saber que os pacientes
têm maior risco de desenvolver uma determinada doença, podemos colocar as medidas preventivas em ação
para mitigar o risco e, finalmente, salvar vidas. Ultimamente, a análise preditiva tem sido o centro das atenções
em uma competição altamente divulgada em que os dados de histórico pedidos são usados para reduzir o
número de reinternações hospitalares (consulte Resources).

Além disso, as empresas usam a análise preditiva para recomendar produtos e serviços. Hoje em dia, já
crescemos para esperar boas recomendações para filmes, livros e músicas das nossas lojas favoritas e
comerciantes. Da mesma forma, também estamos experimentando campanhas de marketing que são
customizadas cada vez mais aos nossos gostos e preferências, com base, por exemplo, no conteúdo de nossos
e-mails, postagens e pesquisas online.

Outros aplicativos se concentram em dados obtidos a partir de sensores. Por exemplo, podemos usar os dados
do dispositivo móvel GPS para prever o trânsito. Como esses sistemas se tornam cada vez mais precisos,
seremos capazes de usá-los para alterar as nossas próprias escolhas de transporte. Por exemplo, podemos
pegar o trem um dia, se houver previsão de trânsito intenso nas entradas.

Além disso, a disponibilidade de sensores pequenos e com custo reduzido que informam sobre o status atual
de estruturas como pontes e edifícios, bem como máquinas, como transformadores de energia, água e bombas
de ar, portas e válvulas permitiu o uso de análise preditiva para manter ou fazer alterações em materiais ou
processos antes que aconteçam falhas e acidentes. Ao permitir o desenvolvimento de modelos de manutenção
preventiva, o uso de dados de sensores é uma forma clara no sentido de ajudar a garantir a segurança. O
desastre de derramamento de óleo no Golfo do México em 2010 e o colapso da ponte I-35W sobre o Rio
Mississippi em 2007 são apenas dois exemplos de acidentes graves que poderiam ser evitados se houvesse
sensores e modelos de manutenção preventiva.

Aprendizado de máquina

O tema ferramentas de software é sempre empolgante, sejam elas visuais, completos suites ou “free” software,
é comum buscar uma ferramenta melhor para atender a processos que já fazemos, e queremos deixar de
fazer. Em geral é assim que é encarada a automação. Mas hoje eu quero conversar sobre ferramentas
inteligentes. Quer dizer, quais características poderíamos querer que as ferramentas tivessem para as
considerarmos mais inteligentes?

Quando implantamos um RTC (IBM Rational Team Concert) esperamos que ele organize todo o trabalho de
equipe, ajudando em planejamento, designação de tarefas, controle de demandas e fontes, etc, etc! É uma
enorme variedade de parâmetros e amarrações que definimos para estruturar o armazenamento e o transporte
de informações. O modelo de uso da ferramenta vai nos dizer como proceder na sua operação. Isso tudo junto,
e funcionando, nos dá uma enorme quantidade de informações. Mas será que aproveitamos tudo isso?
Uma primeira abordagem é tratar os dados e mostrar as informações através de modelos de datawarehouse
e datamarts. É o que faz o IBM Rational Insight, criando dashboards e relatórios de dados.

Essas são informações estruturadas que foram previstas para serem extraídas (nem todas, é verdade).
Mas certamente há informações que, em princípio, não foram inicialmente planejadas para captura e não estão
em nenhum atributo previamente modelado. São informações escondidas na massa de dados coletada,
informações que só existirão se descobrirmos um padrão. Para fazer uso desse tipo de informações podemos
utilizar técnicas de aprendizagem de máquina e processamento de linguagem natural (NLP), somente elas
podem ultrapassar a previsão inicial da estrutura de dados do modelo de uso.

22
Aplicar técnicas de aprendizagem de máquina podem nos ajudar a descobrir padrões de solicitação de
mudanças, por exemplo. As solicitações de mudança são armazenadas no RTC e sempre possuem textos
associados, descrição, títulos, comentários, categorias, etc. Os atributos que categorizam as solicitações
podem ser considerados a parte estruturada da informação, sendo que e a parte desestruturada da informação
está escondida, a espera de ser extraída através de algum algoritmo que processe as palavras contidas nas
demandas.

Por exemplo, se devido a algum padrão emergente, pudermos agrupar as demandas por similaridade,
poderíamos detectar a recorrência de certos temas que indicassem necessidade de melhoria no produto. Isto
permitiria orientar estratégias de melhoria de qualidade. Na manutenção de software vale a regra dos 80/20, é
sabido que 20% dos módulos de um sistema apresentam 80% dos problemas. Mas nem sempre temos dados
diretos para esse tipo de investigação. Nessa situação uma clusterização que detecte a baixa qualidade é
muito útil. Note que esses temas emergentes não foram previamente idealizados, mas podem ser descobertos
por clusterização com um algoritmo de aprendizado de máquina.

Outro exemplo. A similaridade do grupo de demandas pode implicar em similaridade de soluções. Isto implica
na possibilidade de reuso da solução, como indicou o colega

Quintela e, portanto em economia, talvez com uma melhor alocação de recursos. (Veja a referência
DeveloperWorks, onde se utiliza para isso um algoritmo bem conhecido, o KMeans).

Um importante sub-produto de um estudo desse tipo é a montagem de um histórico de medições de esforço


para padrões de similaridade no conjunto solicitações-soluções.

Uma base de solicitações com um histórico de custo (esforço ou duração), já é um item valioso para a
governança do desenvolvimento. Através de alguma manipulação de aprendizagem de máquina pode-se
melhorar nossa capacidade de estimativa de custo e trabalho. E isto nos leva à questão das estimativas no
assunto requisitos, área de atuação do IBM Rational Requirement Composer, o RRC.

Mas antes de falar em estimativas vamos ver um problema ainda na fronteira entre o RRC e o RTC. Suponha
que você tenha 500 tarefas associadas a uma dezena de demandas, que por sua vez estão associadas a uma
centena de User Stories.

Qual a esperança de otimizar o replanejamento disso quando aparecer novas demandas? Não precisa
replanejar? Mas o replanejamento é a essencia do Scrum, sem replanejamento o processo não cumpre a
promessa de entregar valor mais cedo ao negócio. Então precisamos replanejar... o que significa repriorizar,
ler uma enorme quantidade de texto e comparar User Stories entre si.

Quem já passou pela experiência de repriorizar um montão de requisitos, sabe que o mais árduo é ler e reler,
não é aplicar uma escala de prioridades, essa é a parte relativamente fácil. O replanejamento seria facilitado
se tivéssemos os requisitos clusterizados. O aparecimento de padrões emergentes permitiriam isolar Épicos
de User Stories, verificar temas repetitivos e assuntos mal definidos. O trabalho do Product Owner poderia ser
enormemente facilitado e com ele o de toda a equipe.

O caminho mais comum é aumentar a hierarquia estruturada, mas há um limite prático para a estruturação.
Quanto mais “organizamos” nosso conteúdo em árvores (ou pirâmides) mais aparece a necessidade de
informações cruzadas. No limite, um enorme emaranhado de rastreabilidade poderia aparecer como resposta
à tentativa de continuar a estruturação de informações cruzadas. Por outro lado, se trabalharmos a informação
desestruturada, sob demanda, construímos menos coisas e possivelmente atuaremos com mais rapidez na
direção do objetivo. Não estamos sugerindo abandonar a estruturação, apenas fazê-la conviver com uma
saudável desestruturação...

Para ilustrar, ainda que pobremente, o resultado de uma busca de contexto sobre um escopo desestruturado,
considere um simples “concordanciador”. Este é uma função de processamento de linguagem natural, que
simplesmente lista as referências a uma palavra ou tema, incluindo o seu contexto.
Tradicionalmente apresenta o resultado de uma forma especial:

23
Mesmo que o uso desse recurso seja manual, já percebemos as possibilidades com a clusterização
contextualizada.

Observe que não respeitamos as fronteiras entre as ferramentas. Há inúmeras possibilidades de aproveitar
uma informação de contexto como essa. A mais simples seria instrumentalizar o Product Owner com uma
verificação de contexto.

Agora falando de estimativas. Uma das necessidades do desenvolvimento é alguma forma de estimar o esforço
envolvido numa unidade de escopo. Mesmo os processos que adotam apenas a perspectiva da priorização,
também estimam em algum momento. Veja, por exemplo, a necessidade de identificar um Lead Time médio
para planejamento (novamente a referência Innovate 2013).

Como o assunto é delicado (se fosse fácil em 50 anos de desenvolvimento de software a solução definitiva já
teria aparecido), procuramos alternativas paliativas. A estimativa feita com a escala de de fibonacci, que se
usa frequentemente junto com o Scrum, é uma das formas mais simples. Essa forma de estimar produz uma
avaliação relativa, uma User Story é pontuada relativamente às outras, do mesmo sistema.

Esse procedimento de estimativa poderia ser facilmente melhorado se houvesse um filtro automático para pré-
clusterizar o conjunto, antes da aplicação do trabalho manual.

Isto se tornaria viável se identificarmos elementos de similaridade nos textos das User Stories. Algoritmos de
aprendizagem de máquina são capazes, portanto, de facilitar nossa vida também na estimativa e, talvez, até
gerar avaliações aproximadas do trabalho, dependendo da profundidade de coleta dos dados estruturados e
não estruturados.

Um assunto que está se desenvolvendo a passos largos é a “análise de sentimento”, uma aplicação de
aprendizado de máquina para identificar e classificar conteúdos de sentimentos, emoções e opiniões,
presentes nas unidades de texto. No que isto poderia ser útil para introduzir inteligência nas ferramentas?

Suponha que o levantamento de requisitos para o seu novo sistema corporativo esteja em curso. A
necessidade de priorizar características e módulos é encarada racionalmente, mas é uma tarefa grande e
desgastante. Fica pior quando há conflito entre stakeholders do projeto. Porque não analisar a questão da
priorização com uma abordagem massiva de clusterização dos documentos e do volume de correspondência
trocado?

Textos, que pela abordagem racional seriam descartados, através de uma abordagem de processamento de
linguagem natural poderiam fornecer informações complementares ou subsidiárias. Expressões como “alta
qualidade”, “fazer economia”, “racionalização de recursos”, significam alguma coisa, apesar de que, numa
respecificação técnica de requisitos, teriam pouco valor definitório. Na análise de sentimentos, porém, essas
expressões podem nos ajudar a pontuar prioridades, inicialmente criando um resumo, e, com um pouco mais
de trabalho, uma lista de prioridades ordenadas.

O assunto fica ainda mais interessante se ampliarmos esse cenário para a web. Nesse caso, se o seu produto
de software for destinado para o público externo, é ainda mais relevante garimpar opiniões de sentimento em
blogs, tweeters, avaliadores especializados, etc. Boa parte das características de seu produto podem ser
confirmadas, ou despriorizadas, com informações coletadas dessa forma. Por exemplo, num feedback sobre
aspectos do produto podemos desencavar requisitos de facilidade de uso, movimento de tela, tipos de botões,
quantidade de memória, etc.

Mesmo que alguns aspectos estejam sendo vistos negativamente, isso não importa.

24
Enfim, ferramentas inteligentes devem abranger essa nova tendência que são os algoritmos de Big Data e
capacidade de aprendizagem de máquina, só assim poderemos fugir da tarefa interminável de modelagem das
estruturas de categorização.

Mineração de texto
Os estudos em Aprendizado de Máquina normalmente trabalham com dados estruturados.
Entretanto, uma grande quantidade de informação é armazenada em textos, que são dados semiestruturados.
Uma grande quantidade de toda informação disponível atualmente encontra-se sob a forma de textos (ou
documentos) semiestruturados, tais como livros, artigos, manuais, e-mails e a Web. O termo semiestruturado
indica que os dados não são completamente estruturados nem completamente sem estrutura.
- Um documento pode conter alguns atributos estruturados:
- Título, autor(es), data da publicação.
- Mas também contém alguns elementos textuais sem estrutura
- Resumo e conteúdo

Mineração de Textos (Text Mining - TM) tem como objetivo tratar essa informação semiestruturada. Apesar
desta fonte de recursos ser atrativa e de fácil acesso, a extração automática de informação útil a partir dela é
um desafio uma vez que os resumos estão em linguagem natural.

O objetivo da Mineração de Textos é o processamento de informação textual, extraindo índices numéricos


significativos a partir do texto e então tornar esta informação acessível para os programas disponíveis nos
sistemas de mineração de dados. Podem ser analisadas palavras, agrupamentos de palavras, ou mesmo
documentos entre si através das suas similaridades ou de suas relações com outras variáveis de interesse
num projeto de mineração de textos.

O objetivo na fase inicial do projeto é “transformar textos em números (índices significativos)”, que podem então
ser incorporados em outras análises tais como classificação supervisionada ou não supervisionada.

Algumas aplicações típicas para mineração de textos:


- Análise de questões abertas em questionários.
- Processamento automático de mensagens, “e-mails”, etc....
- Busca de referências em uma coleção de artigos, motores de busca.

Teoria da Informação
A Teoria da informação ou Teoria Matemática da Comunicação é um ramo da Teoria da Probabilidade e da
Matemática Estatística que lida com Sistemas de Comunicação, Transmissão de Dados, Criptografia,
Codificação, Teoria do Ruído, Correção de Erros, Compressão de Dados, etc. Ela não deve ser confundida
com Tecnologia da Informação e Biblioteconomia.

Claude Shannon (1916-2001) é conhecido como "o pai da teoria da informação". Sua teoria foi a primeira a
considerar comunicação como um problema matemático rigorosamente embasado na estatística e deu aos
engenheiros da comunicação um modo de determinar a capacidade de um canal de comunicação em termos
de ocorrência de bits. A teoria não se preocupa com a semântica dos dados, mas pode envolver aspectos
relacionados com a perda de informação na compressão e na transmissão de mensagens com ruído no canal.
É geralmente aceito que a moderna disciplina da teoria da informação começou com duas publicações: a do
artigo científico de Shannon intitulado Teoria Matemática da Comunicação ("A Mathematical Theory of
Communication") ".PDF", no Bell System Technical Journal, em julho e outubro de 1948; e do livro de Shannon
em co-autoria com o também engenheiro estadunidense Warren Weaver (1894-1978), intitulado Teoria
Matemática da Comunicação (The Mathematical Theory of Communication), e contendo reimpressões do artigo
científico anterior de forma acessível também a não-especialistas - isto popularizou os conceitos

A teoria da informação assumiu um importante papel na nossa compreensão da comunicação, uma vez que
se concentra na medição da informação, ou seja, trata do estudo quantitativo da informação em mensagens e
do fluxo de informação entre emissores e receptores.

Nas publicações de Shannon é apresentado um modelo linear de comunicação, simples mas


extraordinariamente eficiente na detecção e resolução dos problemas técnicos da comunicação.

25
A Teoria Matemática da Informação visava a precisão e a eficácia do fluxo informativo, procurando não se
cingir apenas à área da engenharia, mas servir de referência a qualquer âmbito da comunicação. Pretendia,
assim, ser adaptável a qualquer processo de comunicação, independentemente das características dos seus
componentes.

A Teoria da Informação fornece uma definição bastante precisa de informação, dizendo-nos que a informação
é uma medida de incerteza ou entropia numa situação. Quanto maior for a incerteza, maior será a informação,
logo, quando uma situação é completamente previsível, nenhuma informação está presente.

Assim, a informação pode ser considerada um função do número de escolhas ou alternativas à disposição de
uma pessoa para predizer o resultado de uma situação.
Informação não é conteúdo pois o que importa é que a mensagem chegue ao receptor e o que está em causa
são aspectos técnicos e não conteúdos.

Informação não é significado pois a informação não é a interpretação da informação, o que importa é a
quantidade de informação que é transmitida.

A teoria concentra-se no melhor modo do emissor codificar a informação antes de a enviar:


- Toda a informação, inclusive a linguagem humana, pode ser medida na forma de “bits por segundo”;
- Considerou o papel do “ruído” na interpretação da integridade da informação;
- A capacidade limitada do canal e o ruído levam à incerteza;
- Desenvolveram o conceito de “entropia de informação” como uma medida de incerteza numa mensagem;
- Fonte: Componente de natureza humana ou mecânica que determina o tipo de mensagem que se transmitirá
e o seu grau de complexidade;
- Transmissor: Recurso técnico que transforma a mensagem.

Modelo de Markov
As letras (ou os sons na fala) não estão organizadas aleatoriamente. São encontrados vários padrões
previsíveis, o que torna a descodificação mais fácil, já que existe menos informação, mais baixa entropia e
mais elevada redundância.
Por exemplo, um adjetivo tem uma alta probabilidade de se seguir a um substantivo.
Probabilidade que um caractere tem de aparecer numa sequência tendo em conta os caracteres precedentes.
- Num sistema perfeito de comunicação: emissor e receptor tem um conhecimento idêntico do código;
- Todas as mensagens possíveis são conhecidas com antecedência;
- A fonte faz uma escolha para enviar uma mensagem de entre um conjunto de mensagens possíveis;
- O receptor precisa de saber que escolha o emissor fez.

Escolhas:
- Sinal: fazemos escolhas sobre que sinal enviamos (sons, palavras, etc.);
- Semântica: fazemos escolhas numa dada situação sobre que significado enviamos;
- Escolha lexical;
- Significado;
- Pragmática: fazemos escolhas numa dada situação sobre que comportamentos assumimos.

Dado, Informação, Conhecimento e Inteligência

Dado
Dado pode ser entendido como um elemento da informação (um conjunto de letras ou dígitos) que, tomado
isoladamente, não transmite nenhum conhecimento, ou seja, não contém um significado intrínseco (BIO, 1991).

Gerenciamento dos dados


Como os dados são processados em diversas etapas e até locais diferentes, estes se tornam difíceis de
gerenciar.
Segundo Turban, Rainer Jr e Potter (2007) algumas dessas razões são:
- Quantidade de dados aumentando exponencialmente com o tempo;
- Os dados ficam dispersos nas organizações e são coletados por muitos indivíduos que utilizam vários
métodos e dispositivos;
- Os dados podem vir de fontes internas, externas e pessoais;

26
Informação
Conforme afirma Choo (2003) “a informação é fabricada por indivíduos a partir de sua experiência passada e
de acordo com as exigências de determinada situação na qual a informação deve ser usada”.

A informação precisa possuir algumas características como, por exemplo: responder a uma questão, solucionar
um problema, subsidiar uma decisão, auxiliar em uma negociação ou dar sentido a uma situação.

Características da Informação

Quando uma informação não é suficientemente precisa ou completa, um profissional pode tomar decisões
equivocadas, podendo gerar grandes prejuízos sociais e/ou econômicos. Por esse motivo, a importância da
informação pode apresentar diferenças dependendo do valor que é atribuído para cada uma de suas
características de qualidade. Dentre as características de valor que podemos atribuir a informação podemos
destacar:
Precisão: A informação não contém erro. Uma informação imprecisa normalmente é originada por dados
imprecisos que alimentam o processo;
Completa: A informação contém todos os fatos importantes;
Confiável: A confiabilidade da informação depende do método de coleta dos dados (fonte dos dados). Quanto
mais precisa essa fonte, mais confiável a informação;
Relevante: Uma informação relevante é essencial na tomada de decisões;
Verificável: A informação pode ser conferida para assegurar que está correta;
Acessível: A informação deve ser facilmente acessível aos usuários autorizados, que podem obtê-la na forma
correta e no tempo certo;
Segura: A informação deve ser segura para possibilitar o seu acesso apenas pelos usuários autorizados.

Conhecimento
Conhecimento é uma informação contextual, relevante e acionável. Dito de forma simples, conhecimento é a
informação em ação. Capital intelectual (ou recursos intelectuais) é outro termo frequentemente usado como
sinônimo de conhecimento (TURBAN; Rainer Jr; Kelly; Potter, 2007).

Conhecimento é uma informação valiosa de mente, inclui reflexão, síntese e contexto. É difícil de estruturar,
difícil de capturar em computadores, normalmente é tácito (não explícito) e sua transparência é complexa
(AUDY; ANDRADE;
CIDRAL, 2005).

Gestão do Conhecimento (KM – Knowledge Management)


Para Bukowitz e Williams (2002) “A gestão do conhecimento é o processo pelo qual a organização gera
riqueza, a partir do seu conhecimento ou capital intelectual”.

Conforme Woida e Valentim (2006) a gestão do conhecimento é compreendida como um novo processo
necessariamente social e organizacional provido de estratégias, objetivos e etapas simultâneas, que visa num

27
primeiro momento, desenvolver nas pessoas a capacidade de percepção, de criação de significado e de
construção de conhecimento e, num segundo momento, visa desenvolver nas pessoas a capacidade de
transformar o conhecimento em informação, compartilhar informação e conhecimento e usar informação e
conhecimento.

Com o crescimento da importância da Gestão do Conhecimento, as empresas passam a se preocupar com o


que sabem, o que precisam saber e, não menos importante, com o que a concorrência sabe. Torna-se cada
vez mais importante identificar o impacto e a consistência do conhecimento no setor específico da empresa.
É, assim, fundamental criar condições e apoiar o desenvolvimento e a comunicação desse conhecimento. A
empresa começa a perceber a importância de transformar seu conhecimento realmente em um ativo a serviço
da organização, e não apenas em propriedade de indivíduos ou grupos internos (TEIXEIRA FILHO, 2000,
p.41).

Conhecimento Tácito e Explícito


Conhecimento tácito é aquele que o indivíduo adquiriu ao longo da vida, que está na cabeça das pessoas.
Geralmente é difícil de ser formalizado ou explicado a outra pessoa, pois é subjetivo e inerente as habilidades
de uma pessoa, como "know-how". A palavra tácito vem do latim tacitus que significa "não expresso por
palavras".

Este tipo de conhecimento parece ser mais valioso devido a sua difícil captura, registro e divulgação,
exatamente por ele estar ligado as pessoas. É o que algumas pessoas chamam de verdadeiro conhecimento.
Podemos dizer que todos nós possuímos este conhecimento, mas é difícil de explicá-lo e isto se deve a nossa
experiência de vida, dos conhecimentos que adquirimos com o passar dos anos, ou seja, é um conhecimento
que está lá dentro de nós

Conhecimento explícito é aquele formal, claro, regrado, fácil de ser comunicado. Pode ser formalizado em
textos, desenhos, diagramas, etc. assim como guardado em bases de dados ou publicações. A palavra explicito
vem do latim explicitus que significa "formal, explicado, declarado". Geralmente está registrado em artigos,
revistas, livros e documentos.

Alguns dizem que este tipo de conhecimento é confundido com a própria informação, na sua forma mais
simples.

Inteligência Competitiva
Segundo vários autores, a Inteligência Competitiva pode ser definida como um processo de coleta, análise e
disseminação de informações dos ambientes interno e externo, das quais farão uso todos os níveis da
organização, interagindo estrategicamente no processo de tomada de decisões de acordo com suas
necessidades.

O processo de inteligência competitiva (IC) é aplicado em ambientes organizacionais, com o propósito de


descobrir oportunidades e reduzir riscos, além de conhecer o ambiente interno e externo à organização,
visando o estabelecimento de estratégias de ação a curto, médio e longo prazo. (Valentim, 2003)

Além de verificar as condições de mercado e de seus concorrentes, a Inteligência Competitiva também busca
avaliar o desempenho dos seus concorrentes dentro deste ambiente e obter informações que
façam com que sua empresa supere seus concorrentes mesmo que as condições de mercado sejam as
mesmas para ambos.

28
Para se iniciar um projeto de Inteligência Competitiva em uma organização, conforme Teixeira (2000), existem
alguns passos que devem ser seguidos:
- Definir os temas de interesse;
- Mapear o ambiente competitivo;
- Identificar as fontes de informação pertinentes;
- Efetuar uma pesquisa preparatória de material básico a respeito de cada tema, para estabelecer um contexto
de análise;
- Definir a estratégia de coleta de informações;
- Implantar a atividade de pesquisa, coleta e registro das informações;
- Identificar especialistas para darem apoio técnico à análise;
- Definir os métodos de análise que serão empregados;
- Criar as bases de dados de referência para cada tema.

Teixeira (2000) afirma que a aplicação do conceito de Inteligência Competitiva nas organizações não é recente
e esse conceito já foi aplicado em muitas empresas. O fato é que se há troca comercial, então há fluxo de
informação, e esse fluxo é a base dos processos de Inteligência Competitiva. Isso é diferente de “espionagem”,
pois são respeitados os aspectos éticos e legais da atividade.

Através da inteligência competitiva organizacional é possível estabelecer uma cultura organizacional baseada
em informação e conhecimento, visando maior flexibilidade de atuação no mercado, assim como maior
capacidade de criação e geração de tecnologias, ou seja, maior competitividade (Valentim,2002).

Segundo Miller (2002), existem diferenças entre a Gestão do Conhecimento e a Inteligência Competitiva. A
princípio, ambas têm como objetivo proporcionar conhecimento e informação para as pessoas certas no
momento certo. Em muitos casos, a diferença pode ser pouco mais do que de perspectiva e uma questão de
como satisfazer da melhor maneira um objetivo ou necessidade imediatos da empresa.

Noções de aprendizado de máquina


Nas duas últimas décadas, o Aprendizado de Máquina tornou-se um dos pilares da tecnologia da informação
e, com isso, uma parte central, embora geralmente oculta, de nossa vida. Com a crescente quantidade de
dados disponíveis, há boas razões para acreditar que a análise inteligente de dados se tornará cada vez mais
difundida como um ingrediente necessário para o progresso tecnológico.

O objetivo deste artigo é fornecer ao leitor uma visão geral sobre a vasta gama de aplicações que têm em seu
coração um problema de aprendizado de máquina e introduzir o leitor a um tema tão importante.

29
Além de passar noções básicas sobre aprendizado de máquina, também apresentaremos algumas das suas
principais aplicações e discutiremos algumas ferramentas básicas da estatística e da teoria das probabilidades,
já que elas formam a linguagem na qual muitos problemas de aprendizado de máquina devem ser formulados
para serem passíveis de solução.

O assunto da aprendizagem por máquinas pode ser entendido via diferentes abordagens. Começaremos pela
sua conceituação e as suas principais aplicações!

Definição de aprendizado de máquina


Machine Learning, termo original em inglês, ou o aprendizado automático, como também é conhecido, é um
subcampo da ciência da computação. Evoluiu do estudo de reconhecimento de padrões e da teoria do
aprendizado computacional em inteligência artificial.

De acordo com Arthur Samuel (1959), o aprendizado de máquina é o “campo de estudo que dá aos
computadores a habilidade de aprender sem serem explicitamente programados”. Além disso, explora a
construção de algoritmos que podem aprender com seus erros e fazer previsões sobre dados a partir de duas
abordagens de aprendizagem: supervisionada, não supervisionada e por reforço. Isso permite produzir
decisões e resultados confiáveis e repetíveis.

Tais algoritmos podem fazer previsões a partir de amostras ou tomar decisões guiadas unicamente por dados,
sem qualquer tipo de programação. Embora semelhante, em certos aspectos, da estatística computacional,
que faz previsões com o uso dos computadores, o aprendizado de máquina é usado em tarefas computacionais
onde criação e programação de algoritmos explícitos é impraticável.

Entre os exemplos de aplicações temos o processamento de linguagem natural, filtragem de SPAM,


reconhecimento de fala e de escrita, visão computacional, diagnóstico médico, sistemas de busca, entre outros.

No vídeo abaixo você encontrará um pouco da história do machine learning e alguns exemplos reais:

Aplicações do aprendizado de máquina


A maioria dos leitores deste blog estão familiarizados com o conceito de ranking de páginas da web,
popularizado pelo Google. Ou seja, o processo de envio de uma consulta a um mecanismo de pesquisa, que,
em seguida, localiza páginas da web relevantes para a consulta e as retorna em sua ordem de relevância.

Para atingir esse objetivo, um mecanismo de pesquisa precisa “saber” quais páginas são relevantes e quais
páginas correspondem à consulta. Esse conhecimento pode ser obtido de várias fontes: pela estrutura de links
das páginas da Web, seu conteúdo, a frequência com que os usuários seguirão os links sugeridos em uma
consulta ou a partir de exemplos de consultas em combinação com páginas web classificadas manualmente.

Cada vez mais o aprendizado de máquina, em vez de adivinhação, é usado para automatizar o processo de
criação de um bom mecanismo de pesquisa, como o Google. Uma aplicação relacionada a isso é a filtragem
colaborativa, uma técnica utilizada por sistemas de recomendação.

Um Sistema de Recomendação combina técnicas computacionais para selecionar itens personalizados com
base nos interesses dos usuários e conforme o contexto no qual estão inseridos. Lojas online, como a Amazon,
ou sites de Streaming, como a Netflix, utilizam esse sistema para atrair usuários a comprar produtos adicionais
(ou assistir mais filmes).

O problema dos sistemas de recomendação é bastante semelhante ao do ranking da página web. Como antes,
queremos obter uma lista ordenada. A principal diferença é que uma consulta explícita está ausente e, em vez
disso, só podemos usar o comportamento dos usuário para prever hábitos futuros de visualização e compra.

A informação chave neste caso são as decisões tomadas por usuários similares, daí a natureza colaborativa
do processo. É claramente desejável ter um sistema automático para resolver este problema, evitando assim
adivinhação e o gasto de tempo.

Outro exemplo de aplicação do machine learning é a tradução automática de documentos. Para resolver este
problema, poderíamos ter como objetivo entender completamente um texto antes de traduzi-lo, usando um
conjunto de regras selecionadas, elaborado por um linguista computacional bem versado nas duas línguas que

30
gostaríamos de traduzir. Entretanto, isso seria um desafio muito complexo, uma vez que um texto nem sempre
é gramaticalmente correto e o contexto utilizado pode gerar confusões de entendimento.

Em vez disso, poderíamos simplesmente usar exemplos de documentos semelhantes traduzidos. Esses
documentos poderiam ser utilizados para que a máquina possa aprender a tradução entre as duas línguas. Em
outras palavras, poderíamos usar exemplos de traduções para aprender como traduzir. Essa abordagem de
aprendizado de máquina mostrou-se bem-sucedida e é muito utilizada, uma vez que a própria internet é uma
ótima base de dados.

Muitas aplicações de segurança, como controle de acesso, usa o reconhecimento facial como um de seus
componentes. Isto é, dada uma foto (ou gravação de vídeo) de uma pessoa, é possível reconhecê-la. Em
outras palavras, o sistema precisa classificar rostos a partir das muitas categorias (João, Camila, Felipe, …)
ou decidir que é um rosto desconhecido.

Um problema semelhante, mas conceitualmente bastante diferente, é o da verificação. Seu objetivo é verificar
se a pessoa em questão é quem ela afirma ser. Note que diferentemente de antes, esta agora é uma pergunta
sim ou não. Para lidar com diferentes condições de iluminação, expressões faciais, se uma pessoa está usando
óculos, penteado, etc., é desejável ter um sistema que aprende quais recursos são relevantes para identificar
um pessoa.

Métodos de aprendizagem
Para compreender melhor o assunto explicaremos os principais métodos de aprendizagem.

1. Aprendizagem supervisionada
É principalmente utilizada quando o sistema já sabe quais entradas estão associadas com quais saídas e
precisa aprender um meio de entender essa associação. Utiliza a detecção de padrões para estabelecer
previsões. Um exemplo de aprendizagem supervisionada é a categorização de e-mails, separando do que é
relevante e o que é SPAM.

Caso você tenha interesse em se aprofundar no tema, eu recentemente participei de um evento onde
apresentei algumas aplicações práticas de machine learning, com um pouco de teoria, é claro:

2. Aprendizagem não-supervisionada
Já na aprendizagem não-supervisionada, sua abordagem está na descoberta das relações implícitas em um
conjunto de dados não rotulados. Nesse caso, identifica padrões para rotular os dados. O sistema de
recomendação, citado anteriormente, é um bom exemplo de aprendizagem não supervisionada.

3. Aprendizagem por reforço


Nesse método, o computador é estimulado a aprender com base em tentativas e erros. O processo é otimizado
por meio da prática direta, ensinando o sistema a priorizar certos hábitos. Entre os exemplos desse método
estão os veículos autônomos e os sistemas que jogam xadrez.

Conclusão
Por fim, este é um campo muito rico e que possui aplicações para resolver problemas complexos em áreas
como saúde, educação, entretenimento, tecnologia, etc.

Noções de Big Data: conceito, premissas e aplicação

Conceito de Big Data

Volume ilimitado de dados produzidos por empresas e pessoas.


Hoje é gerado milhões de informações na internet e as empresas as utilizam para conhecer melhor seus
potenciais clientes, analisando seu comportamento para tomar decisões melhores e desenvolver ações
estratégias mais eficiente.
Além do conhecimento dos clientes, a big data pode ser utilizada para melhorar a segurança na infraestrutura
e ações de marketing da empresa.

31
Premissas do Big data:

As características ou premissas do Big Data são os 5Vs: Volume, velocidade, variedade, veracidade e valor.
Inicialmente havia apenas três que foram definidas por Doug Laney:
Volume: Quantidade de dados
Velocidade: Velocidade que são gerados e tratados estes dados. A empresa deve reagir rápido a esta
velocidade. O Big Data serve para analisar os dados no instante em que são gerados, sem ter de armazená-
los em bancos de dados, é lidar com grandes quantidades de dados em tempo real.
Variedade: Quantidade de fontes que geraram estes dados.

Estas fontes podem ser:


Estruturados: Valores numéricos ou caracteres em tabelas
Semiestruturados: Diversos padrões
Não estruturados: Como notícias, e-mail, áudios, vídeos e etc.

Estas são as principais características do Big data, mas posteriormente foram colocadas mais duas:
Veracidade: Baseada em informações são confiáveis, como sua origem, se não foram manipulados.
Valor: Gerar realmente informações que agreguem valor para a empresa como aumento de vendas, melhoria
nos produtos ou mesmo para deixar o cliente mais satisfeito.

Algumas tecnologias envolvidas: Computação na nuvem, inteligência virtual, algoritmos específicos dentre
outras.

Aplicações:

As aplicações são bem variadas como análise de mercado para desenvolver um produto novo, fazer
campanhas de marketing para poder vender ou mesmo satisfazer seus clientes.
Detectar fraudes, avaliar funcionários. As aplicações são muitas.

Exemplos de aplicações práticas melhor entendimento:


Análise de informações financeiras para evitar fraudes: Ex. Bancos quando você faz algum movimento
financeiro que não costuma fazer, o banco pode bloquear para verificar se é você mesmo que está fazendo o
movimento financeiro.

Monitorar redes sociais como Facebook, Twitter ou Instagram. Ex.: Saber se estão falando bem ou mal
de sua marca.

Web analytics para sites de comércio eletrônico (e-commerce). Ex: sugerir produtos similares ou dizer que
quem comprou aquele produto também pesquisou outro determinado produto.

Sites que oferecem serviços como o Youtube e Netflix. Ex.: Recomendando um vídeo ou filme conforme
suas preferências, baseado em filmes ou vídeo que você assistiu.

As escolas utilizam para identificar tendências do aluno, para saber se estão progredindo dentro dos objetivos
da escola e programar sistemas para melhorar as avaliações e dar apoio aos professores e coordenadores.

O Governo para melhor os serviços públicos e dar maior transparência ao usuário.

Noções de aplicação python e R.


Python é uma linguagem de programação criada por Guido van Rossum em 1991. Os objetivos do projeto da
linguagem eram: produtividade e legibilidade. Em outras palavras, Python é uma linguagem que foi criada para
produzir código bom e fácil de manter de maneira rápida. O Python traz características que possibilitam
escrever o mesmo requisito em menos linhas de código que o necessário em outras linguagens de
programação e hoje, além de adotado na construção de soluções web, também está sendo muito utilizado em
aplicações que lidam com processamento de texto, machine learning e recomendação de conteúdo, áreas que
não param de crescer. Entre as características da linguagem que ressaltam esses objetivos estão:

32
 baixo uso de caracteres especiais, o que torna a linguagem muito parecida com pseudo-código executável;
 o uso de identação para marcar blocos;
 quase nenhum uso de palavras-chave voltadas para a compilação;
 coletor de lixo para gerenciar automaticamente o uso da memória;
 etc.

Além disso, Python suporta múltiplos paradigmas de programação. A programação procedimental pode ser
usada para programas simples e rápidos, mas estruturas de dados complexas, como tuplas, listas e dicionários,
estão disponíveis para facilitar o desenvolvimento de algoritmos complexos. Grandes projetos podem ser feitos
usando técnicas de orientação a objetos, que é completamente suportada em Python (inclusive sobrecarga de
operadores e herança múltipla). Um suporte modesto para programação funcional existe, o que torna a
linguagem extremamente expressiva: é fácil fazer muita coisa com poucas linhas de comando. E também
possui inúmeras capacidades de meta-programação: técnicas simples para alterar o comportamento de
comportamentos da linguagem, permitindo a criação de linguagens de domínio específico.

Python tem uma biblioteca padrão imensa, que contém classes, métodos e funções para realizar
essencialmente qualquer tarefa, desde acesso a bancos de dados a interfaces gráficas com o usuário. E,
logicamente, já que esse é o objetivo deste grupo, existem muitas ferramentas para lidar com dados científicos.
Essa característica da linguagem é comumente chamado baterias inclusas, significando que tudo que você
precisa para rodar um programa está — na maior parte das vezes — presente na instalação básica.

Por fim, e não menos importante, Python é uma linguagem livre e multiplataforma. Isso significa que os
programas escritos em uma plataforma serão executados sem nenhum problema na maioria das plataformas
existentes sem nenhuma modificação. E, caso a plataforma objetivo não tenha uma versão de Python,
desenvolvedores têm a liberdade de estudar e modificar o código da linguagem para fazer com que ela rode
onde quer que seja.

Por que Python?


É fácil ver que a linguagem tem facilidades incríveis para uso geral. A pergunta é: por que Python é a linguagem
ideal para aplicações científicas? As respostas são muitas, mas podemos resumir algumas aqui. A primeira
razão, e provavelmente a principal, é: Python é uma linguagem expressiva, em que é fácil traduzir o raciocínio
em um algoritmo. Em aplicações científicas, o raciocínio é essencialmente complicado — essa é a natureza
das ciências. É um problema adicional para o cientista ter que se preocupar com, além do assunto básico de
sua pesquisa, a correção do programa em detalhes pouco relevantes: alocação de memória, gerenciamento
de recursos, etc. Python faz isso tudo automaticamente de maneira muito eficiente, permitindo ao cientista se
concentrar exclusivamente no problema sendo estudado.

Python é extremamente legível. Isso significa que é muito fácil compreender programas escritos há algum
tempo. É muito comum que os programas em atividades científicas sejam criados a partir da evolução de
algoritmos anteriores. Portanto, é extremamente importante ser capaz de entender o que foi feito antes. Uma
vez que as palavras-chave da linguagem Python são voltadas para a estruturação dos programas (e não para
indicar ao computador como compilar ou interpretar trechos de código), não existem trechos de código que são
inúteis para o raciocínio.

Python tem uma comunidade ativa e vibrante, espalhada por todo o mundo. E, sendo uma linguagem livre,
todos os seus usuários estão dispostos a contribuir (este site é um exemplo disso, já que todos seus
contribuidores são voluntários). Isso faz com que a documentação seja abundante e existam módulos para
executar virtualmente qualquer tarefa necessária. Isso é importante: não há tempo para reinventar a roda,
então poder contar com módulos prontos é ótimo. Mas, mais que isso, uma vez que os programas em Python
são distribuídos na forma de código-fonte, qualquer pessoa pode alterar, corrigir e melhorar os algoritmos. Isso
faz com que os módulos sejam maduros e seguros, testados contra diversas situações e diversas vezes. A
robustez alcançada é um fator importante.

Python é, além disso, uma linguagem de propósito geral. Muitas vezes, é necessário lidar com tarefas laterais:
buscar dados em um banco de dados remoto, ler uma página na internet, exibir graficamente os resultados,
criar uma planilha, etc. Linguagens de cunho especificamente científico têm um sério problema aí, mas, uma
vez que Python é utilizada em praticamente todo tipo de tarefa, encontram-se módulos prontos para realizar
essas tarefas que podem ser tornar complicadas. Novamente, é uma preocupação a menos para quem está
desenvolvendo aplicações científicas.

33
Por esses e ainda outros motivos, Python tem conquistado uma grande popularidade entre a comunidade
científica. É uma linguagem simples que dá conta do recado e não fica entre o cientista e a resolução do seu
problema. Essa frase provavelmente resume todos os motivos necessários para sua utilização.

Principais aplicações da linguagem Python

Para que o Python serve, exatamente?


Há diversas aplicações para a linguagem. Dentre elas destacamos as três principais:

Desenvolvimento web
Ciência de dados
Scripting

Desenvolvimento web
Web frameworks (estruturas de web) como, Django e Flask, baseadas na linguagem Python, tornarem-se muito
popular para desenvolvimento web. Esses frameworks te ajudam a construir o lado back-end do seu código,
responsável por conversar com o servidor.

Caso não tenha conhecimento sobre back-end e front-end, temos um artigo no nosso blog, o qual explica os
caminhos do desenvolvimento web.

Os frameworks facilitam a criação da lógica de back-end. Isso inclui mapear URLs diferentes para partes do
código da linguagem Python. Além disso, você pode lidar com bancos de dados e gerar arquivos HTML que
os usuários visualizaram em seus navegadores.

Mas qual a diferença entre Django e Flask?


Flask fornece simplicidade, flexibilidade e controle. Enquanto isso, Django oferece uma experiência completa.
Se você estiver focado na experiência e nas oportunidades de aprendizado, ou quer ter mais controle sobre
quais componentes usar, escolha Flask. Mas se o que te interessa é o produto-final e busca uma maneira única
e óbvia de fazer as coisas, sua opção é Django.
Resumindo: se você for um iniciante, o Flask provavelmente será sua melhor opção, isso porque o framework
tem menos componentes para lidar e maior personalização. Por outro lado, Django é para quem quer construir
algo direto e deseja obter o resultado-final rapidamente.

Data Science
Ciência de dados (traduzindo para o português) – incluindo machine learning e análise de dados.

Primeiramente, iremos definir o que é machine learning: técnica que inclui a capacidade das máquinas de
aprenderem sozinhas a partir de grandes volumes de dados. A linguagem Python possuí bibliotecas e
estruturas que são populares no machine learning.

Duas das mais populares são: scikit-learn e TensorFlow.

A primeira vem com alguns dos mais conhecidos algoritmos de machine learning embutidos. TensorFlow é
uma biblioteca de baixo nível, a qual permite que você construa algoritmos personalizados. Caso você esteja
começando com machine learning, recomendo scikit-learn

Quanto a análise de dados, uma das bibliotecas mais populares da linguagem Python é a Matplotlib. Ela é uma
boa opção para quem está começando, pois é fácil e outras bibliotecas são baseadas nelas, o que permite
aprender novas bibliotecas no futuro.

Scripting
Scripting, geralmente, refere-se a escrever pequenos programas projetados para automatizar tarefas. A
linguagem Python é adequada para esse tipo de tarefa principalmente porque tem sintaxe relativamente
simples e fácil de escrever. Outro ponto positivo é sua velocidade, ou seja, é rápido escrever algo pequeno e
testá-lo.

34
Por fim, a linguagem Python possuí outras aplicações, como por exemplo: aplicativos incorporados, jogos e
programas de desktop. Porém, não podemos falar que são suas principais aplicações, até porque há outras
linguagens que realizam esses trabalhos de forma mais eficiente.

Aplicação R.

R é uma linguagem e um ambiente de desenvolvimento integrado, para cálculos estatísticos e gráficos.

Foi criada originalmente por Ross Ihaka e por Robert Gentleman no departamento de Estatística da
universidade de Auckland, Nova Zelândia, e foi desenvolvido por um esforço colaborativo de pessoas em vários
locais do mundo.

O nome R provêm em parte das iniciais dos criadores e também de um jogo figurado com a linguagem S (da
Bell Laboratories, antiga AT&T).

R é uma linguagem e ambiente similar ao S – pode ser considerado uma implementação distinta do S; embora
com importantes diferenças, muitos códigos escritos para o S rodam inalterados no R. A implementação
comercial de S é S-PLUS.

O código fonte do R está disponível sob a licença GNU GPL e as versões binárias pré-compiladas são
fornecidas para Windows, Macintosh, e muitos sistemas operacionais Unix/Linux.

R é também altamente expansível com o uso dos pacotes, que são bibliotecas para funções específicas ou
áreas de estudo específicas.

Um conjunto de pacotes é incluído com a instalação de R, com muito outros disponíveis na rede de distribuição
do R (em inglês CRAN).

A linguagem R é largamente usada entre estatísticos e data miners para desenvolver software de estatística e
análise de dados.7 Inquéritos e levantamentos de data miners mostram que a popularidade do R aumentou
substancialmente nos últimos anos.

Ferramentas de produtividade
Existem diversas GUI para R, incluindo JGR, RKWard, SciViews-R, Rcmdr e, mais recentemente, RStudio.
Muitos editores oferecem recursos que facilitam o trabalho com o R: Emacs, Vim, jEdit, Kate, Tinn-R GUI/Editor,
entre outros. Existem plug-ins para uso com a IDE Eclipse e Vim.

Software construído de modo colaborativo, com novos pacotes e GUIs incluídos a cada intervalo de tempo,
antecipando-se até a alguns outros pacotes proprietários, como o complemento com o teste de Scott-Knott
para a Análise de Variâncias ANOVA.

Recursos estatísticos
A R disponibiliza uma ampla variedade de técnicas estatísticas e gráficas, incluindo modelação linear e não
linear, testes estatísticos clássicos, análise de séries temporais (time-series analysis), classificação,
agrupamento e outras. A R é facilmente extensível através de funções e extensões, e a comunidade R é
reconhecida pelos seus contributos ativos em termos de pacotes. Existem diferenças importantes, mas muito
código escrito para S corre inalterado. Muitas das funções padrão do R são escritas no próprio R, o que torna
fácil para os usuários seguir as escolhas algorítmicas feitas. Para tarefas computacionais intensivas, os códigos
C, C++, e Fortran podem ser ligados e chamados durante a execução. Usuários experientes podem escrever
código C ou Java para manipular diretamente objetos R.

O R é fortemente extensível através do uso de pacotes enviados pelo utilizador para funções específicas ou
áreas específicas de estudo. Devido à sua herança do S, o R possui fortes recursos de programação orientada
por objetos, mais que a maioria das linguagens de computação estatística. Ampliar o R também é facilitado
pelas suas regras de contexto lexical.

Outra força do R são os gráficos estáticos, que podem produzir imagens com qualidade para publicação,
incluindo símbolos matemáticos. Gráficos dinâmicos e interativos estão disponíveis através de pacotes
adicionais.

35
O R tem a sua própria documentação em formato LaTeX, a qual é usada para fornecer documentação de fácil
compreensão, simultaneamente on-line em diversos formatos e em papel.

Recursos de programação
A R é uma linguagem interpretada tipicamente utilizada através de um Interpretador de comandos. Se um
usuário escreve “2+2” no comando de inserção e pressiona enter, o computador responde com “4”, conforme
se mostra abaixo:
> 2+2
[1] 4
Como muitas outras linguagens, a R suporta matrizes aritméticas. A estrutura de dados da R inclui escalares,
vetores, matrizes, quadros de dados (similares a tabelas numa base de dados relacional) e listas. O sistema
de objetos da R é extensível e inclui objectos para, entre outros, modelos de regressão, séries temporais e
coordenadas geoespaciais.

A R suporta programação processual com funções e, para algumas funções, programação orientada a objetos
com funções genéricas. Uma função genérica atua de forma diferente dependendo do tipo de argumentos que
é passado. Por outras palavras a função genérica determina (dispatches) a função (método) específica para
aquele tipo de objeto. Por exemplo, a R tem uma função genérica print() que pode imprimir quase qualquer tipo
de objeto em R com uma simples sintaxe “print(nomedoobjeto)”.

Enquanto a R é maioritariamente usada por estatísticos e outros utilizadores que requerem um ambiente para
computação estatística e desenvolvimento de software, pode ser igualmente usada como uma caixa de
ferramentas para cálculo matricial geral com benchmarks de desempenho comparáveis ao GNU Octave ou ao
MATLAB.

Exemplos
Exemplo 1
Os seguintes exemplos ilustram a sintaxe básica da língua e o uso do interface de linha de comando.
Na R, o largamente preferido operador de atribuição é uma seta formada por dois carateres “<-“, embora “=”
possa ser usado em sua vez.

> x <- c(1,2,3,4,5,6) # Create ordered collection (vector)


> y <- x^2 # Square the elements of x
> print(y) # print (vector) y
[1] 1 4 9 16 25 36
> mean(y) # Calculate average (arithmetic mean) of (vector) y; result is scalar
[1] 15.16667
> var(y) # Calculate sample variance
[1] 178.9667
> lm_1 <- lm(y ~ x) # Fit a linear regression model "y = f(x)" or "y = B0 + (B1 * x)"
# store the results as lm_1
> print(lm_1) # Print the model from the (linear model object) lm_1

Call:
lm(formula = y ~ x)

Coefficients:
(Intercept) x
-9.333 7.000

> summary(lm_1) # Compute and print statistics for the fit


# of the (linear model object) lm_1

Call:
lm(formula = y ~ x)

Residuals:
1 2 3 4 5 6
3.3333 -0.6667 -2.6667 -2.6667 -0.6667 3.3333

36
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -9.3333 2.8441 -3.282 0.030453 *
x 7.0000 0.7303 9.585 0.000662 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 3.055 on 4 degrees of freedom


Multiple R-squared: 0.9583, Adjusted R-squared: 0.9478
F-statistic: 91.88 on 1 and 4 DF, p-value: 0.000662

> par(mfrow=c(2, 2)) # Request 2x2 plot layout


> plot(lm_1) # Diagnostic plot of regression model

Exemplo 2
Código R curto calcula o modelo de Mandelbrot (Mandelbrot set) através das primeiras 20 iterações da equação
z = z² + c mapeados para diferentes constantes complexas c. Este exemplo demonstra:
 O uso de livrarias externas (chamadas pacotes) desenvolvidas pela comunidade, neste caso, o pacote
caTools
 Manipulação de número complexo.
 Matrizes multidimensionais de números usados como tipos de dados básicos, ver variáveis C, Z e X.

library(caTools) # external package providing write.gif function

37
jet.colors <- colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan", "#7FFF7F",
"yellow", "#FF7F00", "red", "#7F0000"))
m <- 1200 # define size
C <- complex( real=rep(seq(-1.8,0.6, length.out=m), each=m ),
imag=rep(seq(-1.2,1.2, length.out=m), m ) )
C <- matrix(C,m,m) # reshape as square matrix of complex numbers
Z <- 0 # initialize Z to zero
X <- array(0, c(m,m,20)) # initialize output 3D array
for (k in 1:20) { # loop with 20 iterations
Z <- Z^2+C # the central difference equation
X[,,k] <- exp(-abs(Z)) # capture results
}
write.gif(X, "Mandelbrot.gif", col=jet.colors, delay=100)

Exemplo 3
## Leitura do conjunto de dados. Também pode-se usar read.csv() quando os dados estiverem em arquivos
.csv
dados <- read.table("escreva a localização do arquivo...", header=TRUE) %colunas com tratamentos (tratam
c/ titulo) e n-linhas (repet).

## Preparação de dados
dados.vetor <- c(dados$trat1, dados$trat2, dados$trat3, dados$trat4) %pode ser com qualquer quantidade de
tratamentos.
N <- gl(trat, repeticoes) %escreva o número de tratamentos e o tratamento com maior número de repetições.
dados.vert <- data.frame(N, dados.vetor)
fator <- factor(Loc) % fatores são variáveis tratadas como variáveis categóricas no R.

## Cáculo da tabela ANOVA


pre_anova <- aov(dados.vetor~fator)
ANOVA <- summary(pre_anova)

## Fazendo teste de Tukey, teremos:


TukeyHSD(pre_anova, ordered=TRUE)
plot(TukeyHSD(bruto.aov, ordered=TRUE))

sk5 <- SK(x=dados, y=dados.vert$dados.vetor, model="y~fator", which="fator",sig.level=0.05)


summary(sk5)

Pacotes
As capacidades da R são estendidas através de pacotes criados pelo usuário, que permitem técnicas
estatísticas especializadas, dispositivos gráficos, capacidades de importação/exportação, ferramentas de
relatórios, etc. Estes pacotes são primeiro desenvolvidos em R, e por vezes em Java, C e Fortran. Um conjunto
básico de pacotes são incluídos com a instalação do R, com 5300 pacotes adicionais (a partir de abril 2012)
disponíveis em Comprehensive R Archive Network (CRAN), Bioconductor, e outros repositórios.

A página “Task Views” (lista de assuntos) no website da CRAN lista a vasta gama de aplicações (Finança,
genética, aprendizagem de máquinas, imagiologia médica, ciências sociais e estatísticas espaciais) nos quais
R tem sido aplicada e para que pacotes está disponível.

Outros recursos do pacote R incluem Crantastic, um site comunitário para avaliação e revisão de todos os
pacotes CRAN, e também R-Forge, uma plataforma central para o desenvolvimento colaborativo de pacotes
R, software relacionado com R, e projetos. Tem muitos documentos não publicados, pacotes beta e versões
de desenvolvimento de pacotes CRAN.

O projeto Bioconductor disponibiliza pacotes R para a análise de dados genómicos, tais como Affymetrix e
cDNA de análise e manipulação de dados orientadas a objetos, e começou disponibilizar ferramentas para a
análise de dados da próxima geração de métodos de alto rendimento de sequenciação.

38
A pesquisa reprodutível e geração automática de relatórios pode ser realizada com pacotes que suportam a
execução de código R incorporado em LaTeX, OpenDocument format e outros marcadores (markups).

Acelerador e eficiência de memória


Teste é um pacote jit que disponibiliza compilação JIT, e outro pacote compilador que oferece um compilador
de byte-code para o R.
Existem diversos pacotes (snow, multicore, parallel) que disponibilizam paralelismo para o R.
O pacote ff economiza memória arquivando dados no disco. As estruturas de dados comportam-se como se
estivessem na RAM. O pacote ffbase disponibiliza funções estatísticas básicas para o ‘ff’.

Marcos
A lista completa de alterações é mantida no ficheiro NEWS. Alguns destaques estão listados abaixo.
 Versão 0.16 – Esta é a última versão alpha desenvolvida incialmente por Ihaka e Gentleman. Muitas das
funcionalidades básicas do “White Book” (ver S history) foram implementadas. As listas de discussão
começaram em 1de april 1 de 1997.
 Versão 0.49 – 23 de abril 23 de 1997 – Esta é a mais antiga versão da fonte disponível, e compila num
número limitado de plataformas Unix. O CRAN começou nesta data, com 3 mirrors que hospedavam
inicialmente 12 pacotes. As versões Alpha do R para Microsoft Windows e Mac OS ficaram disponíveis pouco
tempo depois desta versão.
 Versão 0.60 – 5 de dezembro de 1997 – O R torna-se oficialmente parte do projeto GNU . O código é alojado
e mantido no CVS.
 Versão 1.0.0 – 29 de fevereiro de 2000 – Foi considerado pelos seus criadores suficientemente estável para
utilização produtiva.[25]
 Versão 1.4.0 – Os métodos S4 são introduzidos e a primeira versão para Mac OS X ficou disponível logo
após.
 Versão 2.0.0 – 4 de outubro de 2004 – Foi introduzida a lazy loading, que permite o carregamento rápido
de dados com um mínimo de dispêndio de memória do sistema.
 Versão 2.1.0 – Suporte para codificação UTF-8, e o início da internacionalização e localização para
diferentes linguagens.
 Versão 2.11.0 – 22 de abril de 2010 – Suporte para sistemas Windows de 64 bits.
 Versão 2.13.0 – 14 de abril de 2011 – Adiciona uma nova função de compilação que permite acelerar
funções convertendo-as em byte-code.
 Versão 2.14.0 – 31 de outubro de 2011 – Adicionados namespaces obrigatórios para os pacotes. Adicionado
um novo pacote paralelo.
 Versão 2.15.0 – 30 de março de 2012 – Novas funções de balanceamento de carga. Melhorada a velocidade
de seriação para vetores longos.

Interfaces
Interfaces de usuário gráficas
 RGUI – vem com uma versão pré-compilada do R para Microsoft Windows.
 Tinn-R– Um ambiente de desenvolvimento em fonte aberta altamente capaz e integrado com destaque para
a sintaxe semelhante à do MATLAB. Apenas disponível para Windows
 Java Gui for R – multi-plataforma independente de terminais R e editor baseado em Java (também
conhecido como JGR).
 Deducer – Interface de usário gráfica para o menu de análise de dados orientado (similar ao
SPSS/JMP/Minitab).
 Rattle GUI – multi-plataforma de interface de usuário gráfica baseada no RGtk2 e especificamente criada
para data mining.
 R Commander – multi-plataforma baseada em menus orientados sobre interface de usário gráfica baseada
no tcltk (vários plug-ins para Rcmdr também estão disponíveis).
 RapidMiner
 RExcel – usando R e Rcmdr a partir do Microsoft Excel.
 RKWard – Interface de usário gráfica extensível e IDE para R.
 RStudio – multi-plataforma de fonte aberta IDE (que também pode ser corrida num servidor remoto linux).
 A Revolução Analítica disponibiliza um Visual Studio baseado em IDE e tem planos para pontos baseados
na web e interfaces de click.
 Weka permite a utilização de recursos de mineração de dados em Weka e análise estatística em R.
 Existe um número especial do Journal of Statistical Software (de junho de 2012) que discute as interfaces
de usuário gráficas para o R.

39
Editores e IDEs
Editores de texto e ambientes integrados de desenvolvimento (IDEs) com algum suporte para R incluem:
Bluefish, Crimson Editor, ConTEXT, Eclipse (StatET), Emacs (Emacs Speaks Statistics), LyX (módulos para
knitr e Sweave), Vim, Geany, jEdit, Kate,R Productivity Environment (parte da Revolution R Enterprise),
RStudio, TextMate, gedit, SciTE, WinEdt (R Package RWinEdt) e Notepad++.

Linguagens de Script
As funcionalidades do R foram tornadas acessíveis a partir de diversas linguagens de script como a Python
(pelo pacote de interface do RPy), Perl(pelo módulo Statistics::R), e Ruby (com o rsruby rubygem). PL/R pode
ser usado juntamente, ou em vez da linguagem de script PL/pgSQL no sistema de gestão de bases de dados
PostgreSQL e Greenplum. Scripts no próprio R são possíveis via littler bem como via Rscript.

useR! conferências
“useR!” é o nome dado à reunião anual oficial dos usuários do R. O primeiro destes eventos foi o useR! 2004
em maio de 2004, em Viena de Áustria. Depois de saltar 2005, a conferência useR tem tido lugar anualmente,
alternando habitualmente entre localizações na Europa e na América do Norte.
Esta é lista das conferências useR!:
 useR! 2004, Viena, Áustria
 useR! 2006, Viena, Áustria
 useR! 2007, Ames, Iowa, Estados Unidos da América
 useR! 2008, Dortmund, Alemanha
 useR! 2009, Rennes, França
 useR! 2010, Gaithersburg, Maryland, Estados Unidos da América
 useR! 2011, Coventry, Reino Unido
 useR! 2012, Nashville, Tennessee, Estados Unidos da América
 useR! 2013, Albacete, Espanha

Comparação com SAS, SPSS e Stata


O consenso geral é que o R se compara bem com outros populares pacotes estatísticos, tais como SAS, SPSS
e Stata. Em janeiro de 2009, o New York Times publicou um artigo sobre o aumento de aceitação do R entre
os analistas de dados e apresentando uma potencial ameaça para a quota de mercado ocupada por pacotes
estatísticos comerciais, como o SAS.

Suporte comercial para o R


Em 2007, a Revolução Analítica foi fundada para disponibilizar suporte comercial para a Revolução R, a sua
distribuição do R, que também inclui componentes desenvolvidos pela companhia. Os principais componentes
adicionais incluem: ParallelR, o ambiente de produtividade IDE para o R, RevoScaleR (para análise de grandes
dados), RevoDeployR, quadro de serviços web, e a capacidade para ler e escrever dados no formato de ficheiro
SAS.

Em outubro de 2011, a Oracle anunciou o Big Data Appliance, que integra o R, o Apache Hadoop, o Oracle
Enterprise Linux, e uma base de dados NoSQL com o hardware Exadata. O Oracle R Enterprise é agora um
dos dois componentes do “Oracle Advanced Analytics Option” (o outro componente é o Oracle Data Mining).
Outros grandes sistemas de software comercial que suportam conexões ou integração com o R incluem: JMP,
Mathematica, MATLAB, Spotfire, SPSS, STATISTICA, Platform Symphony, e SAS.

TIBCO, o atual proprietário da linguagem S-Plus, está a permitir que alguns dos seus empregados apoiem
ativamente o R participando na sua lista de discussão R-Help (anteriormente mencionada), e pelo patrocínio
da série useR das reuniões de grupos de usuários. A Google é um grande utilizador interno do R e publica um
guia de estilo. Patrocina os projetos R nos seus trabalhos Summer-of-Code, e também suporta financeiramente
as séries de reuniões useR.
RStudio oferece software, educação e serviços para a comunidade R.

Tutorial Rápido
Para sair do R, digitar q().
Para procurar qualquer coisa, digitar help.search(“qualquer coisa”).
Normalmente, essa procura vai mencionar a biblioteca necessária para rodar a função. Para carregar a
biblioteca, digitar library(“biblioteca”).

40
É possível escrever comandos em um arquivo e executá-lo, basta digitar source(“arquivo”).
summary(variavel) dá várias informações sobre a variável. Outra forma de obter (ainda mais) informações é
digitando variavel[].
getwd e setwd são usados para informar e alterar o diretório de trabalho.

API (application programming interface).

API é o acrônimo de Application Programming Interface ou, em português, Interface de Programação de


Aplicativos.

Trata-se de um conjunto de rotinas e padrões estabelecidos por um software para a utilização das suas
funcionalidades por aplicativos que não pretendem envolver-se em detalhes da implementação do software,
mas apenas usar seus serviços.

API é a “matrix” dos aplicativos, ou seja, uma interface que roda por trás de tudo: enquanto você usufrui de um
aplicativo ou site, a sua API pode estar conectada a diversos outros sistemas e aplicativos. E tudo isso acontece
sem que você perceba.

Por exemplo, um sistema operativo possui uma grande quantidade de funções na API, que permitem ao
programador criar janelas, aceder a arquivos, cifrar dados etc. Mas as APIs dos sistemas operativos costumam
ser dissociadas de tarefas mais essenciais, como a manipulação de blocos de memória e acesso a dispositivos.
Essas tarefas são atributos do núcleo de sistema e raramente são programáveis.

Outro exemplo são programas de desenho geométrico que possuem uma API específica para criar
automaticamente entidades de acordo com padrões definidos pelo utilizador.

Mais recentemente, o uso de API tem-se generalizado nos plugins (acessórios que complementam a
funcionalidade de um programa). Os autores do programa principal fornecem uma API específica para que
outros autores criem plugins, estendendo as funcionalidades do programa.

Propósito
O propósito das APIs é o de simplificar o desenvolvimento de programas e aplicações, através da abstração
dos diversos elementos que compõem um software. Isso permite que o desenvolvedor não precise saber
detalhadamente a implementação de todas as partes que compõem um sistema, mas sim, precisará saber
como utilizar os serviços fornecidos pelas APIs de seu interesse e como se dará a interação destas com os
outros elementos de seu software.

API Web
É um conjunto de interfaces no contexto de desenvolvimento Web. Uma API é um conjunto definido de
mensagens de requisição e resposta HTTP, geralmente expresso nos formatos XML ou JSON. A chamada
Web 2.0 vem abandonando o modelo de serviços SOAP em favor da técnica REST.

Enquanto você usufrui de um aplicativo ou site, este pode estar conectado a diversos outros sistemas e
aplicativos via APIs sem que se perceba.

Um exemplo popular é a rede social Twitter, sendo possível ler e publicar mensagens. De maneira semelhante,
é possível ler e publicar mensagens no Reddit.

Metadados de Arquivos
Metadados é por vezes referido como " dados sobre dados ". Refere-se à descrição do conteúdo do arquivo e
a proveniência dos dados do arquivo. Os metadados podem ser digitalmente atribuídos aos arquivos de vários
tipos, incluindo documentos de texto, imagens e arquivos de áudio- visual.

Às vezes é necessária uma ajuda extra para interpretar os dados informáticos dentro de contexto adequado.

41
Os dados, especialmente os dados digitais, assumem muitas formas. As conversas por voz, as mensagens de
texto ou as redes sociais comunicam dados. As transações digitais bancárias ou comerciais envolvem a
transferência de dados. Conteúdo na web, entretenimento digitalizado e transferido, bancos de dados e
repositórios de informações de todos os tipos são exemplos de publicações de dados.

Os metadados descrevem o que são esses dados: eles fornecem informações sobre esses dados. Isso é
bastante simples. No entanto, se analisarmos isso em detalhe, descobrimos que "descrever" os dados é um
exercício técnico rigoroso e um problema carregado de implicações sócio-políticas.

Um exemplo simples do uso deste recurso seria a informação anexada aos arquivos PDF ou DOC contida nos
mesmos arquivos e que indicam, entre outras informações, o autor do documento, a data e a hora de sua
criação, além do detalhe de sua última modificação.

Ainda um outro exemplo de metadados seriam as etiquetas (tags) com palavras-chave que aparecem ao lado
de um artigo de blog ou site e que ajudam a classificá-lo em pesquisas posteriores.

Conceitualmente, os metadados se tornariam como o índice de um livro, que nos ajuda a localizar os diferentes
conteúdos e acessá-los.

Assim, os metadados podem descrever a estrutura do conjunto de um dado principal, oferecer informação e
descrição, ou ainda constituir informações adicionais de tipo estatístico ou de controle.
São especialmente úteis quando se trata de classificar a informação contida para sua posterior recuperação.

É por isso que, nos arquivos informáticos, os metadados são muitas vezes "ocultos", mesmo que se possa
encontrar uma opção para vê-los.

A NISO (National Information Standards Organization, Organização Nacional de Padrões da Informação)


oferece uma taxonomia que pode ser aplicada a todos os tipos de dados ou repositórios de dados, desde
bibliotecas a sites na web, para dados textuais ou não, em formas digitalizadas ou físicas.

A NISO descreve três tipos de metadados.

Metadados descritivos incluem informações como pontos de contato, o título ou o autor de uma publicação,
o resumo de um trabalho, palavras-chave usadas em um trabalho, uma localização geográfica ou até mesmo
a explicação de uma metodologia. Esses dados são importantes para descobrir, coletar ou agrupar recursos
de acordo com as características compartilhadas por eles. Para entender como os metadados descritivos se
relacionam aos dados informativos, acesse as páginas de Business and Consumer Surveys (BCS, Pesquisas
com Empresas e Consumidores) organizadas pelo departamento de Assuntos Econômicos e Financeiros da
Comissão Europeia. Além dos dados de pesquisa, você também pode obter os metadados de BCS da pesquisa
de cada país membro da UE, por exemplo, da França. Os arquivos de metadados identificam os dados de
contato, a metodologia e a data de cada pesquisa, mas eles não contêm os dados de perguntas e respostas
coletados durante a realização da pesquisa.

Metadados estruturais explicam como um recurso é composto ou organizado. Um livro digitalizado, por
exemplo, pode ser publicado como arquivos de imagens individuais das páginas, PDF ou HTML. Essas páginas
ou partes componentes podem geralmente ser agrupadas em capítulos. Os detalhes dos dados do capítulo,
do índice ou do layout da página são considerados metadados estruturais. Um mapa estrutural das páginas ou
outros recursos de um site na web, tipos de registros de evento de brecha de segurança ou registros de
detalhes de chamadas por voz também são tipos de metadados estruturais.

Metadados administrativos são usados para gerenciar um recurso. As datas de criação ou aquisição, as
permissões, direitos ou proveniência de acesso ou as diretrizes para a disposição como retenção ou remoção
são exemplos de direitos que podem ser utilizados por um arquivista digital ou curador. Metadados
semelhantes seriam relevantes para um administrador de banco de dados ou para os administradores
responsáveis pela captura de fluxos de tráfego de telecomunicações ou rede de dados ou log de segurança e
dados de eventos.

Como ler metadados

42
1 - Inicie o computador e faça login como administrador. Navegue até o arquivo ou pasta na unidade que
contém os metadados. No gerenciador de arquivos, ative detalhes do arquivo no menu " View".

2 - o botão direito do mouse no arquivo ou pasta e clique em " Propriedades". Isto irá abrir uma caixa de menu
com várias abas e campos de metadados que exibem a data de modificação do arquivo, tamanho e conteúdo.
Clique nas abas para ver mais metadados sobre o arquivo. Alternativamente, selecione o arquivo e visualizar
os detalhes do arquivo nas margens do gerenciador de arquivos.

3 - Clique duas vezes no arquivo para abrir o arquivo em seu aplicativo nativo. Se for um arquivo de áudio ou
vídeo, clique com o botão direito da pista na lista de reprodução e selecione a opção para exibir detalhes da
faixa ou propriedades. Uma caixa de menu aparecerá com tags ID3 de áudio ou outros dados de arquivos de
mídia. Se o arquivo for um documento de texto ou imagem, selecione a opção para ver os detalhes de arquivos
ou conteúdos encontrados no menu " Tools".

Banco de Dados
O que é Banco de Dados?

Um banco de dados é uma coleção de dados inter-relacionados, representando informações sobre um


domínio específico, ou seja, sempre que for possível agrupar informações que se relacionam e tratam de um
mesmo assunto, posso dizer que tenho um banco de dados.

Podemos exemplificar situações clássicas como uma lista telefônica, um catálogo de CDs ou um sistema de
controle de RH de uma empresa.

Já um sistema de gerenciamento de banco de dados (SGBD) é um software que possui recursos capazes de
manipular as informações do banco de dados e interagir com o usuário. Exemplos de SGBDs são: Oracle,
SQL Server, DB2, PostgreSQL, MySQL, o próprio Access ou Paradox, entre outros.

Por último, temos que conceituar um sistema de banco de dados como o conjunto de quatro componentes
básicos: dados, hardware, software e usuários. Date conceituou que “sistema de bancos de dados pode ser
considerado como uma sala de arquivos eletrônica”.

Figura 1.Componentes de um sistema de banco de dados

Os objetivos de um sistema de banco de dados são o de isolar o usuário dos detalhes internos do banco de
dados (promover a abstração de dados) e promover a independência dos dados em relação às aplicações, ou
seja, tornar independente da aplicação, a estratégia de acesso e a forma de armazenamento.

43
Abstração de dados
O sistema de banco de dados deve garantir uma visão totalmente abstrata do banco de dados para o usuário,
ou seja, para o usuário do banco de dados pouco importa qual unidade de armazenamento está sendo usada
para guardar seus dados, contanto que os mesmos estejam disponíveis no momento necessário.

Esta abstração se dá em três níveis (Figura 2):


 Nível de visão do usuário: as partes do banco de dados que o usuário tem acesso de acordo com a
necessidade individual de cada usuário ou grupo de usuários;
 Nível conceitual: define quais os dados que estão armazenados e qual o relacionamento entre eles;
 Nível físico: é o nível mais baixo de abstração, em que define efetivamente de que maneira os dados estão
armazenados.

Figura 2. Níveis de abstração

Projeto de banco de dados

Todo bom sistema de banco de dados deve apresentar um projeto, que visa a organização das informações e
utilização de técnicas para que o futuro sistema obtenha boa performance e também facilite infinitamente as
manutenções que venham a acontecer.

O projeto de banco de dados se dá em duas fases:


 Modelagem conceitual;
 Projeto lógico.

Estas duas etapas se referem a um sistema de banco de dados ainda não implementado, ou seja, que ainda
não exista, um novo projeto. Para os casos em que o banco de dados já exista, mas é um sistema legado, por
exemplo, ou um sistema muito antigo sem documentação, o processo de projeto de banco de dados se dará
através da utilização de uma técnica chamada de Engenharia Reversa, que será visto em outra oportunidade.

Modelo conceitual

É a descrição do BD de maneira independente ao SGBD, ou seja, define quais os dados que aparecerão no
BD, mas sem se importar com a implementação que se dará ao BD. Desta forma, há uma abstração em nível
de SGBD.

Uma das técnicas mais utilizadas dentre os profissionais da área é a abordagem entidade-relacionamento (ER),
onde o modelo é representado graficamente através do diagrama entidade-relacionamento (DER)

44
Figura 2. Exemplo de diagrama entidade-relacionamento
O modelo acima, entre outras coisas, nos traz informações sobre Alunos e Turmas. Para cada Aluno, será
armazenado seu número de matrícula, seu nome e endereço, enquanto para cada turma, teremos a informação
de seu código, a sala utilizada e o período.

Modelo lógico
Descreve o BD no nível do SGBD, ou seja, depende do tipo particular de SGBD que será usado. Não podemos
confundir com o Software que será usado. O tipo de SGBD que o modelo lógico trata é se o mesmo é relacional,
orientado a objetos, hierárquico, etc.

Abordaremos o SGBD relacional, por serem os mais difundidos. Nele, os dados são organizados em tabelas
(Quadro 1).

Tabelas (Quadro 1).

Aluno
mat_aluno nome endereco
1 Cecília Ortiz Rezende Rua dos Ipês, 37
2 Abílio José Dias Avenida Presidente Jânio Quadros, 357
3 Renata Oliveira Franco Rua Nove de Julho, 45

Turma
cod_turma sala periodo
1 8 Manhãnte
2 5 Noite

Quadro 1. Exemplo de tabelas em um SGBD relacional

O modelo lógico do BD relacional deve definir quais as tabelas e o nome das colunas que compõem estas
tabelas.

Para o nosso exemplo, poderíamos definir nosso modelo lógico conforme o seguinte:

1Aluno(mat_aluno, nome, endereco)


2Turma (cod_turma, sala, periodo)

É importante salientar que os detalhes internos de armazenamento, por exemplo, não são descritos no modelo
lógico, pois estas informações fazem parte do modelo físico, que nada mais é que a tradução do modelo lógico
para a linguagem do software escolhido para implementar o sistema.

Os Sistemas de Gerenciamento de Banco de Dados – SGBD

• Tipos de SGBD

45
Os Sistemas de Gerenciamento de Banco de Dados – SGBD são softwares que proporcionam armazenamento
e recuperação de dados com segurança. É um conjunto de ferramentas que facilitam as operações e os
resultados com segurança.
São diversos os fornecedores de SGBD. Entre os mais conhecidos estão o Oracle, o SQL Server, o MySQL, o
PostGre, Microsoft Access (para projetos mais simples) e muitos outros.
Um SGBD deve cumprir o seguinte:
- Linguagem de Modelagem, definindo o esquema com o qual os bancos de dados são construídos. Usando o
modelo relacional é generalizada.
- As estruturas de dados, como campos, registros, arquivos ou objetos devem ser manipulados pelo SGBD, e
armazenado em um meio de armazenamento permanente.
- Query Language, que permite a recuperação de dados, analisar e modificar considerando-se os privilégios
de acesso dos usuários.
- Mecanismos transacionais, que garantir o cumprimento da ACID (Atomicidade, Consistência, Isolamento,
Durabilidade - Atomicidade, Consistência, Isolamento e Durabilidade), garantindo também a integridade dos
dados.

• O que compõe um banco de dados Tabelas

Uma tabela de banco de dados é semelhante na aparência a uma planilha, pois os dados são armazenados
em linhas e colunas. Como resultado, geralmente é bem fácil importar uma planilha em uma tabela de banco
de dados. A principal diferença entre armazenar os dados em uma planilha e armazená-los em um banco de
dados é a maneira como os dados são organizados.

Para obter maior flexibilidade de um banco de dados, os dados precisam ser organizados em tabelas de forma
que não ocorram redundâncias. Por exemplo, se você armazenar informações sobre funcionários, cada
funcionário deverá ser inserido apenas uma vez em uma tabela que esteja configurada apenas para manter
dados de funcionários. Os dados sobre produtos serão armazenados em suas próprias tabelas, e os dados
sobre as filiais serão armazenados em outra tabela. Esse processo é chamado normalização.

Registros

Cada linha em uma tabela é denominada um registro. Os registros são os locais onde os itens individuais de
informações são armazenados. Cada registro consiste em um ou mais campos.

Outra maneira de descrever registros e campos é visualizar um catálogo de cartões de biblioteca no estilo
antigo.

Cada cartão do arquivo corresponde a um registro no banco de dados. Cada informação em um cartão
individual (autor, título e assim por diante) corresponde a um campo no banco de dados.

Campos

Os campos correspondem às colunas da tabela. Por exemplo, você pode ter uma tabela denominada
"Funcionários" em que cada registro (linha) contém informações sobre um funcionário diferente, e cada campo
(coluna) contém um tipo de informação diferente, como o nome, sobrenome, endereço e assim por diante. Os
campos devem ser designados com um determinado tipo de dados, seja texto, data ou hora, número ou algum
outro tipo.

46
Chave primária

Uma chave primária consiste num campo ou conjunto de campos da tabela que fornece ao SGBD um
identificador exclusivo para cada linha. Numa base de dados relacional, as informações são divididas em
tabelas baseadas em assuntos separados. Em seguida, as relações de tabela e as chaves primárias são
utilizadas para indicar ao SGBD como associar novamente as informações. Os SGBD utiliza os campos de
chave primária para associar rapidamente os dados a partir de várias tabelas e combinar os dados de forma
lógica.

Este método funciona, tendo em conta que, uma vez definida a chave primária, é possível utilizá-la em outras
tabelas para voltar a fazer referência à tabela utilizando a chave primária. Por exemplo, um campo ID do Cliente
na tabela Clientes também poderá ser apresentado na tabela Encomendas. Na tabela Clientes, trata-se da
chave primária. Na tabela Encomendas, denomina-se chave externa. Uma chave externa, simplesmente
indicada, trata-se da chave primária de outra tabela.

47
Frequentemente, um número de identificação exclusivo, como, por exemplo, um número de ID ou um número
de série ou código, funciona como chave primária numa tabela. Por exemplo, poderá ter uma tabela Clientes,
na qual cada cliente tenha um número de ID de cliente exclusivo. O campo de ID de cliente corresponde à
chave primária.

Um bom candidato a chave primária apresenta várias características. Em primeiro lugar, identifica de forma
exclusiva cada linha. Em segundo lugar, nunca está vazio nem é nulo: contém sempre um valor. Em terceiro
lugar, raramente é alterado (idealmente, nunca). O SGBD utiliza os campos de chave primária para associar
rapidamente dos dados provenientes de várias tabelas.

Um exemplo de uma escolha pouco adequada para uma chave primária seria um nome ou endereço. Ambos
contêm informações que poderiam ser alteradas com o decorrer do tempo.

Deverá especificar sempre uma chave primária para uma tabela. O SGBD cria automaticamente um índice
para a chave primária, que permite ajudar a tornar mais rápidas as consultas, bem como outras operações. Os
SGBD também asseguram, que cada registro apresenta um valor no campo de chave primária e que é sempre
exclusivo.

Se não souber qual o campo ou conjunto de campos que possa constituir uma chave primária adequada,
considere a utilização de uma coluna com o tipo de dados Numeração Automática. Este tipo de identificador
não inclui fatos (não contém quaisquer informações fatuais que descrevam a linha que representa). É
recomendado utilizar identificadores que não incluam fatos, uma vez que os respectivos valores não são
alterados. Uma chave primária que contenha fatos sobre uma linha (por exemplo, um número de telefone ou o
nome de um cliente) tem maior probabilidade de ser alterada, uma vez que as próprias informações fatuais
podem ser alteradas.

1. Frequentemente, uma coluna com o tipo de dados Numeração Automática constitui uma chave primária
adequada, uma vez que permite assegurar que não existem dois IDs de Produto idênticos.

Em determinados casos, poderá pretender utilizar dois ou mais campos que, em conjunto, forneçam a chave
primária de uma tabela. Por exemplo, uma tabela Detalhes da Encomenda que armazene itens de linha para
encomendas utilizaria duas colunas na respectiva chave primária: ID da Encomenda e ID do Produto. Quando
uma chave primária emprega mais do que uma coluna, também é designada por chave composta.

Chave estrangeira (fazer tabela no Word)

48
Quando duas ou mais tabelas estão relacionadas há campos comuns entre elas, este campo é definido como
chave primária quando ele define o identificador exclusivo de uma tabela, e chave estrangeira quando o campo
traz informações que estão armazenadas em outra tabela. Há casos em que uma chave primária também pode
ser uma chave estrangeira (ao mesmo tempo), isso ocorre quando há um relacionamento N:N.
A coluna Código do Fornecedor da tabela Produtos é uma chave estrangeira porque é também a chave primária
da tabela Fornecedores.

Relacionamento

O que são relações tabela: Em um banco de dados relacional, as relações permitem que você evite dados
redundantes. Por exemplo, se você estiver desenvolvendo um banco de dados que irá rastrear informações
sobre livros, será necessário ter uma tabela chamada Títulos, que irá armazenar as informações sobre cada
livro, tais como o título do livro, a data de publicação e o editor. Também há informações sobre o editor que
talvez você deseje armazenar, tais como o número de telefone, o endereço e o código postal do editor. Se
você quisesse armazenar todas essas informações na tabela de títulos, o número de telefone do editor seria
duplicado para cada título que ele publicasse.

A melhor solução é armazenar as informações do editor somente uma vez em uma tabela separada, Editores.
Assim, você poderá colocar um ponteiro na tabela Títulos para referir a uma entrada na tabela Editores.
Para certificar-se de que seus dados não estão fora de sincronismo, é possível reforçar a integridade referencial
entre as tabelas Títulos e Editores. As relações de integridade referencial ajudam a garantir que as informações
em uma tabela correspondem às informações em outra tabela. Por exemplo, cada título na tabela Títulos deve
estar associado a um editor específico na tabela Editores. Um título não pode ser adicionado ao banco de
dados para um editor que não existe no banco de dados.

Um dos objetivos de um bom design de banco de dados é remover a redundância de dados (dados duplicados).
Para alcançar esse objetivo, divida os dados em várias tabelas baseadas em tópicos para que cada fato seja
representado apenas uma vez. Depois, forneça ao SGBD os meios para reunir as informações divididas —
faça isso colocando campos em comum em tabelas que sejam relacionadas. Para realizar essa etapa
corretamente, entretanto, você deve primeiro compreender as relações entre as tabelas e depois especificar
essas relações no banco de dados.

Depois de criar uma tabela para cada assunto em seu banco de dados, você deverá fornecer ao SGBD os
meios pelos quais ele reunirá novamente essas informações quando for necessário. Isso é feito colocando-se
campos em comum nas tabelas que são relacionadas e definindo-se relações entre as tabelas. Em seguida,
você pode criar consultas, formulários e relatórios que exibam informações de várias tabelas de uma só vez.
Por exemplo, o formulário mostrado aqui inclui informações retiradas de várias tabelas:

49
Tela de pedidos exibindo de uma só vez informações de quatro tabelas

As informações desse formulário são originárias da tabela Clientes...


2. da tabela Pedidos...
3. da tabela Produtos...
4. e da tabela Detalhes do Pedido.

O nome do cliente na caixa Cobrar é recuperado da tabela Clientes; os valores de Código do Pedido e Data
do Pedido vêm da tabela Pedidos; o nome do Produto vem da tabela Produtos; os valores de Preço Unitário e
Quantidade vêm da tabela Detalhes do Pedido. Essas tabelas são vinculadas umas às outras de várias formas
para trazer as informações de todas para o formulário.

No exemplo anterior, os campos das tabelas precisam estar coordenados de forma que mostrem informações
sobre o mesmo pedido. Tal coordenação é realizada usando-se relações de tabelas. Uma relação de tabela
funciona pela correspondência de dados em campos chave - geralmente um campo com o mesmo nome em
ambas as tabelas. Na maioria dos casos, esses campos correspondentes são a chave primária de uma tabela,
que fornece um identificador exclusivo para cada registro, e uma chave estrangeira da outra tabela. Pode-se,
por exemplo, associar funcionários aos pedidos pelos quais são responsáveis criando-se uma relação de tabela
entre os campos Código Do Funcionário nas tabelas Funcionários e Pedidos.

1. Código do funcionário aparece em ambas as tabelas — como uma chave primária ...
2. e como uma chave estrangeira.

Tipos de relações tabela: Uma relação trabalha correspondendo dados nas colunas chave, geralmente as
colunas com o mesmo nome em ambas as tabelas. Na maioria dos casos, as relações correspondem a chave
primária de uma tabela, que fornece um identificador exclusivo para cada linha, à entrada na chave estrangeira
da outra tabela. Por exemplo, as vendas podem ser associadas aos títulos específicos vendidos criando uma
relação entre a coluna título_id na tabela Títulos (a chave primária) e a coluna título_id na tabela Vendas (a

50
chave estrangeira).

Há três tipos de relações de tabela

Uma relação um-para-muitos: Considere um banco de dados de controle de pedidos que inclua uma
tabela Clientes e uma tabela Pedidos. Um cliente pode fazer qualquer número de pedidos. Assim, para
qualquer cliente representado na tabela Clientes, pode haver vários pedidos representados na tabela Pedidos.
A relação entre a tabela Clientes e a tabela Pedidos é, portanto, uma relação um-para-muitos.

Para representar uma relação um-para-muitos em um design de banco de dados, tome a chave primária do
lado "um" da relação e adicione-a como um campo ou campos adicionais à tabela no lado "muitos" da relação.
Nesse caso, por exemplo, adicione um novo campo — o campo Código da tabela Clientes — à tabela Pedidos
e nomeie-o como Código do Cliente. O SGBD poderá então usar o número do Código do Cliente na tabela
Pedidos para localizar o cliente correto para cada pedido.

Uma relação muitos-para-muitos: Considere a relação entre uma tabela Produtos e uma tabela Pedidos.
Um único pedido pode incluir mais de um produto. Por outro lado, um único produto pode constar em vários
pedidos. Assim, para todos os registros da tabela Pedidos, pode haver vários registros na tabela Produtos.

Além disso, para cada registro na tabela Produtos, pode haver muitos registros na tabela Pedidos. Esse tipo
de relação é denominado relação muitos-para-muitos porque com relação a todos os produtos pode haver
vários pedidos, e para todos os pedidos pode haver vários produtos. Observe que para detectar relações
muitos-para-muitos existentes entre as tabelas é importante considerar ambos os lados da relação.

Para representar uma relação muitos-para-muitos, você deve criar uma terceira tabela, geralmente chamada
de tabela de associação, que divide a relação muitos-para-muitos em duas relações um-para-muitos. Insira a
chave primária de cada uma das duas tabelas na terceira tabela. Como resultado, a terceira tabela registra
cada ocorrência, ou instância, da relação. Por exemplo, a tabela Pedidos e a tabela Produtos possuem uma
relação muitos-para-muitos que é definida criando-se duas relações um-para-muitos com a tabela Detalhes do
Pedido. Um pedido pode ter muitos produtos, e cada produto pode aparecer em muitos pedidos.

Uma relação um-para-um: Em uma relação um-para-um, cada registro na primeira tabela pode ter somente
um registro correspondente na segunda tabela, e cada registro na segunda tabela pode ter somente um registro
correspondente na primeira tabela. Esse tipo de relação não é comum porque, geralmente, as informações
relacionadas dessa maneira são armazenadas na mesma tabela. A utilização de uma relação um-para-um é
recomendada para dividir uma tabela com muitos campos, isolar parte de uma tabela por motivos de segurança
ou armazenar informações que se apliquem somente a um subconjunto da tabela principal. Quando você
identificar esse tipo de relação, ambas as tabelas devem compartilhar um campo em comum.

• Criar relações de tabela


Você pode criar relações de tabela explicitamente usando a janela Relações ou arrastando um campo do painel
Lista de Campos. O Office Access 2007 usa relações de tabelas para que elas possam ser unidas quando for
necessário utilizá-las em um objeto de banco de dados. Há várias razões que justificam a criação de relações
de tabelas antes da criação de outros objetos do banco de dados, como formulários, consultas e relatórios.

As relações de tabela informam os designs de consulta


Para trabalhar com registros de mais de uma tabela, você geralmente deve criar uma consulta que associe as
tabelas. A consulta faz a correspondência dos valores no campo de chave primária da primeira tabela com um
campo de chave estrangeira na segunda tabela. Por exemplo, para retornar linhas que listem todos os pedidos
de cada cliente, construa uma consulta que faça a associação da tabela Clientes com a tabela Pedidos com
base no campo Código do Cliente. Na janela Relações, você pode especificar manualmente os campos a
serem associados. Entretanto, se você já tiver uma relação definida entre as tabelas, o SGBD fornece a
associação padrão, com base na relação de tabela existente. Além disso, se você usar um dos assistentes de
consulta, o SGBD usa as informações coletadas das relações da tabela já definidas para apresentá-lo opções
informadas e para pré-definir configurações de propriedade com os valores padrão adequados.

As relações de tabela informam os designs de formulário e relatório


Quando você cria um formulário ou relatório, o SGBD usa as informações coletadas das relações de tabela já

51
definidas para apresentá-lo opções informadas e para pré-definir configurações de propriedade com os valores
padrão adequados.

As relações de tabelas são a base através da qual você pode garantir a integridade referencial para ajudar a
evitar registros órfãos no banco de dados. Um registro órfão é um registro com uma referência a outro registro
que não existe — por exemplo, um registro de pedido que faça referência a um registro de cliente que não
existe.

Quando você cria um banco de dados, divide as informações em tabelas, cada uma com uma chave primária.
Depois, você adiciona chaves estrangeiras a tabelas relacionadas que façam referência a essas chaves
primárias.

Esses pares chave estrangeira-chave primária formam a base das relações de tabelas e consultas de várias
tabelas. É importante, entretanto, que essas referências chave estrangeira-chave primária permaneçam
sincronizadas. A integridade referencial ajuda a garantir que as referências permaneçam sincronizadas e
depende das relações de tabelas.

• Noções básicas sobre integridade referencial

Quando você cria um banco de dados, divide as informações em várias tabelas baseadas em tópicos para
minimizar a redundância de dados. Forneça, então, ao SGBD os meios necessários para reunir os dados
novamente colocando campos em comum em tabelas relacionadas. Por exemplo, para representar uma
relação um-para-muitos, tome a chave primária da tabela "um" e adicione-a como campo adicional na tabela
"muitos". Para reunir os dados novamente, o SGBD pega o valor na tabela "muitos" e procura o valor
correspondente na tabela "um". Dessa forma, os valores na tabela "muitos" fazem referência aos valores
correspondentes na tabela "um". Suponha que você tenha uma relação um-para-muitos entre Expedidores e
Pedidos e você deseje excluir um Expedidor. Se o expedidor que você deseja excluir tiver pedidos na tabela
Pedidos, esses pedidos se tornarão "órfãos" quando você excluir o registro Expedidor. Os pedidos ainda
conterão um código de expedidor, mas ele não será mais válido, porque o registro ao qual ele faz referência
não existe mais.

O objetivo da integridade referencial é evitar órfãos e manter as referências em sincronia, para que esta
situação hipotética nunca ocorra. Imponha a integridade referencial habilitando-a para uma relação de tabela
(consulte Impor a integridade referencial para obter instruções passo a passo). Depois que ela é imposta, o
SGBD rejeita qualquer operação que possa violar a integridade referencial dessa relação de tabela. Isso
significa que o SGBD rejeitará ambas atualizações que alterem o destino de uma referência e exclusões que
removam o destino de uma referência. Entretanto, é possível que você venha a ter uma necessidade
perfeitamente válida de alterar a chave primária de um expedidor que possua pedidos na tabela Pedidos.

Nesses casos, o que você realmente precisa é que o SGBD atualize automaticamente todas as linhas afetadas
como parte de uma única operação. Dessa forma, o SGBD garante que a atualização seja totalmente realizada,
de forma que o banco de dados não fique inconsistente, com algumas linhas atualizadas e outras não. Por
esse motivo, o SGBD oferece suporte à opção Propagar Atualização dos Campos Relacionados. Quando você
impõe a integridade referencial e escolhe a opção Propagar Atualização dos Campos Relacionados, e depois
atualiza uma chave primária, o SGBD atualiza automaticamente todos os campos que fazem referência à chave
primária.

É possível também que você venha a ter a necessidade válida de excluir uma linha e todos os registros
relacionados
— por exemplo, um registro Expedidor e todos os pedidos relacionados a ele. Por isso, o SGBD oferece suporte
à opção Propagar Exclusão dos Registros Relacionados. Quando você impõe a integridade referencial e
escolhe a opção Propagar Exclusão dos Registros Relacionados e depois exclui um registro no lado da chave
primária da relação, o SGBD automaticamente exclui todos os registros que fazem referência à chave primária.

Formulários

Às vezes refere-se aos formulários como "telas de entrada de dados". Eles são as interfaces usadas para
trabalhar com os dados e frequentemente contêm botões de comando que executam vários comandos. Você
pode criar um banco de dados sem usar formulários, simplesmente editando seus dados nas folhas de dados
da tabela. Contudo, a maioria dos usuários de bancos de dados prefere usar formulários para exibir, inserir e

52
editar dados nas tabelas.

Os formulários fornecem um formato fácil de usar para trabalhar com os dados, e você também pode adicionar
elementos funcionais, como botões de comando. Você pode programar os botões para determinar quais dados
aparecem no formulário, abrir outros formulários ou relatórios, ou executar várias outras tarefas. Por exemplo,
você pode ter um formulário chamado "Formulário do Cliente" no qual você trabalha com dados de clientes. O
formulário do cliente pode ter um botão que abre um formulário de pedido no qual você pode inserir um novo
pedido para esse cliente.

Os formulários também permitem controlar como outros usuários interagem com os dados no banco de dados.
Por exemplo, você pode criar um formulário que mostra apenas determinados campos e permite que apenas
determinadas operações sejam executadas. Isso ajuda a proteger dados e a garantir que os dados sejam
inseridos corretamente.

Relatórios

Os relatórios são usados para resumir e apresentar os dados nas tabelas. Geralmente, um relatório responde
a uma pergunta específica, como "Que valor recebemos de cada cliente este ano?" ou "Em quais cidades
nossos clientes estão localizados?" Cada relatório pode ser formatado para apresentar as informações de
maneira a melhor facilitar a leitura.

Um relatório pode ser executado a qualquer momento e sempre refletirá os dados atuais no banco de dados.
De maneira geral, os relatórios são formatados para serem impressos, mas também podem ser exibidos na
tela, exportados para outro programa ou enviados como uma mensagem de email.

Consultas

É nas consultas que reside o trabalho real de um banco de dados, e elas podem executar várias funções
diferentes. Sua função mais comum é recuperar dados específicos das tabelas.

Geralmente, os dados que você deseja ver estão espalhados em várias tabelas, e as consultas permitem exibi-
los em uma única folha de dados. Além disso, como geralmente você não deseja ver todos os registros de uma
vez, as consultas permitem adicionar critérios para "filtrar" os dados até obter somente os registros desejados.
Frequentemente as consultas servem como fonte de registros para formulários e relatórios.

Certas consultas são "atualizáveis", o que significa que você pode editar os dados nas tabelas base por meio
da folha de dados da consulta. Se estiver trabalhando em uma consulta atualizável, lembre-se de que as
alterações estão realmente sendo feitas nas tabelas e não apenas na folha de dados da consulta.

As consultas têm duas variedades básicas: consultas seleção e consultas ação. Uma consulta seleção
simplesmente recupera os dados e os disponibiliza para uso. Você pode exibir os resultados da consulta na
tela, imprimi-los ou copiá-los para a área de transferência. Ou você pode usar a saída da consulta como fonte
de registros para um formulário ou relatório.
Uma consulta ação, como o nome indica, executa uma tarefa com os dados. As consultas ação podem ser
usadas para criar novas tabelas, adicionar dados a tabelas existentes, atualizar ou excluir dados.
1.
• Design de banco de dados

Certos princípios guiam o processo de design do banco de dados. O primeiro princípio é que informações
duplicadas (também denominadas dados redundantes) são ruins porque consomem espaço e aumentam a
possibilidade de erros e inconsistências. O segundo princípio é que a correção e completitude das informações
é importante. Se o banco de dados contiver informações incorretas, todos os relatórios que empregam
informações do banco de dados também conterão informações incorretas. Como resultado, todas as decisões
tomadas a partir desses relatórios serão errôneas.

Um bom design de banco de dados, portanto, é um que:


- Divide as informações em tabelas baseadas em tópicos, visando reduzir a redundância de dados.
- Fornece ao SGBD os dados essenciais à reunião de informações nas tabelas, conforme necessário.
- Ajuda a oferecer suporte e assegurar a precisão e a integridade das informações.
- Atende suas necessidades de processamento de dados e de relatórios.

53
O processo do design
O processo do design consiste nas seguintes etapas:

Determinar a finalidade do seu banco de dados

Recomenda-se anotar a finalidade do banco de dados em um papel — sua finalidade, como se espera usá-lo
e quem o usará. Com relação a um banco de dados pequeno e de empresa caseira, por exemplo, você
escreveria algo como "O banco de dados cliente mantém uma lista de informações de clientes com a finalidade
de produzir malas diretas e relatórios". Se o banco de dados for mais complexo ou usado por diversas pessoas,
como ocorre frequentemente em um ambiente empresarial, a finalidade poderia ser contida em um simples
parágrafo ou mais, devendo incluir quando e como cada pessoa irá usar o banco de dados. A ideia é ter uma
declaração de missão bem desenvolvida, à qual se possa referir durante todo o processo de design. Ter uma
declaração como essa ajuda a focar nas metas no momento da tomada de decisões.

Localizar e organizar as informações necessárias: Reunir todos os tipos de informações que você
possa desejar gravar no banco de dados, como nome de produto e número de pedido.

Para localizar e organizar as informações requeridas, comece pelas informações existentes. Por exemplo, é
possível registrar os pedidos de compra em um livro razão ou manter as informações do cliente em formulários
de papel em um gabinete de arquivos. Reúna esses documentos e liste cada um dos tipos de informações
mostrados (por exemplo, cada caixa preenchida em um formulário). Se não houver formulários, imagine que
será necessário criar um formulário para registrar as informações do cliente. Que informações você colocaria
no formulário? Que caixas de preenchimento você criaria? Identifique e liste todos esses itens. Por exemplo,
supondo que você atualmente mantém a lista de clientes em cartões de índice. O exame desses cartões
demonstra que cada cartão contém um nome, endereço, cidade, estado, CEP e número de telefone do cliente.
Cada um desses itens representa uma coluna potencial em uma tabela.

À medida que prepara a lista, não se preocupe em conseguir uma lista perfeita na primeira tentativa. Em vez
disso, liste todos os itens que lhe vierem à mente. Se outras pessoas usarem o banco de dados, peça
sugestões também.

Você poderá refinar posteriormente a lista.

Em seguida, considere os tipos de relatórios ou de listas de distribuição a serem produzidos com o banco de
dados. Por exemplo, você poderá gerar um relatório de vendas de produto que apresente as vendas por região,
ou um relatório de resumo de inventário mostrando os níveis de inventário do produto. É igualmente possível
gerar cartas modelo para enviar aos clientes, que divulguem um evento de vendas ou que ofereçam um brinde.
Crie o relatório ideal e imagine sua aparência. Que informações você colocaria no relatório? Liste todos os
itens.
Faça o mesmo com a carta formulário e com todos os relatórios cuja criação você antevê.

54
Pensar nos relatórios e listas de distribuição a serem criados ajuda na identificação dos itens necessários ao
banco de dados. Por exemplo, supondo que você dê aos clientes a chance de optar por (ou não) por
atualizações periódicas via email, e que deseja imprimir uma listagem dos que optaram pela opção. Para
registrar essas informações, adicione uma coluna "Enviar email" à tabela do cliente. É possível configurar o
campo como Sim ou Não com relação a todos os clientes.

A necessidade de enviar mensagens de email aos clientes sugere que um outro item seja registrado. Após
saber se o cliente deseja receber mensagens de email, será também necessário saber o endereço de email
para os quais as mensagens serão enviadas. Portanto, é necessário registrar um endereço de email para cada
um dos clientes.

Há sentido em construir um protótipo de cada relatório ou listagem de saída, e pensar nos itens necessários à
produção do relatório. Por exemplo, ao examinar uma carta formulário, algumas coisas podem vir à sua mente.
Para incluir uma saudação adequada — por exemplo, a sequência de caracteres "Sr.", "Srta." ou "Sra.", que
inicia uma saudação, será preciso criar um item de saudação. Da mesma forma, é possível começar
normalmente uma carta com “Prezado Sr. Silva”, em vez de “Prezado Edmundo Silva”. Isso quer dizer que
você deseja armazenar regularmente o sobrenome em separado do nome.

Um ponto essencial a ser lembrado é que todas as partes da informação devem ser quebradas em suas partes
úteis menores. No caso de nome, para disponibilizar prontamente o sobrenome, quebre-o em duas partes —
Nome e Sobrenome.

Para classificar um relatório pelo último nome, por exemplo, é útil armazenar separadamente o sobrenome do
cliente. Em geral, quando se deseja classificar, pesquisar, calcular ou criar um relatório com base em um item
de informações, deve-se inserir esse item em seu próprio campo.

Pense nas perguntas que você deseja que o banco de dados responda. Por exemplo, quantas vendas do
produto em destaque foram fechadas mês passado? Onde vivem seus melhores clientes? Quem é o fornecedor
de seu produto de maior vendagem? A antecipação dessas perguntas ajuda a que você se concentre nos
outros itens a serem registrados.

Dividir as informações em tabelas: Dividir os itens de informações em entidades ou tópicos principais,


como Produtos ou Pedidos. Cada tópico torna-se então uma tabela.

Para dividir as informações em tabelas, escolha as maiores entidades ou tópicos. Por exemplo, após localizar
e organizar informações relativas a um banco de dados de venda de produto, a lista preliminar deve ter a
seguinte aparência:

As maiores entidades mostradas aqui são os produtos, os fornecedores, os clientes e os pedidos. Assim, há
sentido em começar pelas seguintes tabelas: uma de fatos sobre produtos, uma de fatos sobre fornecedores,
uma de fatos sobre clientes, e uma de fatos sobre pedidos. Embora essas tabelas não completem a lista, são

55
um ponto de partida. Continue e refinar essa lista até ter um design que funcione bem.

Ao examinar pela primeira vez a lista de itens, você talvez se sinta tentado a colocá-los todos em uma única
tabela, em vez de ter quatro, como mostrado na ilustração anterior. Você saberá aqui por que isso não é
recomendado. Pense um momento na tabela mostrada a seguir:

Nesse caso, cada linha contém informações sobre o produto e seu fornecedor. Como pode haver vários
produtos de um mesmo fornecedor, o nome e o endereço do fornecedor deverão ser repetidos inúmeras vezes.
Isso consome espaço em disco. Gravar as informações do fornecedor uma única vez em uma tabela
Fornecedores separada e, em seguida, vincular essa tabela à tabela Produtos, é uma solução muito melhor.
Um segundo problema com esse design advém da necessidade de se modificarem as informações sobre o
fornecedor. Por exemplo, supondo seja necessário alterar o endereço de um fornecedor. Como o endereço
aparece em vários lugares, você talvez altere acidentalmente o endereço em um local, porém se esqueça de
alterá-lo nos outros. Gravar o endereço do fornecedor em apenas um local resolve esse problema.
Ao criar seu banco de dados, tente sempre registrar cada fato apenas uma vez. Quando se pegar repetindo a
mesma informação em mais de um local, como o endereço de determinado fornecedor, coloque a informação
em uma tabela separada.

Finalmente, suponhamos que haja apenas um produto fornecido pela Coho Winery, e que você deseje excluir
o produto, retendo, porém, o nome do fornecedor e as informações de endereço. Como excluir o registro do
produto sem também perder as informações do fornecedor? Isso não é possível. Como cada registro contém
fatos sobre um produto, assim como fatos sobre o fornecedor, não é possível excluir um sem eliminar o outro.
Para manter esses fatos de maneira distinta, separe essa tabela em duas: uma tabela de informações sobre o
produto, e uma outra tabela de informações sobre o fornecedor. A exclusão do registro do produto deve eliminar
apenas os fatos sobre o produto, não os fatos sobre o fornecedor.

Após a seleção do tópico a ser representado na tabela, as colunas da tabela só devem armazenar fatos sobre
esse tópico.

Por exemplo, a tabela de produto só deve armazenar fatos sobre produtos. Como o endereço do fornecedor é
um fato sobre o fornecedor, e não um fato sobre o produto, pertence à tabela do fornecedor.

Transformar informações em colunas: Opte pelas informações que deseja armazenar em cada uma das
tabelas.
Cada item torna-se um campo que é exibido como coluna da tabela. Por exemplo, uma tabela Funcionários
pode incluir campos como Sobrenome e Data de Contratação.

Para determinar as colunas de uma tabela, opte pelas informações que você necessita controlar sobre o tópico
registrado na tabela. Por exemplo, com relação à tabela Cliente, Nome, Endereço, Cidade-Estado-CEP, Email
para envio de correspondência, Saudação e Endereço de email constituem uma lista de colunas que é um bom
começo. Cada registro da tabela contém o mesmo conjunto de colunas, de modo que é possível armazenar
informações sobre o Nome, Endereço, Cidade-Estado-CEP, Email para envio de correspondência, Saudação
e endereço de email de todos os registros. Por exemplo, a coluna de endereço contém os endereços dos
clientes. Cada registro contém dados sobre um cliente, e o campo de endereço contém o endereço do cliente.
Após determinar o conjunto inicial de colunas de cada tabela, você poderá refinar as colunas. Por exemplo, é
recomendado armazenar o nome do cliente em duas colunas separadas: o nome e o sobrenome, de modo que
se possa classificar, pesquisar e indexar apenas nessas duas colunas. Da mesma forma, o endereço na
verdade consiste em cinco componentes distintos: endereço, cidade, estado, CEP e país/região. É igualmente
recomendado armazená-los em colunas diferentes. Se você deseja realizar uma operação de pesquisa, filtro
ou classificação por estado, por exemplo, será necessário armazenar a informação de estado em uma coluna

56
separada.

Verifique se o banco de dados conterá somente informações de origem doméstica, ou se, além disso, conterá
informações internacionais. Por exemplo, se você planeja armazenar endereços internacionais, deve haver
uma coluna de Região em vez de Estado, porque essa coluna aceita os estados domésticos e as regiões de
outros países/outras regiões. Semelhantemente, o código de endereçamento postal tem mais sentido que o
CEP se você pretende armazenar endereços internacionais.

A lista a seguir mostra algumas dicas sobre a determinação de colunas.

- Não inclusão de dados calculados

Na maior parte dos casos, o resultado de cálculos não deve ser armazenado em tabelas. Em vez disso, é
possível fazer com que o SGBD realize cálculos quando se deseja exibir o resultado. Por exemplo, supondo
que haja um relatório de Produtos do Pedido que exiba o subtotal de unidades do pedido por categoria de
produto no banco de dados. Contudo, não há coluna de subtotal de Unidades no Pedido em nenhuma tabela.
Em vez disso, a tabela de Produtos inclui uma coluna Unidades do Pedido que armazena as unidades do
pedido com relação a cada um dos produtos. Usando esses dados, o SGBD calcula o subtotal cada vez que o
relatório é impresso. O próprio subtotal não pode ser armazenado na tabela.

- Armazenar as menores partes lógicas das informações

Você pode ficar tentado a ter um único campo para nomes completos, ou para nomes de produtos juntamente
com descrições de produto. Se você combinar mais de um tipo de informação em um só campo, será difícil
recuperar posteriormente os fatos individuais. Tente quebrar as informações em partes lógicas, por exemplo,
criando campos distintos para nome e sobrenome, ou por nome, categoria e descrição de produto.

Após refinar as colunas de dados de cada tabela, você estará pronto para escolher a chave primária de cada
tabela.

Especificar as chaves primárias: Escolher a chave primária de todas as tabelas. A chave primária é uma
coluna usada unicamente para identificar cada linha. Um exemplo pode ser Código de Produto ou Código de
Pedido.

Toda tabela deve incluir uma coluna ou conjunto de colunas que identifica com exclusividade cada linha

57
armazenada na tabela. Trata-se, em geral, de um número de identificação exclusivo, como o número de
identificação de um funcionário ou um número de série. Na terminologia de banco de dados, essas informações
são denominadas chave primária da tabela. O SGBD usa os campos de chave primária para associar
rapidamente os dados de várias tabelas e passar a você as informações consolidadas.

Se já houver um identificador exclusivo para a tabela, como um número de produto que identifica
exclusivamente cada produto do seu catálogo, você poderá usar esse identificador como chave primária da
tabela — porém, apenas se os valores da coluna forem sempre diferentes com relação a todos os registros.
Não é possível duplicar valores em uma chave primária. Por exemplo, não use nomes de pessoas como chave
primária, porque nomes não são exclusivos. É fácil encontrar duas pessoas com o mesmo nome em uma
mesma tabela.

A chave primária deve sempre conter um valor. Se o valor de uma coluna pode se tornar sem alocação ou
desconhecido (valor faltante) em dado momento, não poderá ser usado como componente de chave primária.
Escolha sempre uma chave primária cujo valor não se altere. Em um banco de dados que utiliza mais de uma
tabela, a chave primária de uma tabela pode ser usada como referência em outras tabelas. Se a chave primária
se alterar, a alteração precisa também ser aplicada a todos os locais em que a chave é citada. Usar uma chave
primária que não se altera reduz a possibilidade de que a chave primária fique fora de sincronia com outras
tabelas que fazem referência a ela.

Em geral, um número exclusivo arbitrário é usado como chave primária. Por exemplo, é possível atribuir um
número exclusivo de pedido a todos os pedidos. A finalidade do número de pedido é identificá-lo. Após
atribuído, ele não é mais alterado.

Se você não estiver visando a uma coluna ou conjunto de colunas que possam consistir em chave primária
adequada, pense em usar uma coluna que tenha um tipo de dados de Auto Incremento (Onde os números de
cada registro são gerados automaticamente). Quando o tipo de dados de Auto Incremento é usado, o SGBD
atribui automaticamente um valor a você. Esse identificador é isento de fatos; não contém informações factuais
que descrevam a linha que representam.

Os identificadores isentos de fatos são ideais para se usar como chave primária porque não se alteram. Uma
chave primária que contenha fatos a respeito de uma linha — número de telefone ou nome de cliente, por
exemplo — tem mais probabilidade de se alterar porque as próprias informações factuais podem se modificar.

1. Um conjunto de colunas para o tipo de dados de Auto Incremento consiste, em geral, em uma chave primária
adequada. Jamais dois códigos de produto são idênticos.

Em alguns casos, é preferível usar dois ou mais campos que, juntos, forneçam a chave primária para uma
tabela. Por exemplo, uma tabela de Detalhes do Pedido que armazene itens de linha de pedidos usaria duas
colunas em sua chave primária: Código de Pedido e Código de Produto. Quando uma chave primária emprega
mais de uma coluna, é também denominada chave composta.

Com relação ao banco de dados de vendas de produto, é possível criar uma coluna de Auto Incremento para
cada uma das tabelas, para servir como chave primária: Código Do Produto para a tabela Produtos, Código
Do Pedido para as tabelas Pedidos, Código Do Cliente para a tabela Clientes e Código Do Fornecedor para a
tabela Fornecedores.

58
Configurar as relações de tabelas: Observar cada uma das tabelas e decidir como os dados em
determinada tabela estãorelacionados aos dados de outras tabelas. Adicionar campos a tabelas ou criar novas
tabelas para esclarecer as relações, se necessário.

Agora que as informações estão divididas em tabelas, há necessidade de uma forma de reunir as informações
novamente, com um sentido. Por exemplo, o formulário a seguir engloba informações de várias tabelas.

1. As informações desse formulário são originárias da tabela Clientes


2. da tabela Funcionários...
3. da tabela Pedidos...
4. da tabela Produtos...
5. e da tabela Detalhes do Pedido.

59
Os SGBD são um sistemas de gerenciamento de banco de dados relacionais. Em um banco de dados
relacional, as informações são divididas em tabelas distintas, baseadas em tópicos. São então utilizadas as
relações de tabelas para reunir informações, à medida que se tornem necessárias.

- Criando uma relação um-para-muitos

Examine este exemplo: as tabelas Fornecedores e Produtos do banco de dados de pedidos de produto. Um
fornecedor pode fornecer qualquer número de produtos.
Consequentemente, para qualquer fornecedor representado na tabela Fornecedores pode haver vários
produtos representados na tabela Produtos. A relação entre a tabela Fornecedores e a tabela Produtos é,
portanto, uma relação um-para-muitos.

Conceito um para muitos

Para representar uma relação um-para-muitos em um design de banco de dados, tome a chave primária do
lado "um" da relação e adicione-a como coluna ou colunas adicionais à tabela do lado "muitos" da relação.
Nesse caso, por exemplo, a coluna Código do Fornecedor da tabela Fornecedores é adicionada à tabela
Produtos. O SGBD pode, em seguida, usar o número do código do fornecedor da tabela Produtos para localizar
o fornecedor correto de todos os produtos.

A coluna Código do Fornecedor da tabela Produtos é denominada chave estrangeira. A chave estrangeira é
uma chave primária de outra tabela. A coluna Código do Fornecedor da tabela Produtos é uma chave
estrangeira porque é também a chave primária da tabela Fornecedores.

As bases para a associação de tabelas relacionadas são fornecidas pelo estabelecimento da união de chaves
primárias com chaves estrangeiras. Quando não se está certo sobre quais tabelas devem compartilhar uma
coluna comum, identificar uma relação um-para-muitos assegura que as duas tabelas envolvidas exigirão
verdadeiramente uma coluna compartilhada.

- Criando uma relação muitos-para-muitos

Examine a relação entre a tabela Produtos e a Tabela Pedido.


Um único pedido pode incluir mais de um produto. Por outro lado, um único produto pode constar em vários
pedidos.

60
Assim, para todos os registros da tabela Pedidos pode haver vários registros na tabela Produtos. E para cada
registro na tabela Produtos pode haver registros na tabela Pedidos. Esse tipo de relação é denominado relação
muitos-para-muitos porque com relação a todos os produtos pode haver vários pedidos, e para todos os
pedidos pode haver vários produtos.
Observe que para detectar relações muitos-para-muitos entre as tabelas é importante considerar ambos os
lados da relação.

Os tópicos das duas tabelas — pedidos e produtos — têm uma relação muitos-para-muitos. Isso representa
um problema. Para entender o problema, imagine o que aconteceria se você tentasse criar a relação entre
duas tabelas adicionando o campo Código do Produto à tabela Pedidos. Para ter mais de um produto por
pedido, é necessário mais de um registro na tabela Pedidos por pedido. Você repetiria as informações do
pedido em cada uma das linhas relativas a um único pedido — o que resultaria em um design ineficaz que
poderia resultar em dados imprecisos. O mesmo problema é enfrentado quando se coloca o campo Código do
Pedido na tabela Produtos — haveria mais de um registro na tabela Produtos para cada produto. Como resolver
esse problema?

A solução é criar uma terceira tabela, em geral denominada tabela de junção, que divide as diversas relações
muitos-para-muitos em duas relações um-para-muitos. Insira a chave primária de cada uma das duas tabelas
em uma terceira tabela.
Consequentemente, a terceira tabela registra todas as ocorrências ou instâncias da relação.

Cada registro da tabela de Detalhes do Pedido representa um item de linha do pedido. A chave primária da
tabela Detalhes do Pedido consiste em dois campos — as chaves estrangeiras das tabelas Pedidos e Produtos.
Usar somente o campo Código do Pedido não funciona como chave primária dessa tabela, porque um único
pedido pode conter vários itens de linha. O Código do Pedido repete-se em cada item de linha em um pedido,
de modo que o campo não possa conter valores únicos. Usar apenas o campo Código do Produto não funciona
também, porque um mesmo produto pode surgir em diversos pedidos diferentes. Em conjunto, porém, os dois
campos podem sempre produzir um valor único para cada registro.

No banco de dados de vendas de produto a tabela Pedidos e a tabela Produtos não estão relacionadas entre
si de forma direta. Em vez disso, são relacionadas indiretamente através da tabela Detalhes do Pedido. A
relação muitos-para-muitos entre pedidos e produtos é representada no banco de dados por meio de duas
relações um-para-muito:

A tabela Pedidos e a tabela Detalhes tem uma relação um-para-muitos. Todos os pedidos podem ter mais de
um item de linha, porém todo item de linha é conectado a apenas um pedido.

A tabela Produtos e a tabela Pedidos tem uma relação um-para-muitos. Cada produto pode ter vários itens de
linha associados a ele, mas cada item de linha se refere a apenas um produto.

61
Da tabela de Detalhes do Pedido, é possível determinar todos os produtos em um pedido particular. É possível
também determinar que todos os pedidos de um produto particular.

Após incorporar a tabela de Detalhes do Pedido, a lista de tabelas e campos pode ter a seguinte aparência:

Criar relação um-para-um

Um outro tipo de relação é a relação um-para-um. Por exemplo, suponhamos que haja necessidade de registrar
algumas informações especiais e complementares de um produto, que serão raramente usadas ou que se só
aplicam a uns poucos produtos. Como essas informações não são exigidas com frequência, e como armazenar
informações na tabela Produtos resultaria em espaço vazio para todos os produtos aos quais elas não se
aplicam, coloque essas informações em uma tabela distinta. Assim como a tabela Produtos, utilize o Código
do Produto como chave primária. A relação entre essa tabela complementar e a tabela Produto é uma relação
um-para-um. Para cada registro da tabela Produto, existe apenas um registro correspondente na tabela
complementar. Quando essa relação é identificada, ambas as tabelas devem compartilhar um campo comum.
Quando a necessidade de uma relação um-para-um é detectada no banco de dados, considere colocar as
informações das duas tabelas juntas em uma só tabela. Se houver um motivo para não o fazer, talvez porque
isso resulte em uma série de espaços vazios, a lista a seguir mostra como representar a relação no design:
Se as duas tabelas tiverem o mesmo tópico, você poderá provavelmente configurar a relação por meio da
mesma chave primária em ambas as tabelas.

Se as duas tabelas tiverem tópicos diferentes com chaves primárias diversas, escolha uma das tabelas
(qualquer uma) e insira a chave primária na outra tabela como chave estrangeira.

A determinação das relações entre tabelas ajuda a assegurar que se tenham as tabelas e colunas corretas.
Quando existe uma relação um-para-um ou um-para-muitos, as tabelas envolvidas exigem o compartilhamento
de uma coluna ou colunas comuns. Quando existe uma relação muitos-a-muitos, uma terceira tabela é
necessária para representar a relação.

Refinar o design: Analisar o design com relação aos erros.


Criar as tabelas e adicionar alguns novos registros de dados de exemplo. Observe se os resultados esperados
das tabelas são obtidos. Faça ajustes no design, conforme necessário.

Após ter as tabelas, campos e relações necessários, crie e preencha as tabelas com dados de exemplo e tente
trabalhar com as informações: criação de consultas, adição de novos registros, entre outros. Fazer isso ajuda
a levantar os problemas potenciais — por exemplo, pode ser necessário adicionar uma coluna que se esqueceu

62
de inserir durante a fase de design, ou pode haver uma tabela que deva ser dividida em duas tabelas para
remover duplicação.

Confirme se é possível usar o banco de dados para obter as respostas desejadas. Crie rascunhos dos seus
formulários e relatórios, e veja se eles apresentam os dados esperados.
Procure por duplicações de dados desnecessárias e, quando encontrar alguma, altere o design para eliminá-
la.

À medida que você faz experiências com o banco de dados inicial, provavelmente descobrirá espaço para
melhoramentos. Seguem algumas coisas a serem verificadas:
- Você esqueceu alguma coluna? Se esqueceu, as informações pertenciam a tabelas existentes? Se se trata
de informações sobre alguma outra coisa, será necessário criar uma outra tabela. Crie uma coluna para cada
item de informação que necessita de controle. Se as informações não podem ser calculadas a partir de outras
colunas, é provável que exijam uma outra coluna.
- Há alguma coluna desnecessária porque pode ser calculada a partir de campos existentes? Se um item de
informação puder ser calculado de outras colunas existentes — um preço descontado calculado do preço de
varejo, por exemplo — em geral é melhor fazer exatamente isso e evitar criar uma nova coluna.
- Informações duplicadas são repetidamente inseridas em uma das tabelas? Em caso afirmativo, talvez seja
necessário dividir a tabela em duas tabelas que tenham a relação um-para-muitos.
- Existem tabelas com vários campos, um número limitado de registros e vários campos vazios em registros
individuais?

Se for o caso, pense em criar novamente a tabela de modo que passe a ter menos campos e mais registros.
- Todos os itens de informações foram quebrados em partes úteis menores? Se for necessário criar relatório,
classificar, pesquisar ou calcular um item de informação, coloque esse item em sua própria coluna.
- Cada coluna contém um fato sobre o tópico da tabela?
Quando uma coluna não contém informações sobre o tópico da tabela é porque pertence a uma tabela
diferente.
- Todas as relações entre tabelas são representadas tanto por campos comuns como por uma terceira tabela?
As relações um-para-um ou um-para-muitos requerem colunas comuns.
As relações muitos-para-muitos requerem uma terceira tabela.

Refinando a tabela Produtos

Suponhamos que cada produto no banco de dados de vendas de produto incida sobre uma categoria geral,
como bebidas, condimentos ou frutos do mar. A tabela Produtos poderia incluir um campo que apresente a
categoria de cada produto.

Suponhamos que após examinar e refinar o design do banco de dados você decida armazenar uma descrição
de categoria juntamente com o nome da categoria. Quando se adiciona um campo Descrição de Categoria à
tabela Produtos, é preciso repetir todas as descrições de categoria de cada produto que incida nessa categoria

— o que não é uma boa solução.


Uma solução mais adequada é transformar Categorias em um tópico novo para controle do banco de dados,
com sua própria tabela e sua própria chave primária. Adicione então a chave primária da tabela Categorias à
tabela Produtos como chave estrangeira.

As tabelas Categorias e Produtos têm uma relação um-para-muitos: uma categoria pode incluir mais de um
produto, porém um produto só pode pertencer a uma categoria.
No momento de examinar as estruturas da tabela, preste atenção a grupos repetidos. Por exemplo, considere
uma tabela contendo as seguintes colunas:
- Código do Produto
- Nome
- Código de Produto1
- Nome1
- Código de Produto2
- Nome2
- Código de Produto3
- Nome3

63
Aqui, cada produto é um grupo separado de colunas que diferem entre si apenas pela adição de um algarismo
ao final do nome da coluna. Quando colunas numeradas dessa forma aparecerem, reexamine o design.
Esse tipo de design tem várias falhas. Com relação aos iniciantes, força a colocação de um limite superior no
número de produtos. Tão logo você exceda esse limite, será preciso adicionar um novo grupo de colunas à
estrutura da tabela, o que é uma tarefa administrativa essencial.

Um outro problema é que os fornecedores com número de produtos inferior ao máximo irão desperdiçar
espaço, uma vez que as colunas adicionais estarão vazias. A maior falha com relação a esse design é que
isso torna várias tarefas difíceis de desempenhar, como a classificação ou indexação da tabela por código ou
nome de produto. Sempre que forem exibidos grupos repetidos, examine detalhadamente o design, visando a
dividir a tabela em dois.
No exemplo acima é melhor usar duas tabelas, uma para fornecedores e uma para produtos, vinculadas por
código de fornecedor.

Aplicar as regras de normalização: Aplicar as regras de normalização de dados para examinar se as


tabelas estão corretamente estruturadas. Faça ajustes nas tabelas, conforme necessário.

É possível aplicar as regras de normalização de dados (também chamadas simplesmente regras de


normalização) como próxima etapa do design. Use essas regras para ver se as tabelas estão corretamente
estruturadas. O processo de aplicação de regras ao design do banco de dados é denominado normalização
de banco de dados, ou apenas normalização.

A normalização é muito mais útil após a representação de todos os itens de informações e da obtenção de um
design preliminar. A ideia é ajudar a assegurar que você distribua os itens de informações pelas tabelas
corretas. O que a normalização não pode fazer é assegurar que se tenham todos os itens de dados corretos
de início.

Aplique as regras em sequência, assegurando a cada etapa que o seu design chegue ao que é conhecido
como "formas normalizadas". Cinco formas normalizadas são amplamente aceitas — da primeira forma
normalizada à quinta forma normalizada. Este artigo se expande nas três primeiras, porque elas são tudo o
que se exige para a maior parte dos bancos de dados.

Primeira forma normalizada

A primeira forma normalizada declara que a cada interseção de linha e coluna da tabela existe um valor único
e nunca uma lista de valores. Por exemplo, não é possível ter um campo denominado Preço, em que se insira
mais de um Preço.
Quando se entende cada interseção de linhas e colunas como uma célula, cada célula poderá manter apenas
um valor.

Segunda forma normalizada

A segunda forma normalizada requer que cada coluna não-chave seja totalmente dependente de toda a chave
primária, não apenas de parte da chave. Essa regra aplica-se quando se tem uma chave primária que consiste
em mais de uma coluna.
Por exemplo, supondo que haja uma tabela contendo as colunas a seguir, onde Código do Pedido e Código
do Produto formam a chave primária:
* Código do Pedido (chave primária)
* Código de Produto (chave primária)
* Nome de Produto

Esse design desrespeita a segunda forma normalizada, uma vez que o Nome do Produto é dependente do
Código do Produto, mas não do Código do Pedido, portanto, não depende de toda a chave primária. É preciso
remover o Nome do Produto da tabela. Ele pertence a uma tabela diferente (Produtos).

Terceira forma normalizada

A terceira forma normalizada exige que não apenas todas as colunas não-chave sejam dependentes de toda
a chave primária, mas que as colunas não-chave sejam independentes entre si.

64
Uma outra forma de dizer isso é que cada coluna não-chave seja dependente da chave primária e somente da
chave primária. Por exemplo, na hipótese de haver uma tabela contendo as seguintes colunas:
* CódigoDeProduto (chave primária)
* Nome
* SRP
* Desconto

Suponha que Desconto dependa do SRP (suggested retail price, preço a varejo sugerido). Essa tabela
desrespeita a terceira forma normalizada, porque uma coluna não chave, Desconto, depende de uma outra
comuna não-chave, SRP. A independência da coluna significa que é possível alterar todas as colunas não-
chave sem afetar nenhuma outra coluna. Se você alterar um valor do campo SRP, Desconto seria
pertinentemente alterada, o que infringiria a regra. Nesse caso, Desconto seria movida para uma outra tabela
chaveada em SRP.

Abstração de dados

Um SGBD é composto de uma coleção de arquivos inter-relacionados e de um conjunto de programas que


permitem aos usuários fazer o acesso a estes arquivos e modificar os mesmos. O grande objetivo de um
sistema de banco de dados é prover os usuários com uma visão abstrata dos dados. Isto é, o sistema omite
certos detalhes de como os dados são armazenados e mantidos. Entretanto, para que o sistema possa ser
utilizado, os dados devem ser buscados de forma eficiente.

Este conceito tem direcionado o projeto de estrutura de dados complexas para a representação de dados em
um banco de dados. Uma vez que muitos dos usuários de banco de dados não são treinados para computação,
a complexidade está escondida deles através de diversos níveis de abstração que simplificam a interação do
usuário com o sistema.

Nível físico: o nível mais baixo de abstração descreve como os dados estão realmente armazenados. No nível
físico, complexas estruturas de dados de baixo nível são descritas em detalhes;

Nível conceitual: o próximo nível de abstração descreve quais dados estão armazenados de fato no banco de
dados e as relações que existem entre eles. Aqui o banco de dados inteiro é descrito em termos de um pequeno
número de estruturas relativamente simples. Embora as implementações de estruturas simples no nível
conceitual possa envolver complexas estruturas de nível físico, o usuário do nível conceitual não precisa
preocupar-se com isso. O nível conceitual de abstração é usado por administradores de banco de dados, que
podem decidir quais informações devem ser mantidas no BD;

Nível de visões: o mais alto nível de abstração descreve apenas parte do banco de dados. Apesar do uso de
estruturas mais simples do que no nível conceitual, alguma complexidade perdura devido ao grande tamanho
do banco de dados. Muitos usuários do sistema de banco de dados não estarão interessados em todas as
informações. Em vez disso precisam de apenas uma parte do banco de dados. O nível de abstração das visões
de dados é definido para simplificar esta interação com o sistema, que pode fornecer muitas visões para o
mesmo banco de dados.

Segue ilustração da arquitetura e referente abstração de dados envolvida.

65
Uma analogia com o conceito de tipos de dados em linguagens de programação pode esclarecer a distinção
entre os níveis de abstração. A maioria das linguagens de programação de alto nível tem suporte para a noção
de um tipo de registro. Por exemplo, numa linguagem como Pascal podemos declarar um registro assim:

Isto define um novo registro chamado cliente com três campos. Cada campo tem um nome e um tipo associado
a ele.

Um banco privado pode ter diversos tipos de registros incluindo:


- contas, com campos número e saldo;
- funcionário, com campos nome e salário.

No nível físico, um registro cliente, conta ou funcionário pode ser descrito como um bloco de posições de
armazenamento consecutivas (por exemplo, palavras ou bytes). No nível conceitual, cada registro destes é
descrito por uma definição de tipo, ilustrado anteriormente e o inter-relacionamento entre esses tipos de
registros é definido.

Finalmente, no nível de visões, diversas visões do banco de dados são definidas, por exemplo: os contadores
de um banco veem apenas a parte do banco de dados que possui informações sobre contas dos clientes. Eles
não podem ter acesso a informações que se referem a salários dos funcionários.

Independência de dados

Vimos três níveis de abstração pelos quais o banco de dados pode ser visto. A habilidade de modificar a
definição de um esquema em um nível sem afetar a definição de esquema num nível mais alto é chamada de
independência de dados.

66
Existem dois níveis de independência dos dados:
- Independência física de dados: é a habilidade de modificar o esquema físico sem a necessidade de
reescrever os programas aplicativos. As modificações no nível físico são ocasionalmente necessárias para
melhorar o desempenho;
- Independência lógica de dados: é a habilidade de modificar o esquema conceitual sem a necessidade de
reescrever os programas aplicativos. As modificações no nível conceitual são necessárias quando a estrutura
lógica do banco de dados é alterada (por exemplo, a adição de contas de bolsas de mercado num sistema
bancário).

A independência lógica dos dados é mais difícil de ser alcançada do que a independência física, porém os
programas são bastante dependentes da estrutura lógica dos dados que eles acessam.

O conceito de independência dos dados é similar em muitos aspectos ao conceito de tipos abstratos de dados
em modernas linguagens de programação. Ambos escondem detalhes de implementação do usuário. Isto
permite ao usuário concentrar-se na estrutura geral em vez de detalhes de baixo nível de implementação.

Gerenciamento de Dados

Os dados são um recurso organizacional decisivo que precisa ser administrado como outros importantes ativos
das empresas.

A maioria das organizações não conseguiria sobreviver ou ter sucesso sem dados de qualidade sobre suas
operações internas e seu ambiente externo.
Os gerentes precisam praticar a administração de recursos de dados – uma atividade administrativa que aplica
tecnologia de sistemas de informação como gerenciamento de bancos de dados e outras ferramentas
gerenciais para uma organização atender as necessidades de informação dos usuários.

Base de Dados
- Conjunto de dados armazenados logicamente
- Conteúdo representa o estado atual de uma determinada aplicação
- Modelo de uma determinada parte da realidade Propriedades de uma Base de Dados
- Coleção de dados logicamente relacionados,
- Projetada e construída para um propósito específico,
- Concebida para atender a um grupo de usuários,
- Representação de algum aspecto do mundo real,
- Qualquer mudança na realidade provocará mudanças nesta base,
- Possui alguma fonte de dados.

Administração de Recursos de Dados


Os gerentes que são usuários finais devem encarar os dados como um recurso importante que eles precisam
aprender a manejar adequadamente para garantir o sucesso e sobrevivência de suas organizações. O
gerenciamento de bancos de dados é uma aplicação importante da tecnologia de sistemas de informação à
administração de recursos de dados de uma empresa.

A administração de recursos de dados inclui:

Administração de Bancos de Dados

É uma importante função de gerenciamento de recursos de dados responsável pelo uso adequado da
tecnologia de gerenciamento de bancos de dados.

A administração de bancos de dados possui mais responsabilidades operacionais e técnicas do que outras
funções de gerenciamento de recursos de dados.
Isto inclui responsabilidade pelo:
- Desenvolvimento e manutenção do dicionário de dados da organização
- Projeto e monitoração do desempenho dos bancos de dados
- Aplicação de padrões para uso e segurança dos bancos de dados.

67
Planejamento de Dados

O planejamento de dados é uma função de planejamento e análise empresarial que se concentra no


gerenciamento de recursos de dados.
Ela inclui a responsabilidade pelo:
- Desenvolvimento de uma arquitetura global de dados para os recursos de dados da empresa vinculada à
missão e planos estratégicos da empresa e aos objetivos e processos de suas unidades de negócios.
- O planejamento de dados é um componente importante do processo de planejamento estratégico de uma
organização.
Ele é feito por organizações que assumiram um compromisso formal com o planejamento de longo alcance
para o uso e administração estratégicos de seus recursos de dados.

Administração de Dados
É outra função da administração de recursos de dados. Ela envolve:
- O estabelecimento e execução de políticas e procedimentos para gerenciamento de dados como um recurso
estratégico das empresas.
- A administração da coleta, armazenamento e disseminação de todos os tipos de dados de tal forma que os
dados se tornem um recurso padronizado disponível para todos os usuários finais na organização.
- O planejamento e controle de dados no apoio às funções e objetivos estratégicos de uma organização.
- O estabelecimento de uma atividade de planejamento de dados para a organização.
- O desenvolvimento de políticas e definição de padrões para arranjos de concepção, processamento e
segurança e seleção do software para gerenciamento de bancos de dados e dicionário de dados.

As relações entre os muitos registros individuais nos bancos de dados são baseadas em uma das diversas
estruturas ou modelos lógicos de dados. Os SGBD são projetados para fornecer aos usuários finais acesso
rápido e fácil a informações armazenadas em bancos de dados.

As cinco estruturas de bancos de dados fundamentais são:

Estrutura Hierárquica

Os primeiros pacotes SGBD para computador central utilizavam a estrutura hierárquica, na qual:
- As relações entre os registros formam uma hierarquia ou estrutura de tipo árvore.
- Os registros são dependentes e dispostos em estruturas de níveis múltiplos, que consistem em um registro
raiz e qualquer número de níveis subordinados.
- As relações entre os registros são de um-para-muitos, já que cada elemento de dados se relaciona apenas
com um elemento acima dele.
- O elemento de dados ou registro no nível mais alto da hierarquia é chamado de elemento raiz. Todo elemento
de dados pode ser acessado passando-se progressivamente para baixo a partir da raiz e ao longo dos ramos
da árvore até que o registro desejado seja localizado.
VANTAGENS
- Facilidade com que os dados podem ser armazenados e recuperados em tipos estruturados e rotineiros de
transações.
- Facilidade com que os dados podem ser extraídos para fins de apresentação de relatórios.
- Os tipos estruturados e rotineiros de processamento de transações são rápidos e eficientes.
DESVANTAGENS
- Relações hierárquicas um-para-muitos devem ser estipuladas de antemão e não são flexíveis.
- Não pode manipular facilmente requisições de informação específica.
- A modificação de uma estrutura hierárquica de bancos de dados é complexa.
- Muita redundância.
- Exige conhecimento de uma linguagem de programação.

Estrutura em Rede

- Pode representar relações lógicas mais complexas e ainda é utilizada por muitos pacotes SGBD de
computador central.

68
- Permite relações de muitas-para-muitas entre os registros. Em outras palavras, o modelo em rede pode
acessar um elemento de dados seguindo um dentre vários caminhos, porque qualquer elemento ou registro de
dados pode ser relacionado com qualquer número de outros elementos de dados.
VANTAGENS
- Mais flexível que o modelo hierárquico.
- Capacidade de fornecer relações lógicas sofisticadas entre os registros.
DESVANTAGENS
- As relações muitos-a-muitos em rede devem ser estipuladas de antemão.
- O usuário está limitado a recuperar dados que podem ser acessados utilizando os links estabelecidos entre
os registros.
Não pode manipular facilmente requisições de informação específica.
- Exige conhecimento de uma linguagem de programação.

Estrutura Relacional

- Tornou-se a mais popular das três estruturas de bancos de dados.


- É utilizada pela maioria dos pacotes SGBD para microcomputadores.
- Os elementos dos dados dentro do banco de dados são armazenados na forma de tabelas simples. As tabelas
são relacionadas se incluírem campos comuns.
- Os pacotes SGBD baseados no modelo relacional podem vincular elementos de dados de várias tabelas para
fornecer informações para os usuários.
VANTAGENS
- Flexível uma vez que pode manipular requisições de informação específica.
- Os programadores trabalham facilmente com ela. Os usuários finais podem utilizar este modelo com pouco
esforço ou treinamento.
- Mais fácil para manutenção do que os modelos hierárquico e em rede.
DESVANTAGENS
- Não pode processar grandes quantidades de transações empresariais tão depressa e com tanta eficiência
como os modelos hierárquico e em rede.

Estrutura Multidimensional

- É uma variação do modelo relacional que utiliza estruturas multidimensionais para armazenar dados e
relações entre os dados.
- Um benefício maior dos bancos de dados multidimensionais é que eles são uma maneira compacta e
inteligível de visualizar e manipular elementos de dados que possuem muitas inter-relações.
- Os bancos de dados multidimensionais se tornaram a estrutura mais popular para os bancos de dados
analíticos que suportam aplicações de processamento analítico on-line (OLAP).
VANTAGENS
- Forma compacta e de fácil compreensão para visualização e manipulação de elementos dedados que
possuem muitas inter-relações.
- Suporta aplicações OLAP na qual respostas rápidas para consultas empresarias complexas são requisitas.
DESVANTAGENS
- Não desenvolvida atualmente para amplo uso de aplicações empresariais.

Estrutura Baseada em Objetos

É considerada como uma das tecnologias chaves de uma nova geração de aplicativos multimídia baseados na
rede.

Em uma estrutura baseada em objetos, um objeto consiste em valores de dados que descrevem os atributos
de uma entidade, mais as operações que podem ser executadas sobre os dados.

Esta capacidade de sintetização permite manipular melhor tipos mais complexos de dados (gráficos, voz, texto)
do que outras estruturas de bancos de dados.
Suporta herança, ou seja, novos objetos podem ser automaticamente criados mediante a reprodução de
algumas ou todas as características de um ou mais objetos pais.

As capacidades e herança dos objetos tornaram populares os sistemas de gerenciamento de bancos de dados
orientados a objetos (OOSGBD) nas aplicações do projeto assistido por computador (CAD).

69
Os projetistas podem desenvolver desenhos de produtos, armazená-los como objetos em um banco de dados
baseado em objetos e reproduzi-los e modificá-los para criar novos desenhos de produto.

As aplicações de multimídia baseadas em rede para a Internet e intranets e extranets se tornaram uma área
de aplicação importante para a tecnologia de objetos.
VANTAGENS
- Manipula tipos complexos de dados (gráficos, imagens, voz e texto) melhor do que outras estruturas.
- Relativamente fácil de utilizar.
- Tecnologia chave sendo utilizada em aplicações de multimídia baseadas na rede para a Internet e intranets
e extranets empresariais.
- Suporta herança – novos objetos podem ser automaticamente criados mediante a reprodução de algumas ou
de todas as características de um ou mais objetos pais.
DESVANTAGENS
- Não desenvolvida atualmente para amplo uso empresarial.

Prototipação

A prototipação é um processo que tem como objetivo facilitar o entendimento dos requisitos de uma aplicação.
Além disso, ela permite apresentar conceitos e funcionalidades do software de modo simplificado.

Com a prototipação, é possível propor uma solução adequada para o problema do cliente, aumentando sua
percepção de valor. O usuário poderá avaliar como os recursos estarão distribuídos, a organização do layout
e outros itens que impactam na experiência de uso.

A partir do protótipo, ajustes poderão ser feitos no projeto para adequar às expectativas e alinhar aos objetivos.
Dessa forma, a qualidade final da ferramenta é otimizada.

Os protótipos também são grandes aliados das metodologias ágeis de desenvolvimento, uma vez que
garantem maior alinhamento entre a equipe e o cliente. Eles podem ser desenvolvidos em diferentes níveis de
fidelidade, mas o ideal é que tenha o máximo de correspondência com o produto final. Afinal de contas, quanto
mais fiel o protótipo for, mais fácil será para o time realizar ajustes.

Há um porém: um protótipo de alta fidelidade leva mais tempo para ser criado ou modificado. Por isso, o gestor
deve estar atento e, com bases nos dados iniciais, realizar uma escolha inteligente. Em outras palavras, a
escolha do protótipo ideal varia de acordo com o nível de entendimento do negócio, a complexidade dos
requisitos, prazo e orçamento para elaboração.

Tipos de Bancos de Dados


Avanços contínuos na informática e suas aplicações empresariais têm resultado na evolução de diversos tipos
principais de bancos de dados.
Algumas categorias conceituais importantes de bancos de dados que podem ser encontradas nas
organizações usuárias de computadores.

Bancos de Dados Operacionais

Esses bancos de dados armazenam dados detalhados necessários para apoiar as operações da organização
como um todo.
Eles também são chamados de bancos de dados de produção.
São exemplos os bancos de dados de clientes, bancos de dados de pessoal, bancos de dados de estoque e
outros bancos de dados contendo dados gerados pelas operações empresariais.

Bancos de Dados em Hipermídia na Rede

O rápido crescimento dos sites na Internet e intranets e extranets tem aumentado drasticamente o uso de
bancos de dados em documentos em hipertexto e hipermídia.
Um site de rede armazena essas informações em um banco de dados em hipermídia que consiste em uma
homepage e outras páginas de multimídia ou mídias mistas (texto, som, etc.) com hiperlinks.

70
Data Warehouse e Data Mining

Data Warehouse
Um data warehouse é um tipo de sistema de gerenciamento de dados projetado para ativar e fornecer
suporte às atividades de business intelligence (BI), especialmente a análise avançada. Os data
warehouses destinam-se exclusivamente a realizar consultas e análises avançadas e geralmente contêm
grandes quantidades de dados históricos. Os dados em um data warehouse geralmente são derivados
de uma ampla variedade de fontes, como arquivos de log de aplicativos e aplicativos de transações.

Um data warehouse armazena dados do ano em curso e anos anteriores que foram extraídos dos vários
bancos de dados operacionais e gerenciais de uma organização.
É uma fonte central de dados que foram classificados, editados, padronizados e integrados de tal forma que
podem ser utilizados por gerentes e outros profissionais usuários finais ao longo de toda uma organização.

Seus recursos analíticos permitem que as organizações obtenham informações de negócios úteis de
seus dados para melhorar a tomada de decisões. Com o tempo, cria -se um registro histórico que pode
ser inestimável para cientistas de dados e analistas de negócios. Devido a esses recursos, um data
warehouse pode ser considerado a “única fonte verdadeira” da organização.

Um data warehouse típico geralmente inclui os seguintes elementos:

- Um banco de dados relacional para armazenar e gerenciar dados


- Uma solução de extração, carregamento e transformação (ELT) para preparar os dados para análise
- Análise estatística, relatórios e recursos de mineração de dados
- Ferramentas de análise de clientes para visualizar e apresentar dados aos usuários de negócios
- Outras aplicações analíticas mais sofisticadas que geram informações úteis por meio de aplicação de
algoritmos de machine learning e inteligência artificial (IA)

Os data warehouses são ambientes relacionais usados para análise de dados, particularmente de dados
históricos. As organizações usam data warehouses para descobrir padrões e relacionamentos em seus
dados que se desenvolvem com o tempo.

Em contraste, os ambientes transacionais são usados para processa r transações de forma contínua e
são comumente usados para entrada de pedidos e transações financeiras e de varejo. Não se baseiam
em dados históricos; na verdade, em ambientes de OLTP, os dados históricos são geralmente arquivados
ou simplesmente excluídos para melhorar o desempenho.

Os data warehouses e os sistemas de OLTP diferem significativamente.

Data Warehouse Sistema de OLTP

Acomoda consultas ad hoc e análise Fornece suporte somente a operações


Carga de trabalho
avançada de dados predefinidas

Atualiza de forma automática Atualizações por usuários finais que emitem


Modificações de dados
regularmente declarações individuais

Utiliza esquemas parcialmente


Utiliza esquemas totalmente normalizados para
Projeto de esquema desnormalizados para otimizar o
garantir a consistência dos dados
desempenho

Abrange milhares a milhões de Acessa apenas um grupo de registros de cada


Digitalização de dados
linhas vez

71
Data Warehouse Sistema de OLTP

Armazena muitos meses ou anos de


Dados históricos Armazena dados por apenas semanas ou meses
dados

Data Warehouses, Data Marts e Armazenamento de Dados de Operação

Embora desempenhem funções semelhantes, os data warehouses são diferentes dos data marts e dos
armazenamentos de dados de operação (ODSs). Um data mart realiza as mesmas funções que um d ata
warehouse, mas dentro de um escopo muito mais limitado, geralmente um único departamento ou linha
de negócios. Isso torna os data marts mais fáceis de estabelecer do que os data warehouses. No entanto,
eles tendem a introduzir inconsistência porque pode ser difícil gerenciar de modo uniforme e controlar os
dados em vários data marts.

ODSs fornecem suporte somente a operações diárias; portanto, a visão dos dados históricos é muito
limitada. Embora funcionem muito bem como fontes de dados atuais e sejam frequentemente usados
como tal pelos data warehouses, não fornecem suporte a consultas historicamente detalhadas.

Benefícios de um Data Warehouse

Os data warehouses oferecem o benefício único e abrangente de permitir que as organizações analisem
grandes quantidades de dados variantes e extraiam um valor significativo, além de manter um registro
histórico.

Quatro características únicas (descritas pelo cientista da computação William Inmon, que é considerado
o pai do data warehouse) permitem que os data warehouses forneçam esse benefício abrangente. De
acordo com essa definição, os data warehouses são

Orientados para o assunto. Eles podem analisar dados sobre um determinado assunto ou área
funcional (como vendas).
Integrados. Os data warehouses criam consistência entre diferentes tipos de dados de fontes distintas.
Não volátil. Quando os dados estão em um data warehouse, eles são estáveis e não mudam.
Variáveis de acordo com o tempo. A análise de data warehouse analisa as mudanças ao longo do
tempo.

Um data warehouse bem projetado realizará consultas muito rapidamente, fornecerá alta taxa de
transferência de dados e dará flexibilidade suficiente para os usuários finais “dividirem e organizarem”
ou reduzirem o volume de dados para um exame mais detalhado a f im de atender a uma variedade de
demandas, seja em um nível alto ou em um nível muito bom e detalhado. O data warehouse serve como
a base funcional para ambientes de BI de middleware que fornecem aos usuários finais relatórios, painéis
e outras interfaces.

Arquitetura de Data Warehouse


A arquitetura de um data warehouse é determinada pelas necessidades específicas da organização.
Arquiteturas comuns incluem

Simples. Todos os data warehouses compartilham um design básico no qual metadados, dados de
resumo e dados brutos são armazenados no repositório central do warehouse. O repositório é alimentado
por fontes de dados em uma extremidade e acessado por usuários finais para análise, relatório e
mineração na outra extremidade.
Simples com uma área de preparo. Os dados operacionais devem ser limpos e processados antes de
serem colocados no warehouse. Embora isso possa ser feito de forma programática, muitos data
warehouses adicionam uma área de preparo de dados antes que eles entrem no warehouse, para
simplificar a preparação dos dados.

72
Hub e spoke. A adição de data marts entre o repositório central e os usuários finais permite que uma
organização personalize seu data warehouse para atender a várias linhas de negócios. Quando os dados
estiverem prontos para uso, eles serão movidos para o data mart apropriado.
Áreas restritas. As áreas restritas são áreas privadas, seguras e protegidas que permitem às empresas
explorar rápida e informalmente novos conjuntos de dados ou formas de analisar dados sem ter que
obedecer ou cumprir as regras formais e o protocolo do data warehouse.

Data Mining
Data mining é uma expressão inglesa ligada à informática cuja tradução é mineração de dados.

A expressão data mining surgiu pela primeira vez em 1990 em comunidades de bases de dado. A mineração
de dados é a etapa de análise do processo conhecido como KDD (Knowledge Discovery in Databases), sendo
a sua tradução literal "Descoberta de Conhecimento em Bases de Dado". Consiste em uma funcionalidade
que agrega e organiza dados, encontrando neles padrões associações, mudanças e anomalias relevantes.

No data mining, os dados de um depósito de dados são processados para identificar fatores e tendências
chaves nos padrões históricos das atividades das empresas que podem ser utilizados para ajudar os gerentes
a tomarem decisões sobre mudanças estratégicas nas operações das empresas para obter vantagens
competitivas no mercado.

Através do Data Mining podemos fazer uma mineração de dados e personalizar cada cliente, levantando quais
são suas tendências de compras e antecipar a venda, fazendo uma oferta para ele antes que ele procure a
empresa.

O data mining pode ser divido em algumas etapas básicas que são: exploração, construção de modelo,
definição de padrão e validação e verificação.

A mineração de dados é uma prática relativamente recente no mundo da computação, e utiliza técnicas de
recuperação de informação, inteligência artificial, reconhecimento de padrões e de estatística para procurar
correlações entre diferentes dados que permitam adquirir um conhecimento benéfico para uma empresa ou
indivíduo. Para uma empresa, o data mining pode ser uma importante ferramenta que potência a inovação e
lucratividade.

A utilização da mineração de dados é bastante usual em grandes bases de dados, e o resultado final da sua
utilização pode ser exibido através de regras, hipóteses, árvores de decisão, dendrogramas, etc.

Uma mineração de dados bem executada deve cumprir tarefas como: detecção de anomalias, aprendizagem
da regra de associação (modelo de dependência), clustering (agrupamento), classificação, regressão e
sumarização. O processo de data mining costuma ocorrer utilizando dados contidos dentro do data warehouse.

Existem várias empresas e softwares que se dedicam à mineração de dados, pois a identificação de padrões
em bancos de dados é cada vez mais importante. No entanto, a identificação de padrões relevantes não é
exclusivo do mundo informático. O cérebro humano, utiliza um processo semelhante para identificar padrões
e adquirir conhecimento.

Nos últimos anos, a mineração de dados tem sido amplamente utilizada nas áreas da ciência e engenharia,
tais como bioinformática, genética, medicina, educação e engenharia elétrica.

O conceito de data mining é muitas vezes associado à extração de informação relativa ao comportamento de
pessoas. Por esse motivo, em algumas situações, a mineração de dados levanta aspectos legais e questões
relativas à privacidade e ética. Apesar disso, muitas pessoas afirmam que a mineração de dados é eticamente
neutra, pois não apresenta implicações éticas.

Exemplos de Data Mining

A mineração de dados é muitas vezes usada por empresas e organizações para a obtenção de conhecimento
a respeito de utilizadores / funcionários / clientes. Por exemplo, no setor público é possível fazer o cruzamento
de dados entre o estado civil de um funcionário e o salário que ele ganha, para verificar se isso tem influência
na sua vida conjugal.

73
Empresas como cadeias de supermercados podem recorrer a esse cruzamento de dados para determinarem
produtos que são comprados em conjunto. Se um cliente que compra o produto X também compra o produto
Y, talvez seja uma boa ideia posicionar os dois produtos perto, para facilitar a compra por parte do cliente.

Modelagem funcional e de dados.


O modelo funcional:
- descreve os cálculos executados em um sistema
- especifica o que acontece

Modelo funcional

O modelo funcional é composto por múltiplos DFD que especificam o significado das operações e restrições
Um DFD mostra os relacionamentos funcionais dos valores calculados por um sistema, incluindo-se aí valores
de entrada e de saída e de depósitos internos de dados D.F.D.
Ele mostra
- o fluxo dos valores de dados desde suas origens nos objetos, através dos processos que os transformam,
até seus destinos em outros objetos
Ele NÃO mostra
- informações de controle, como o momento em que os processos são executados, ou decisões entre vias
alternativas de dados; essas informações pertencem ao modelo dinâmico
- a organização dos valores no interior dos objetos; essa informação pertence ao modelo de objetos
Um D.F.D. contém:
- processos que transformam dados,
- fluxos de dados que movimentam dados,
- objetos atores que produzem e consomem dados e
- objetos depósitos de dados que armazenam dados passivamente

Fluxos de dados

Um fluxo de dados interliga a saída de um objeto ou processo à entrada de outro objeto ou processo.

74
Os fluxos de dados representam os valores intermediários de dados em uma computação.
Os valores não são modificados pelos fluxos

Atores

Um ator é um objeto que dirige o DFD produzindo ou consumindo valores.


Os atores são vinculados às entradas e saídas de um DFD.
Os atores, normalmente, se localizam nos limites do DFD tanto como origens ou como destinos de dados
Um ator é desenhado como um retângulo para mostrar que ele é um objeto.
As flechas entre o ator e o diagrama são entradas e saídas do diagrama.
Exemplo: o buffer de tela é um ator que consome operações de pixels.

Depósitos de dados

Um depósito de dados é um objeto passivo, em DFD, que armazena dados para uso futuro.
Um depósito de dados permite que o acesso aos valores seja efeito em uma ordem diferente daquela em que
foram gerados.
Depósitos de dados agregados como listas e tabelas, permitem acesso aos dados por ordem de inserção ou
por chaves de indexação.
Exemplo: como depósito de dados pode-se incluir o banco de dados de reserva de lugares em uma empresa
aérea, contas bancárias e uma lista de registros de temperatura do dia anterior.
Um depósito de dados é desenhado como um par de linhas paralelas contendo o nome do depósito
As setas de entrada indicam informações ou operações que modificam os dados armazenados, incluindo:
- o acréscimo de elementos;
- a modificação de valores;
- a eliminação de elementos.

As setas de saída indicam a recuperação de informações do depósito, incluindo:


- a recuperação de todo o valor ou
- de uma parte dele.

Modelagem de dados: modelo conceitual, modelo lógico e físico


A modelagem de dados é uma técnica usada para a especificação das regras de negócios e as estruturas de
dados de um banco de dados. Ela faz parte do ciclo de desenvolvimento de um sistema de informação e é de
vital importância para o bom resultado do projeto. Modelar dados consiste em desenhar o sistema de
informações, concentrando-se nas entidades lógicas e nas dependências lógicas entre essas entidades.
Modelagem de dados ou modelagem de banco de dados envolve uma série de aplicações teóricas e práticas,
visando construir um modelo de dados consistente, não redundante e perfeitamente aplicável em qualquer
SGBD moderno.

75
A modelagem de dados está dividida em:

Modelo conceitual

A modelagem conceitual baseia-se no mais alto nível e deve ser usada para envolver o cliente, pois o foco aqui
é discutir os aspectos do negócio do cliente e não da tecnologia.

Os exemplos de modelagem de dados vistos pelo modelo conceitual são mais fáceis de compreender, já que
não há limitações ou aplicação de tecnologia específica. O diagrama de dados que deve ser construído aqui é
o Diagrama de Entidade e Relacionamento, onde deverão ser identificados todas as entidades e os
relacionamentos entre elas. Este diagrama é a chave para a compreensão do modelo conceitual de dados.

Modelo lógico

O modelo lógico já leva em conta algumas limitações e implementa recursos como adequação de padrão e
nomenclatura, define as chaves primárias e estrangeiras, normalização, integridade referencial, entre outras.
Para o modelo lógico deve ser criado levando em conta os exemplos de modelagem de dados criados no
modelo conceitual.

76
Modelo físico

No modelo físico fazemos a modelagem física do modelo de banco de dados. Neste caso leva-se em conta as
limitações impostas pelo SGBD escolhido e deve ser criado sempre com base nos exemplos de modelagem
de dados produzidos no item anterior, modelo lógico.

Administração de Dados
É outra função da administração de recursos de dados. Ela envolve:
- O estabelecimento e execução de políticas e procedimentos para gerenciamento de dados como um recurso
estratégico das empresas.
- A administração da coleta, armazenamento e disseminação de todos os tipos de dados de tal forma que os
dados se tornem um recurso padronizado disponível para todos os usuários finais na organização.
- O planejamento e controle de dados no apoio às funções e objetivos estratégicos de uma organização.
- O estabelecimento de uma atividade de planejamento de dados para a organização.
- O desenvolvimento de políticas e definição de padrões para arranjos de concepção, processamento e
segurança e seleção do software para gerenciamento de bancos de dados e dicionário de dados.

As relações entre os muitos registros individuais nos bancos de dados são baseadas em uma das diversas
estruturas ou modelos lógicos de dados. Os SGBD são projetados para fornecer aos usuários finais acesso
rápido e fácil a informações armazenadas em bancos de dados.

As cinco estruturas de bancos de dados fundamentais são:

Estrutura Hierárquica

77
Os primeiros pacotes SGBD para computador central utilizavam a estrutura hierárquica, na qual:
- As relações entre os registros formam uma hierarquia ou estrutura de tipo árvore.
- Os registros são dependentes e dispostos em estruturas de níveis múltiplos, que consistem em um registro
raiz e qualquer número de níveis subordinados.
- As relações entre os registros são de um-para-muitos, já que cada elemento de dados se relaciona apenas
com um elemento acima dele.
- O elemento de dados ou registro no nível mais alto da hierarquia é chamado de elemento raiz. Todo elemento
de dados pode ser acessado passando-se progressivamente para baixo a partir da raiz e ao longo dos ramos
da árvore até que o registro desejado seja localizado.
Vantagens
- Facilidade com que os dados podem ser armazenados e recuperados em tipos estruturados e rotineiros de
transações.
- Facilidade com que os dados podem ser extraídos para fins de apresentação de relatórios.
- Os tipos estruturados e rotineiros de processamento de transações são rápidos e eficientes.
Desvantagens
- Relações hierárquicas um-para-muitos devem ser estipuladas de antemão e não são flexíveis.
- Não pode manipular facilmente requisições de informação específica.
- A modificação de uma estrutura hierárquica de bancos de dados é complexa.
- Muita redundância.
- Exige conhecimento de uma linguagem de programação.

Estrutura em Rede

- Pode representar relações lógicas mais complexas e ainda é utilizada por muitos pacotes SGBD de
computador central.
- Permite relações de muitas-para-muitas entre os registros. Em outras palavras, o modelo em rede pode
acessar um elemento de dados seguindo um dentre vários caminhos, porque qualquer elemento ou registro de
dados pode ser relacionado com qualquer número de outros elementos de dados.

Vantagens
- Mais flexível que o modelo hierárquico.
- Capacidade de fornecer relações lógicas sofisticadas entre os registros.

Desvantagens
- As relações muitos-a-muitos em rede devem ser estipuladas de antemão.
- O usuário está limitado a recuperar dados que podem ser acessados utilizando os links estabelecidos entre
os registros. Não pode manipular facilmente requisições de informação específica.
- Exige conhecimento de uma linguagem de programação.

Estrutura Relacional

- Tornou-se a mais popular das três estruturas de bancos de dados.


- É utilizada pela maioria dos pacotes SGBD para microcomputadores.
- Os elementos dos dados dentro do banco de dados são armazenados na forma de tabelas simples. As tabelas
são relacionadas se incluírem campos comuns.
- Os pacotes SGBD baseados no modelo relacional podem vincular elementos de dados de várias tabelas para
fornecer informações para os usuários.

Vantagens
- Flexível uma vez que pode manipular requisições de informação específica.
- Os programadores trabalham facilmente com ela. Os usuários finais podem utilizar este modelo com pouco
esforço ou treinamento.
- Mais fácil para manutenção do que os modelos hierárquico e em rede.

Desvantagens
- Não pode processar grandes quantidades de transações empresariais tão depressa e com tanta eficiência
como os modelos hierárquico e em rede.

78
Estrutura Multidimensional

- É uma variação do modelo relacional que utiliza estruturas multidimensionais para armazenar dados e
relações entre os dados.
- Um benefício maior dos bancos de dados multidimensionais é que eles são uma maneira compacta e
inteligível de visualizar e manipular elementos de dados que possuem muitas inter-relações.
- Os bancos de dados multidimensionais se tornaram a estrutura mais popular para os bancos de dados
analíticos que suportam aplicações de processamento analítico on-line (OLAP).

Vantagens
- Forma compacta e de fácil compreensão para visualização e manipulação de elementos dedados que
possuem muitas inter-relações.
- Suporta aplicações OLAP na qual respostas rápidas para consultas empresarias complexas são requisitas.

Desvantagens
- Não desenvolvida atualmente para amplo uso de aplicações empresariais.

Estrutura Baseada em Objetos

É considerada como uma das tecnologias chaves de uma nova geração de aplicativos multimídia baseados na
rede.

Em uma estrutura baseada em objetos, um objeto consiste em valores de dados que descrevem os atributos
de uma entidade, mais as operações que podem ser executadas sobre os dados.

Esta capacidade de sintetização permite manipular melhor tipos mais complexos de dados (gráficos, voz, texto)
do que outras estruturas de bancos de dados.
Suporta herança, ou seja, novos objetos podem ser automaticamente criados mediante a reprodução de
algumas ou todas as características de um ou mais objetos pais.

As capacidades e herança dos objetos tornaram populares os sistemas de gerenciamento de bancos de dados
orientados a objetos (OOSGBD) nas aplicações do projeto assistido por computador (CAD).

Os projetistas podem desenvolver desenhos de produtos, armazená-los como objetos em um banco de dados
baseado em objetos e reproduzi-los e modificá-los para criar novos desenhos de produto.

As aplicações de multimídia baseadas em rede para a Internet e intranets e extranets se tornaram uma área
de aplicação importante para a tecnologia de objetos.

Vantagens
- Manipula tipos complexos de dados (gráficos, imagens, voz e texto) melhor do que outras estruturas.
- Relativamente fácil de utilizar.
- Tecnologia chave sendo utilizada em aplicações de multimídia baseadas na rede para a Internet e intranets
e extranets empresariais.
- Suporta herança – novos objetos podem ser automaticamente criados mediante a reprodução de algumas ou
de todas as características de um ou mais objetos pais.
- Não desenvolvida atualmente para amplo uso empresarial.

Dados Estruturados e Não Estruturados

Entender a diferença entre eles pode significar o bom andamento do seu projeto de gestão de documentos e
informações. A tecnologia existente hoje é completamente confiável, mas os softwares e plataformas apenas
ajudam a organizar. Tornar o projeto viável depende de conhecer conceitos e a própria cultura do ambiente
corporativo. De acordo com estudos, 80% do conteúdo produzido em uma empresa normal é em formato não
estruturado. Mas o que isso significa e qual a diferença para um estruturado.

Não estruturados

79
Os bancos de dados em geral não contêm todas as informações possíveis sobre algo lá guardado. Um dado
é uma forma organizada de informação, mas ela ocorre desde que campos específicos sejam preenchidos
para que a recuperação deles se dê de forma automatizada. Mas documentos de texto, por exemplo, não são
enxergados em toda sua amplitude. Seria inviável classificar cada palavra do texto e relacioná-las com
contextos, momentos, pessoas, citações, etc. Isso é pior para vídeos e áudios. Em redes sociais, quando as
pessoas colocam suas emoções no que escrevem, tudo fica ainda mais impossível. Imagine que você entrou
em uma sala de um colecionador. O acervo está etiquetado e organizado. Mas não se pode ter uma ideia
completa do significado daquilo tudo de uma forma automática.

Estruturados

São dados que contém uma organização para serem recuperados. É como se fossem etiquetas, linhas e
colunas que identificam diversos pontos sobre aquela informação e tornam o trabalho da tecnologia bem
simplificado. A maioria das empresas trabalha com eles há décadas. Embora não sejam a maior fatia do
conteúdo produzido, eles são o que existe – ou existia – de melhor para tirar conclusões e fazer processos
fluírem.

Há uma certa discussão sobre a validade desses conceitos já que dados não estruturados possuem alguma
estruturação intrínseca. Na realidade, essa separação ocorre porque a tecnologia existente é que enxerga
assim. Para nós, tudo é informação e é relevante ou não. Quem sabe um dia esses termos não acabam sendo
substituídos por outros ou apenas virem informação.

Dados não estruturados x Dados estruturados

Dados para humanos

Uma frase simples como “temos cinco bolas de golfe brancas e usadas com um diâmetro de 43 mm a R$ 1
cada uma” pode ser fácil de ser entendida por um humano, mas para um computador não é. A frase é o que
chamamos de dados não estruturados. Esses dados não têm uma estrutura fixa básica.
Não fica claro na frase que palavra se refere a quê. Da mesma forma, PDFs e imagens escaneadas podem
conter informações bem arrumadas para o olho humano, mas elas não são legíveis por computadores.

Dados para computadores

Computadores são bem diferentes de humanos. Pode ser extremamente difícil fazer computadores extraírem
informações de determinadas fontes. Algumas tarefas fáceis para humanos ainda são difíceis de serem
automatizadas com computadores. A interpretação de um texto apresentado como uma imagem é por exemplo
um desafio para um computador.

Se você quiser que o seu computador processe e analise os seus dados, ele tem que ser capaz de lê-los. Isso
significa que os seus dados têm que estar estruturados, passíveis de serem lidos por computadores. Um dos
formatos mais usados para a troca de dados é o CSV, sigla em inglês para valores separados por vírgula. A
frase sobre bolas de golfe citada acima poderia ficar assim em CSV: “quantidade”, “cor”, “condicao”, “item”,
“categoria”, “diametro (mm)”, “preco” 5, ”branco”,”usada”,”bola”,”golfe”,43,0.5
Essa maneira é mais simples para o seu computador entender e pode ser lida diretamente por um programa
de planilhas. Notem que as palavras estão entre aspas. Isso as diferencia como texto (valores “string” na
linguagem dos computadores). Os números não têm aspas. Vale mencionar que há vários outros formatos que
são estruturados e passíveis de serem lidos por computadores.

Conceitos do Modelo Relacional

O modelo relacional foi criado por Edgar F. Codd, nos anos 70, e começou a ser usado com o advento dos
bancos de dados relacionais, nos anos 80. A ideia de modelo relacional se baseia no princípio de que as
informações em uma base de dados podem ser consideradas como relações matemáticas e que podem ser
representadas, de maneira uniforme, através do uso de tabelas onde as linhas representam as ocorrências de
uma entidade e as colunas representam os atributos de uma entidade do modelo conceitual.

As relações no modelo relacional são conjuntos de dados vistos como tabelas cujas operações são baseadas
na álgebra relacional (projeção, produto cartesiano, seleção, junção, união e subtração) e que manipulam

80
conjuntos de dados ao invés de um único registro, isto é, cada operação realizada afeta um conjunto de linhas
e não apenas uma única linha, ainda que algumas operações possam afetar uma única linha (conjunto com
um único elemento).

Da mesma forma, a resposta das operações de consulta são sempre na forma de uma tabela. As operações
da álgebra relacional são implementadas por linguagens não procedurais de alto nível, sendo a SQL a
linguagem padrão para os bancos de dados relacionais e universalmente usada, tendo sido padronizada pelo
ANSI (American National Standard Institute).

Principais Vantagens do Modelo Relacional

Entre as principais vantagens do modelo relacional podemos citar:


- Independência total dos dados;
- Visão múltipla dos dados;
- Redução acentuada na atividade de desenvolvimento.
Particularmente para extração de dados para relatórios e consultas específicas do usuário;
- Maior segurança no acesso aos dados;
- Maior agilidade para consulta/atualização;
- Qualidade dos dados garantida por restrições de integridade (Identidade, referencial e de domínio).

As 12 Regras de Codd
Ao definir o modelo relacional, Codd estabeleceu 12 regras para determinação de um banco de dados
relacional.
Estas regras são usadas portanto para se verificar a fidelidade de um banco de dados ao modelo relacional.
Na prática são poucos os gerenciadores de banco de dados que atendem a todas as 12 regras.
Na maior parte dos casos são atendidas no máximo 10 regras.
1. Toda informação num banco de dados relacional é apresentada a nível lógico na forma de tabelas;
2. Todo dado em um banco de dados relacional tem a garantia de ser logicamente acessível, recorrendo-se a
uma combinação do nome da tabela, um valor de chave e o nome da coluna;
3. Tratamento sistemático de valores nulos; (ausência de informação);
4. O dicionário de dados, catálogo, do banco de dados é baseado no modelo relacional;
5. Há uma linguagem não procedural para a definição, manipulação e controle dos dados;
6. Tratamento das atualizações de visões dos dados;
7. Tratamento de alto nível para inserção, atualização e eliminação de dados;
8. Independência física dos dados; (mudança na memória e no método de acesso, criação de um novo índice,
criação de uma nova coluna);
9. Independência lógica dos dados; (mudança no tamanho de uma coluna);
10. Restrição de Integridade; (Identidade, Referencial e Domínio);
11. Independência de Distribuição dos dados;
12. Não subversão das regras de integridade ou restrições quando se usa uma linguagem hospedeira.

O Conceito de Chave no Modelo Relacional


Chaves e Índices

Chave - O conceito de chave designa um item de busca, ou seja, um dado que será usado para efetuar uma
consulta no banco de dados. É um conceito lógico que só faz sentido para a aplicação e não existe fisicamente
no banco de dados.
Índice - O conceito de índice está associado a um recurso físico usado para otimizar uma consulta no banco
de dados. É um recurso físico, ou seja, um índice é uma estrutura de dados, (endereços), que existe fisicamente
no banco de dados.
Existem diferentes tipos de chave em um modelo relacional. Vamos ver cada um dos tipos de chave abaixo:

- Chave Primária: A chave primária é usada para identificar univocamente uma linha em uma tabela. A chave
primária pode ser composta, ter vários atributos, ou simples, um único atributo. Por exemplo, o atributo CPF
pode ser usado como chave primária para a tabela CLIENTES pois identifica um único cliente considerando
que não existe mais de um cliente com o mesmo CPF.

81
- Chave Secundária: A chave secundária é usada para acessar um conjunto de informações. Pode ser
formada por um único atributo ou mais de um atributo que identifica(m) um subconjunto de dados em uma
tabela. Normalmente, se cria um índice para uma chave secundária como forma de otimizar a consulta feita
por aquela chave ao banco de dados. Por exemplo, podemos ter uma chave secundária formada pelo CEP
para a tabela de CLIENTES pois esta chave identifica um subconjunto de clientes que residem em uma rua.

- Chave Candidata: A chave candidata é formada por um atributo que identifica uma única linha na tabela.
Como uma tabela pode possuir mais de um atributo identificador único podemos ter várias chaves candidatas
em uma única tabela, sendo que apenas uma das chaves candidatas pode ser escolhida para ser a chave
primária da tabela. As demais chaves permanecem como chaves candidatas na tabela. Por exemplo, podemos
ter uma chave candidata formada pela coluna NIT (PISPASEP) na tabela FUNCIONARIOS que possui como
chave primária a coluna MATRICULA. Ambas identificam univocamente um linha na tabela FUNCIONARIOS,
porem a chave NIT é candidata e a chave MATRICULA é a chave primária.

- Chave Estrangeira: A chave estrangeira é formada por atributos que são chave primária em outra tabela,
servindo assim para estabelecer relacionamentos entre as tabelas de um banco de dados. Assim, quando
dizemos que duas tabelas estão relacionadas através de uma coluna devemos observar que em uma tabela
esta coluna será chave primária e na outra tabela ela será uma chave estrangeira que fará a ligação entre as
duas tabelas, estabelecendo o relacionamento. Por exemplo, podemos ter na tabela FUNCIONARIOS uma
chave estrangeira COD_DEPTO que estabelece um relacionamento entre a tabela FUNCIONARIOS e a tabela
DEPTOS, sendo que na tabela DEPTOS a coluna COD_DEPTO é a chave primária.

Regras de Integridade do Modelo Relacional


O modelo relacional possui duas regras de integridade descritas a seguir.

Integridade de Identidade - A chave primária não pode conter valores nulos. Como toda informação em
um banco de dados relacionam precisa ter uma identidade exclusiva, a chave primária deve ser
obrigatoriamente preenchida. Além disso, a chave primária não deve ter valores repetidos em um tabela, de
forma a garantir que exista apenas uma linha para cada valor definido para a chave primária.

Integridade Referencial - Se uma determinada tabela A possui uma chave estrangeira que estabelece
relacionamento com uma tabela B, então o valor da chave estrangeira da tabela

A deve ser igual a um valor de chave primária na tabela B. Esta regra garante que as referências de uma tabela
para outra tabela sejam válidas, de forma que os relacionamentos sejam consistentes e não ocorra
inconsistência nos dados, como haver um funcionário alocado em um departamento que não existe. Assim,
para todo valor de uma coluna que é chave estrangeira em uma tabela, deve haver um valor correspondente
na coluna que é chave primária da tabela com a qual a chave estrangeira faz referência.
Como nem sempre o relacionamento entre tabelas é obrigatório uma chave estrangeira pode possuir valor
nulo.

É importante ressaltar que em um modelo relacional estas regras de integridade são garantidas pelo
gerenciador de banco de dados de forma automática, sem a necessidade de se tratar estas regras no código
da aplicação. Ou seja, o programador não precisa programar validações no sistema para garantir que estas
regras sejam atendidas pois o próprio gerenciador de banco de dados cuida disso.

Integridade de Domínio - Restringe o conjunto de valores que podem ser gravados em uma coluna de uma
tabela. Desta forma, somente os valores que pertencem ao domínio podem ser gravados na coluna da tabela.
Outros valores não são permitidos e a atualização é desfeita pelo gerenciador de banco de dados. O domínio
define um conjunto de valores.
Quando este domínio é associado a uma coluna de uma tabela, somente os valores definidos para o domínio
podem ser gravados na coluna. Este tipo de restrição garante a qualidade de dados na base de dados.

Características do Modelo Relacional

- Uma tabela deve ser acessível por qualquer coluna, mesmo que não tenha sido definida como chave;
- O relacionamento entre duas tabelas não existe fisicamente, pois o relacionamento é lógico e representado
através de chaves estrangeiras;

82
- Uso de linguagens não-procedurais e autocontidas; (SQL);
- Um otimizador de consultas para definição do melhor plano de acesso aos dados.

Regras para Derivação do Modelo Conceitual para o Modelo Relacional

Nesta etapa é feita a transformação das entidades e relacionamentos do modelo E-R para o modelo relacional,
no qual os dados são representados por tabelas. Para tanto, foram definidas regras para esta transformação
de forma a atender às características do modelo relacional.
Estas regras garantem que o modelo relacional estará adequado, alinhado com o modelo conceitual e sem
inconsistências. O resultado desta etapa é um diagrama de tabelas, contendo as tabelas, chaves primárias,
chaves estrangeiras e restrições de integridade, formando assim o modelo lógico que servirá de base para o
projeto físico do Banco de Dados.

Mapeamento das Entidades - Toda entidade torna-se uma tabela levando todos os atributos definidos na
entidade que tornam-se colunas na tabela criada. O identificador da entidade torna-se a chave primária da
tabela que não permitirá repetição de valores e nem valores nulos.

Mapeamento de Atributos - Os atributos das entidades e dos relacionamentos devem ser gerados de
forma que minimizem o consumo de espaço de armazenamento e torne mais eficiente a consulta de dados.
Devem ser consideradas as características do gerenciador de banco de dados que será utilizado para
implementar o banco de dados físico. Devem ser escolhidos o tipo de dado e tamanho adequados para cada
coluna criada na tabela.

Mapeamento de Relacionamentos - O mapeamento dos relacionamentos implica na transformação de


atributos das entidades em colunas nas tabelas e, em casos específicos, implica também na criação de novas
tabelas a partir de relacionamentos e entidades associativas. Existem diferentes abordagens dependendo da
cardinalidade do relacionamento:

- Relacionamentos que possuem atributos: Estes relacionamentos se tornam tabelas no caso de


relacionamentos n:n. No caso de relacionamentos 1:n os atributos do relacionamento são transferidos para a
tabela que possui cardinalidade n;

- Relacionamentos são representados por chaves estrangeiras (Foreign Key): Todo atributo
correspondente à chave primária de outra relação, base para a integridade referencial, é definido como uma
chave estrangeira);

- Relacionamento 1 para 1 (1:1): Uma das entidades envolvidas no relacionamento carrega o atributo
identificador que deve ser definido com chave estrangeira na tabela criada para a entidade fazendo referência
à chave primária da tabela criada para a outra entidade. O Critério para escolher qual tabela receberá a chave
estrangeira depende do negócio que está sendo modelado, sendo necessária análise caso a caso.
Porém em geral se escolhe a tabela onde faz mais sentido colocar o atributo, entidade mais importante para o
negócio.

- Relacionamento 1 para Muitos (1:N): A entidade cuja cardinalidade é N recebe o atributo identificador
da entidade com cardinalidade 1 que será mapeado como uma chave estrangeira na tabela criada para a
entidade com cardinalidade N. Além disso, recebe os atributos do relacionamento se houve. Caso seja a
entidade com cardinalidade N seja uma entidade fraca, então ela recebe o atributo identificador da entidade
com cardinalidade 1 que deve ser mapeado de forma a compor a chave primária da tabela criada para a
entidade com cardinalidade N, como forma de manter a dependência funcional em relação à entidade com
cardinalidade 1.

- Relacionamento Muitos para Muitos (M:N): Deve ser criada uma tabela que recebe os atributos
identificadores das entidades que participam do relacionamento, sendo criada a chave primária composta pelas
colunas derivadas dos atributos identificadores. Além disso, a tabela recebe todos os atributos do
relacionamento, se existirem. Este é o único caso em que um relacionamento se torna uma tabela, em todos
os demais casos, são criadas chaves estrangeiras nas tabelas a fim de estabelecer os relacionamentos.

- Relacionamentos Múltiplos (Ternário, Quaternário, etc.): Deve ser criada uma tabela que recebe
tantos atributos identificadores quantas foram as entidades que participam do relacionamento. A chave primária

83
desta tabela é composta por todos os atributos identificadores. É o caso de relacionamentos ternário,
quaternários, etc.

- Relacionamento Auto-relacionamento: Incluir a chave primária da entidade na própria entidade como


chave estrangeira, gerando uma estrutura de acesso a partir dessa chave.

Mapeamento de Generalização/Especialização – Deve ser criada uma tabela para a entidade pai e
uma tabela para cada entidade filha. Os atributos comuns às entidades filhas devem ser mapeados na tabela
criada para a entidade pai. As tabelas criadas para cada entidade filha devem receber o atributo identificador
da entidade pai na composição da chave primária e receber também os atributos específicos da entidade filha
correspondente. A entidade pai e a entidade filha também podem ser mapeadas para uma única tabela.

Mapeamento de Agregações - normalmente gera uma nova tabela que representa a agregação. Esta
tabela
normalmente faz relacionamento com uma tabela associativa;

O Modelo Relacional

No modelo relacional a principal construção para representação dos dados é a relação, uma tabela com linhas
não ordenadas e colunas. Uma relação consiste de um esquema e de uma instância. O esquema especifica o
nome da relação e o nome e o domínio de cada coluna, também denominada atributo ou campo da relação. O
domínio do atributo é referenciado no esquema por seu nome e serve para restringir os valores que este atributo
pode assumir. O esquema de uma relação é invariável ao longo do tempo, sendo modificado apenas por
comandos específicos. Um exemplo de esquema de relação é: Students (sid: string, name: string, login: string,
age: integer, gpa: real)

Neste caso está sendo definida a relação de nome Students, com atributos sid, name, login, age e gpa, cujos
domínios são respectivamente string, string, string, integer e real.

A instância de uma relação é o conjunto de linhas, também denominadas tuplas ou registros, distintas entre si,
que compõem a relação em um dado momento. Ela é variável, já que o número de tuplas e o conteúdo de seus
atributos podem variar ao longo do tempo. A instância de uma relação deve seguir sempre o seu respectivo
esquema, respeitando o número de atributos definidos, bem como os seus domínios.

Esta restrição, denominada restrição de domínio, é muito importante. O modelo relacional somente considera
relações que satisfaçam esta restrição. Um exemplo de uma instância para o esquema Students é ilustrado na
Figura 1.

O número de tuplas (cada linha formada por uma lista ordenada de colunas) que uma dada instância possui
denomina-se cardinalidade da relação e o número de atributos é o seu grau. A instância de relação da Figura
1 tem cardinalidade 3 e grau 5. Note que a cardinalidade é variável, mas o grau não.
Um banco de dados relacional é um conjunto de uma ou mais relações com nomes distintos. O esquema do
banco de dados relacional é a coleção dos esquemas de cada relação que compõe o banco de dados.

Criando e Modificando Relações em SQL

A linguagem SQL padrão usa a palavra TABLE para referenciar uma relação. Um subconjunto desta linguagem
forma a Linguagem de Definição de Dados (DDL) que compreende comandos básicos para a criação, a
remoção e a modificação de relações.

84
A criação de relações em SQL é feita usando-se o comando CREATE TABLE, com a especificação do
respectivo esquema.
Por exemplo, para criar a relação Students citada anteriormente tem-se:
CREATE TABLE Students (sid: CHAR(20), name:
CHAR(20), login: CHAR(10), age: INTEGER, gpa: REAL)

Observe que com a execução deste comando está sendo criada apenas a relação, sem que sejam atribuídos
quaisquer valores aos seus atributos.

Para a remoção de uma relação do banco de dados usa-se o comando DROP TABLE. Assim, para remover a
mesma relação Students tem-se: DROP TABLE Students
Este comando remove a relação especificada, removendo a informação sobre o seu esquema e também as
tuplas da instância atual.

O comando ALTER TABLE é usado para alteração do esquema de uma relação. Ainda considerando a relação
Students para alterar o seu esquema com a adição de um novo campo firstYear cujo domínio é inteiro usa-se
o comando:
ALTER TABLE Students ADD COLUMN firstYear: integer;
A execução deste comando faz com que o esquema da relação seja alterado e com que para cada tupla da
instância corrente seja criado um novo atributo de nome firstYear, atribuindo a ele o valor null.

Um outro subconjunto da linguagem SQL forma a Linguagem de Manipulação de Dados (DDL), que
compreende comandos básicos para a modificação e a recuperação de dados.

O comando INSERT INTO é usado para adicionar novas tuplas a uma relação.
Por exemplo, para inserir uma tupla na relação Students, tem-se:
INSERT INTO Students (sid, name, login, age, gpa) VALUES (53688, ‘Smith’, ‘smith@ee’, 18, 3.2)

Os valores descritos por VALUES, correspondem ao valor que cada atributo terá na nova tupla.
As tuplas de uma relação são removidas por meio do comando DELETE FROM. Pode-se remover todas as
tuplas de uma relação ou apenas aquelas que satisfaçam uma dada condição. Para remover as tuplas de
estudantes cujo nome (name) é Smith na relação Students executa-se o comando: DELETE FROM Students
S WHERE S.name = ‘Smith’

A alteração do valor de atributos que compõem as tuplas é feita usando-se o comando UPDATE FROM. De
forma semelhante ao comando DELETE FROM, pode-se modificar uma tupla específica ou várias delas por
meio de um único comando. Por exemplo: UPDATE FROM Students S SET S.age = S.age + 1, S.gpa = S.gpa
– 1 WHERE S.sid = 53688

Este comando altera apenas a tupla da relação Students cujo atributo sid tenha valor igual a 53688. Já o
comando a seguir altera todas as tuplas cujo atributo gpa tenha valor maior ou igual a 3.2. UPDATE FROM
Students S SET S.gpa = S.gpa + 0.5 WHERE S.gpa >= 3.2

Restrições de Integridade sobre Relações

Um bom SGBD deve evitar a entrada de informação incorreta ou inconsistente em sua base de dados,
garantindo, com isso, a qualidade da informação inserida. Uma restrição de integridade (RI) é uma condição
especificada no esquema da base de dados para restringir a informação a ser armazenada.
Ou seja, a RI é uma condição definida que deve ser verdadeira para qualquer instância da base de dados. Se
uma instância da base de dados satisfaz todas as RIs especificadas, então ela é uma instância válida. Um bom
SGBD garante as RIs, não permitindo a existência de instâncias inválidas.
As RI são especificadas e conferidas em 2 momentos diferentes:
- Especificação da RI: se dá na definição do esquema da base de dados pelo usuário ou pelo administrador da
base de dados (DBA);
- Conferência das RIs: é feita pelo banco de dados toda vez que uma relação é modificada por uma aplicação
sendo executada.
O modelo relacional permite a especificação de vários tipos de RIs. Um deles é a restrição de domínio citada
anteriormente. Outros tipos serão vistos a seguir.

85
Restrições de Chaves

A restrição de chave serve para garantir que as tuplas de uma relação sejam únicas. Para isso, identifica um
conjunto mínimo de atributos que devem ter valores diferentes em todas as tuplas de uma instância da relação.
Este conjunto de atributos denomina-se chave candidata da relação e deve satisfazer os seguintes requisitos:
- Não podem existir duas tuplas diferentes com os mesmos valores para estes atributos, ou seja, a chave
identifica unicamente qualquer tupla da relação válida;
- Ao retirar-se qualquer atributo componente da chave, ela deixa de identificar unicamente as tuplas.
Se o segundo requisito for violado, então a chave candidata é uma super-chave. Por exemplo temos que sid é
uma chave para a relação Student, pois identifica cada estudantes. Já o conjunto {sid, gpa} é uma super-chave
da relação, pois ao retirar-se o atributo gpa, o atributo sid continua identificando unicamente as tuplas. O
conjunto de todos os atributos de uma relação formam sempre uma super-chave desta relação.

Pela definição de relação, é sempre garantida a existência de uma chave. Entretanto, cada relação pode conter
várias chaves candidatas. Cabe ao DBA escolher dentre elas aquela que será a chave primária, a ser usada
pelo banco de dados em operações de otimização. A escolha desta chave é muito importante e deve ser feita
visando garantir a qualidade dos dados. Por exemplo, na relação Students, se name fosse escolhido como
chave primária, não seria possível a existência de estudantes homônimos, o que talvez não refletisse
corretamente os requisitos do sistema. A chave primária não pode assumir valor null.

Especificando Restrições de Chaves em SQL

A especificação de uma chave e de uma chave primária em SQL é feita respectivamente, pelos comandos
UNIQUE e PRIMARY KEY.

Na execução do comando a seguir está sendo criada a relação Enrolled, cuja chave primária é composta pelos
atributos stdid e cid CREATE TABLE Enrolled (stdid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY
(stdid,cid) )

Caso fosse desejado que esta mesma relação tivesse uma chave composta pelos atributos cid e grade, sendo
sid a chave primária da relação, deveria ser executado o comando: CREATE TABLE Enrolled (stdid CHAR(20),
cid CHAR(20), grade CHAR(2), UNIQUE (cid, grade), CONSTRAINT EnrolledKey PRIMARY KEY (cid) )

O uso de CONSTRAINT no comando serve para nomear uma restrição, facilitando sua identificação para
impressão de mensagens de erro numa eventual ocorrência de violação.

Note que neste segundo exemplo cada estudante pode cursar apenas um curso e receber uma única nota para
este curso. E ainda que dois estudantes de um mesmo curso não recebem a mesma nota. Percebe-se, então,
que quando usada de forma displicente, uma restrição de integridade pode impedir o armazenamento de
instâncias de base de dados que surgem na prática.

Restrições de Chave Estrangeira

No modelo relacional é comum que a informação de uma relação esteja ligada à informação de outra relação.
Se uma delas é modificada a outra também deve ser checada e modificada, se for o caso, de maneira a garantir
a consistência da informação. Para que o banco de dados possa fazer esta checagem, é especificada uma
restrição envolvendo ambas as relações. Esta restrição denomina-se restrição de chave estrangeira.

A chave estrangeira é um conjunto de atributos de uma relação que é usado para fazer referência a uma tupla
de outra relação, correspondendo à chave primária da relação referenciada. A chave estrangeira deve conter
o mesmo número de atributos da chave primária da outra relação, e seus respectivos domínios, mas não
necessariamente os mesmos nomes. Além disso, diferente da chave primária, pode assumir valor null. Por fim
pode referenciar a relação que a contém, se necessário.

Considerando a relação Enrolled apresentada anteriormente, queremos garantir que apenas estudantes com
registro válido (sid) podem ser matriculados nos cursos. Para isso, cria-se uma chave estrangeira em Enrolled
que corresponde à chave primária da relação Students, conforme ilustra a Figura 2:

86
Neste caso, se a aplicação tentar inserir em Enrolled uma tupla de um estudante de stdid 53673, o sistema de
banco de dados irá rejeitar a operação, pois não existe um estudante em Students com este sid. Da mesma
forma, ao tentar excluir de Students o estudante com sid 53650, o sistema não deve permitir a exclusão, pois
ele está sendo referenciado por Enrolled. Uma outra ação possível para este caso seria a exclusão de todas
as tuplas de Enrolled que façam referência a este estudante.
Se todas as restrições de chave estrangeiras definidas no banco de dados são garantidas, a sua integridade
referencial é alcançada, ou seja, garante-se que não há referências pendentes.

Especificando Restrições de Chave Estrangeira em SQL

O comando FOREIGN KEY identifica a chave estrangeira na criação da relação. Assim, para definir esta
restrição para o exemplo da Figura 2 usa-se o comando:
CREATE TABLE Enrolled (stdid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (stdid,cid) ,
FOREIGN KEY (stdid) REFERENCES Students )
Com este comando garante-se que somente estudantes registrados em Students possam ser matriculados em
cursos.
Outra restrição colocada por este comando, por meio da chave primária, é que cada estudante pode ter apenas
uma nota por curso.

Restrições Gerais

Restrições de domínio, de chave primária e de chave estrangeiras são consideradas como parte fundamental
do modelo de dados relacional. Entretanto, elas não são suficientes para especificar outras restrições mais
genéricas, como, por exemplo, a definição de intervalos de valores para determinados atributos.
Para estes outros casos são usadas restrições de tabelas e de assertivas. As restrições de tabelas são
associadas a um única tabela e são checadas sempre que a tabela é alterada. Já as restrições de assertivas
são associadas a várias tabelas e são checadas sempre que uma destas tabelas é modificada.

Garantindo as Restrições de Integridade

Como já visto anteriormente, as RIs são especificadas quando uma relação é criada e são checadas sempre
que uma relação é modificada. O impacto de RIs de domínio, de chave primária e de chave estrangeiras é
direto. Ou seja, sempre que um comando de inserção, exclusão ou atualização causa uma violação de RI, ele
é rejeitado.

Considerando as relações Students e Enrolled já definidas, sendo stdid uma chave estrangeira em Enrolled
que faz referência a Students. O que deveria ser feito se uma tupla de Enrolled com um id de estudante não
existente fosse inserida?
Ou então uma tupla de Students com sid nulo (null)? O sistema deveria apenas rejeitá-las. Mas o que deveria
ser feito se uma tupla de Student referenciada por Enrolled fosse removida?
Neste caso com certeza o sistema estaria violando as restrições de integridade referencial. Para evitar isso, a
linguagem SQL provê alternativas de tratamento para estas violações. São elas:
- Rejeitar a remoção da tupla de Students que é referenciada por Enrolled;
- Remover também todas as tuplas de Enrolled que referenciam a tupla de Students a ser removida;
- Atribuir um valor padrão válido ao stdid das tuplas de Enrolled que referenciam a tupla de Students a ser
removida;
- Atribuir o valor null ao stdid das tuplas de Enrolled que referenciam a tupla de Students removida, denotando
‘desconhecido’ ou ‘não aplicável’; entretanto, como neste exemplo stdid é parte da chave primária de Enrolled
, esta alternativa estaria violando a RI de chave primária e portanto não poderia ser aplicada.

87
Estas opções são válidas também para o caso de atualizações na relação Students.

Os comandos em SQL para implementar estas ações são:


NO ACTION, que é a opção padrão e que rejeita a operação sendo executada;
CASCADE, que remove a tupla da relação referenciada e todas as tuplas que fazem referência à ela;
SET NULL / SET DEFAULT, que atribui um valor à chave estrangeira da tupla referenciada.
A seleção da alternativa a ser utilizada é feita no momento da especificação da RI. Para o exemplo utilizado,
supondo-se que no caso de exclusão seja escolhida a segunda alternativa e no caso de atualização a primeira
delas, a criação da tabela Enrolled se daria pelo comando:
CREATE TABLE Enrolled (stdid CHAR(20), cid CHAR(20), grade CHAR(2), PRIMARY KEY (stdid,cid),
FOREIGN KEY (stdid) R EFERENCES Students ON DELETE CASCADE ON UPDATE NO ACTION)

Transações e Restrições

Uma transação é um programa que é executado pelo banco de dados e que pode conter vários comandos de
acesso à base de dados, como consultas, inserções, atualizações, etc. Caso um destes comandos da
transação viole algumas das restrições de integridade especificadas o tratamento padrão é rejeitar a sua
execução. Entretanto, esta abordagem algumas vezes pode ser muito inflexível, devendo ser dado outro
tratamento à situação.

Um exemplo seria, considerando as relações Enrolled e Students, a situação em que para o estudante ser
registrado, ou seja, ter seu id, ele deve estar matriculado em um curso.

Entretanto, para o curso existir, deve haver pelo menos um estudante matriculado. Percebe-se pelas restrições
existentes neste caso, que ao tentar-se inserir a primeira tupla de qualquer das relações, ocorrerá violação e,
portanto, as operações não serão completadas. A única maneira de conseguir realizar a primeira inserção em
alguma delas seria postergando a checagem da restrição, que normalmente ocorreria ao final da execução do
comando INSERT.

A linguagem SQL permite então que a checagem de uma restrição possa ser feita em modo imediato
(IMMEDIATE) ou postergado (DEFERRED). Para isso usa-se o comando SET, indicando a restrição e o seu
modo. Por exemplo o comando SET CONSTRAINT EnrolledKey DEFERRED, faz com que a restrição de nome
EnrolledKey definida anteriormente seja checada somente no momento de efetivação (commit ) da transação.

Consultando Dados Relacionais

Uma consulta em uma base de dados relacionais, normalmente referenciada como query, é uma questão sobre
os dados da base, cuja resposta consiste em uma nova relação que contém o resultado na forma de tuplas.
Por exemplo, usando as relações Students e Enrolled, pode-se querer saber quantos estudantes são maiores
de 18 anos ou quantos estudantes estão matriculados em um determinado curso.

O comando em SQL usado para realização de consultas é o SELECT. Para encontrar todos os estudantes
com 18 anos na instância de relação da Figura 1, executasse o comando SELECT * FROM Students S WHERE
S.age=18. A relação resposta é apresentada na Figura 3:
Sid Name Login age gpa 53666 Jones jones@cs 18 3.4 53688 Smith smith@eecs 18 3.2

O símbolo ‘*’ na consulta indica que a relação resultante deve conter todos os atributos existentes na relação
consultada. Caso fosse desejado obter apenas o nome e a senha destes estudantes, o comando a ser
executado seria o descrito abaixo que produziria o resultado ilustrado na Figura 4.
SELECT name, login FROM Students S WHERE S.age=18

88
Projeto Lógico da Base de Dados: indo do Modelo ER para o Modelo Relacional

O Modelo Entidade Relacionamento (MER) é adequado para representar um projeto de banco de dados em
alto nível.

Uma vez pronto o esquema da base de dados em MER, é preciso converter este esquema para o esquema de
banco de dados a ser usado, geralmente no modelo relacional. Para isso, existe um conjunto de regras que
direcionam o usuário nesta atividade, tratando, inclusive, restrições que não foram cobertas no esquema
conceitual.

Conjuntos Entidade

Um conjunto entidade (CE) é mapeado no modelo relacional com uma relação. Os atributos desta relação
serão os mesmos do CE, bem como seus respectivos domínios. Da mesma forma, a chave primária também
é mantida.
Como exemplo, considere o CE Employees ilustrado na Figura 5, cujos atributos são ssn, name e lot, sendo
ssn a chave primária.

O comando SQL para criar a relação correspondente é:

CREATE TABLE Employees (ssn CHAR(11), name


CHAR(20), lot INTEGER, PRIMARY KEY (ssn)).

Conjuntos Relacionamento

O mapeamento de conjuntos relacionamento (CR) para o modelo relacional pode ser feito de duas maneiras,
abordadas a seguir.

Conjuntos Relacionamento sem Restrições

Um conjunto relacionamento (CR) sem restrições é mapeado numa relação de maneira semelhante ao conjunto
entidade. Entretanto, a chave primária de cada entidade envolvida irá compor os atributos da nova relação
como chaves estrangeiras, juntamente com os atributos descritivos.
A chave primária desta relação será composta pelas chaves estrangeiras.

89
Para o exemplo do CR Works_In ilustrado na Figura 6, o seguinte comando SQL será usado no mapeamento:

CREATE TABLE Works_In(ssn CHAR(11), did INTEGER, since DATE,


PRIMARY KEY (ssn, did),
FOREIGN KEY (ssn) REFERENCES Employees,
FOREIGN KEY (did) REFERENCES Departments)

No caso de auto relacionamento a relação a ser criada conterá 2 ocorrências da chave primária da entidade
envolvida, as quais comporão a chave primária da relação.

Assim, o mapeamento do conjunto auto-relacionamento Reports_To ilustrado na Figura 7 para o modelo


relacional é feito pelo comando:
CREATE TABLE Reports_To(supervisor_ssn CHAR(11), subordinate_ssn CHAR(11) ,
PRIMARY KEY (supervisor_ssn, subordinate_ssn),
FOREIGN KEY (supervisor_ssn) REFERENCES Employees (ssn),
FOREIGN KEY (subordinate_ssn) REFERENCES Departments(ssn))

Conjuntos Relacionamento com Restrições de Chave

Existem 2 opções para o mapeamento de CR com restrição de chave para o modelo relacional. A primeira
delas é semelhante àquela já apresentada, criando uma relação para representar o CR, com chaves
estrangeiras para as relações envolvidas. Esta abordagem nem sempre é interessante, pois faz com que seja
necessária a combinação de relações para responder às consultas do usuário, podendo se tornar uma
atividade lenta.

A segunda opção é embutir o CR em qualquer das relações referentes às entidades envolvidas, usando uma
chave estrangeira para referenciar a outra entidade. Os atributos descritivos também passam a integrar a
relação que recebeu o CR. Esta solução é mais vantajosa por permitir a obtenção mais rápida de uma resposta.

A única ressalva é que podem ocorrer tuplas nas quais os atributos referentes ao CR estejam vazios.
Considerando a segunda opção, o mapeamento do CR Manages da Figura 8 para o modelo relacional é feito
pelo comando:

90
CREATE TABLE Dept_Mgr(did INTEGER, dname
CHAR(20), budget REAL, ssn CHAR(11), since DATE,
PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees))
Esta abordagem pode ser aplicada a CR que envolvam mais de 2 CE. Em geral, se o CR envolve N CE e
algumas delas tem restrição de chave, o CR pode ser embutido nesta CE.

Conjuntos Relacionamento com Restrições de Participação

A abordagem é a mesma que no caso anterior, mas com algumas particularidades. Considerando que no
exemplo da Figura 8 existisse uma restrição de participação relacionada ao gerente: todo departamento tem
de ter sempre um gerente. O comando a ser utilizado seria:
CREATE TABLE Dept_Mgr(did INTEGER, dname
CHAR(20), budget REAL, ssn CHAR(11) NOT NULL, since
DATE,
PRIMARY KEY (did),
FOREIGN KEY (ssn) REFERENCES Employees ON DELETE NO ACTION)

Neste caso a restrição de participação é garantida pelo NOT NULL usado no atributo ssn indicando que ele
não pode assumir valores null. Ou seja, que ele tem sempre um valor associado. Já o comando NO ACTION,
que é padrão, garante que o empregado não pode ser excluído da relação de empregados, se ele estiver como
gerente do departamento.

Conjuntos de Entidades Fracas

O conjunto de entidades fracas tem sempre participação binária do tipo 1:N, bem como uma restrição de chave
e uma de participação total. Levando-se isso em conta, a abordagem utilizada nos casos anteriores é ideal.
Entretanto, por se tratar de uma entidade dependente de outra, tem chave do tipo parcial.

Para o exemplo de conjunto entidade fraca ilustrado na Figura 9 o mapeamento para o modelo relacional seria
feito por meio do comando:
CREATE TABLE Dept_Policy(pname CHAR(20), age
INTEGER, cost REAL, ssn CHAR(11),
PRIMARY KEY (pname, ssn),
FOREIGN KEY (ssn) REFERENCES Employees ON DELETE CASCADE)

Note que neste caso, a chave da relação passou a ser composta pela chave primária da entidade fraca (pname)
e pela chave primária da relação que a contém (ssn, em Employees), sendo esta última também uma chave
estrangeira. O comando CASCADE, garante que se o empregado for excluído da relação Employees, todos os
seus dependentes também o serão.

Traduzindo Hierarquias de Classe

91
Semelhante ao que ocorre com os CR, existem 2 abordagens para tratar as hierarquias ISA. Na primeira delas,
deve ser criada, além da relação referente à super entidade, uma relação para cada especialização do CE,
mantendo seus atributos e acrescentando uma chave estrangeira que referencia a super entidade. A chave
estrangeira desta relação é também a sua chave primária. Caso a relação correspondente à super entidade
seja removida, as relações das entidades especializadas também devem ser removidas, usando para isso o
comando CASCADE.

A segunda abordagem sugere criar uma relação para cada especialização do CE, mas não para a super
entidade. Neste caso cada relação criada conterá, além dos seus atributos, os atributos da super entidade.
A primeira abordagem é mais genérica e também a mais usada. Sua principal vantagem é permitir que a
relação referente à super classe seja utilizada independente das relações referentes às entidades
especializadas. Já a segunda abordagem obriga que a informação seja sempre obtida a partir de uma das
entidades especializadas, não permitindo a existência da super classe.

Traduzindo diagramas ER com Agregação

Neste casos o mapeamento é simples e semelhante àqueles discutidos anteriormente: o CR da agregação é


traduzido em uma nova relação, sendo sua chave primária é composta pela chave primária dos CE envolvidos.
Da mesma forma, o CR que envolve esta agregação também é traduzido em uma nova relação, que terá dentre
seus atributos a chave primária da relação que representa a agregação.

Visões
A visão é uma tabela cujas linhas não são explicitamente armazenadas na base de dados, mas sim
computadas, quando necessário, a partir de uma definição em termos de tabelas da base de dados,
denominada tabelas base. O comando em SQL usado para isso é o CREATE VIEW

Considere as relações Students e Enrolled discutidas anteriormente. Suponha que exista um interesse
constante em recuperar o nome e o identificador dos estudantes que tem nota B em algum curso e também o
identificador deste curso.

Uma visão pode ser utilizada neste caso, sem que seja necessária a criação de uma tabela para isso. Então
para o exemplo descrito poderia ser usado o comando: CREATE VIEW B-Students (name, sid, course) AS
SELECT S.sname, S.sid, E.cid FROM Students S, Enrolled E WHERE S.sid = E.sid AND E.grade = 'B'
A visão definida neste caso é composta por 3 campos (name, sid e course) cujos domínios correspondem aos
mesmos das relações Students (name e sid) e Enrolled (course).

Visões, Independência de Dados e Segurança

O mecanismo de visões provê uma independência lógica dos dados no modelo relacional. Ela pode ser usada
para definir relações em um esquema externo que mascare mudanças ocorridas no esquema conceitual da
base de dados das aplicações. Por exemplo, se o esquema de uma dada relação for alterado, pode ser definida
uma visão que represente o esquema antigo, permitindo que aplicações continuem executando normalmente
sem grandes modificações.

Visões também são muito úteis no contexto de segurança.


Com elas é possível permitir que determinados grupos de usuários acessem somente os dados que eles tem
permissão para uso. Por exemplo, permitir que estudantes vejam apenas o nome e login de outros estudantes,
mas não sua senha ou sua nota em um curso.

Atualizações em Visões

Uma das vantagens do uso de visões é permitir o gerenciamento da apresentação do dados aos usuários, sem
que eles tenham de se preocupar com a maneira como eles estão fisicamente armazenados na base de dados.
Isto normalmente funciona adequadamente, já que a visão pode ser usada exatamente como uma relação,
permitindo a definição de consultas sobre os dados que a compõem. Esta vantagem acaba levando a uma
restrição, pois como se também se trata de uma relação, é natural o desejo de atualização os seus dados.
Entretanto, como a visão é uma tabela virtual, a sua atualização deve incidir sobre a tabela base, o que nem
sempre é possível, devido a problemas como ambiguidade e restrições de integridade.

92
Necessidade de Restringir Atualizações de Visões

É possível atualizar ou inserir uma linha em uma visão. No entanto, nem sempre esta atualização fará parte
dela. Isto ocorre porque na verdade a execução destes comandos promovem uma atualização ou inserção nas
tabelas base e dependendo da condição estabelecida na definição da visão, a linha pode não ser selecionada
para compor a tabela virtual, não refletindo a alteração feita.

Assim, por questões práticas, a linguagem SQL permite a atualização de visões apenas em casos muito
específicos, não permitindo, por exemplo, a atualização de colunas calculadas, de visões compostas por
agregados de linhas ou geradas a partir de junções.

Destruindo e Alterando Visões

Uma visão, de maneira semelhante ao que ocorre com as relações, também pode ser removida do banco de
dados. O comando em SQL utilizado para isso é o DROP VIEW.

Note que a remoção de uma relação também pode levar à remoção de uma visão caso tenha sido usado algum
comando que estabeleça esta restrição, como o CASCADE. Já o comando RESTRICT evita que uma relação
seja excluída quando da existência de uma visão associada a ela.

Controles de acesso e autenticação

Os controles de acesso, físicos ou lógicos, têm como objetivo proteger equipamentos, aplicativos e arquivos
de dados contra perda, modificação ou divulgação não autorizada. Os sistemas computacionais, bem
diferentes de outros tipos de recursos, não podem ser facilmente controlados apenas com dispositivos físicos,
como cadeados, alarmes ou guardas de segurança.

O que são controles de acesso lógico?

Os controles de acesso lógico são um conjunto de procedimentos e medidas com o objetivo de proteger dados,
programas e sistemas contra tentativas de acesso não autorizadas feitas por pessoas ou por outros programas
de computador.

O controle de acesso lógico pode ser encarado de duas formas diferentes: a partir do recurso computacional
que se quer proteger e a partir do usuário a quem serão concedidos certos privilégios e acessos aos recursos.
A proteção aos recursos computacionais baseia-se nas necessidades de acesso de cada usuário, enquanto
que a identificação e autenticação do usuário (confirmação de que o usuário realmente é quem ele diz ser) é
feita normalmente por meio de um identificador de usuário (ID) e por uma senha durante o processo de logon
no sistema.

Que recursos devem ser protegidos?

A proteção aos recursos computacionais inclui desde aplicativos e arquivos de dados até utilitários e o próprio
sistema operacional. Abaixo serão apresentados os motivos pelos quais esses recursos devem ser protegidos.

Aplicativos (programas fonte e objeto)

O acesso não autorizado ao código fonte dos aplicativos pode ser usado para alterar suas funções e a lógica
do programa.
Por exemplo, em um aplicativo bancário, pode-se zerar os centavos de todas as contas-correntes e transferir
o total dos centavos para uma determinada conta, beneficiando ilegalmente esse correntista.

Arquivos de dados

Bases de dados, arquivos ou transações de bancos de dados devem ser protegidos para evitar que os dados
sejam apagados ou alterados sem autorização, como, por exemplo, arquivos com a configuração do sistema,
dados da folha de pagamento, dados estratégicos da empresa.

93
Utilitários e sistema operacional

O acesso a utilitários, como editores, compiladores, softwares de manutenção, monitoração e diagnóstico deve
ser restrito, já que essas ferramentas podem ser usadas para alterar aplicativos, arquivos de dados e de
configuração do sistema operacional, por exemplo.

O sistema operacional é sempre um alvo bastante visado, pois sua configuração é o ponto-chave de todo o
esquema de segurança. A fragilidade do sistema operacional compromete a segurança de todo o conjunto de
aplicativos, utilitários e arquivos.

Arquivos de senha

A falta de proteção adequada aos arquivos que armazenam as senhas pode comprometer todo o sistema, pois
uma pessoa não autorizada, ao obter identificador (ID) e senha de um usuário privilegiado, pode,
intencionalmente, causar danos ao sistema. Essa pessoa dificilmente será barrada por qualquer controle de
segurança instalado, já que se faz passar por um usuário autorizado.

Arquivos de log

Os arquivos de log são usados para registrar ações dos usuários, constituindo-se em ótimas fontes de
informação para auditorias futuras. Os logs registram quem acessou os recursos computacionais, aplicativos,
arquivos de dados e utilitários, quando foi feito o acesso e que tipo de operações foram efetuadas.

Um invasor ou usuário não autorizado pode tentar acessar o sistema, apagar ou alterar dados, acessar
aplicativos, alterar a configuração do sistema operacional para facilitar futuras invasões, e depois alterar os
arquivos de log para que suas ações não possam ser identificadas. Dessa forma, o administrador do sistema
não ficará sabendo que houve uma invasão.

O que os controles de acesso lógico pretendem garantir em relação à segurança de


informações?

Os controles de acesso lógico são implantados com o objetivo de garantir que:


- Apenas usuários autorizados tenham acesso aos recursos;
- Os usuários tenham acesso apenas aos recursos realmente necessários para a execução de suas tarefas;
- O acesso a recursos críticos seja bem monitorado e restrito a poucas pessoas;
- Os usuários estejam impedidos de executar transações incompatíveis com sua função ou além de suas
responsabilidades.

O controle de acesso pode ser traduzido, então, em termos de funções de identificação e autenticação de
usuários alocação, gerência e monitoramento de privilégios; limitação, monitoramento e desabilitação de
acessos; e prevenção de acessos não autorizados.

Como os usuários são identificados e autenticados?

Os usuários dos sistemas computacionais são identificados e autenticados durante um processo, chamado
logon. Os processos de logon são usados para conceder acesso aos dados e aplicativos em um sistema
computacional, e orientam os usuários durante sua identificação e autenticação.

Normalmente esse processo envolve a entrada de um ID (identificação do usuário) e de uma senha


(autenticação do usuário). A identificação define para o computador quem é o usuário e a senha é um
autenticador, isto é, ela prova ao computador que o usuário é realmente quem ele diz ser.

Como deve ser projetado um processo de logon para ser considerado eficiente?

O procedimento de logon deve divulgar o mínimo de informações sobre o sistema, evitando fornecer a um
usuário não autorizado informações detalhadas. Um procedimento de logon eficiente deve:
- Informar que o computador só deve ser acessado por pessoas autorizadas;
- Evitar identificar o sistema ou suas aplicações até que o processo de logon esteja completamente concluído;

94
- Durante o processo de logon, evitar o fornecimento de mensagens de ajuda que poderiam auxiliar um usuário
não autorizado a completar esse procedimento;
- Validar a informação de logon apenas quando todos os dados de entrada estiverem completos. Caso ocorra
algum erro, o sistema não deve indicar qual parte do dado de entrada está correta ou incorreta, como, por
exemplo, ID ou senha;
- Limitar o número de tentativas de logon sem sucesso (é recomendado um máximo de três tentativas), e ainda:
a) registrar as tentativas de acesso inválidas;
b) forçar um tempo de espera antes de permitir novas tentativas de entrada no sistema ou rejeitar qualquer
tentativa posterior de acesso sem autorização específica;
c) encerrar as conexões com o computador.
- Limitar o tempo máximo para o procedimento de logon.
Se excedido, o sistema deverá encerrar o procedimento;
- Mostrar as seguintes informações, quando o procedimento de logon no sistema finalizar com êxito:
a) data e hora do último logon com sucesso;
b) detalhes de qualquer tentativa de logon sem sucesso, desde o último procedimento realizado com sucesso.

O que é identificação do usuário?

A identificação do usuário, ou ID, deve ser única, isto é, cada usuário deve ter uma identificação própria. Todos
os usuários autorizados devem ter um ID, quer seja um código de caracteres, cartão inteligente ou qualquer
outro meio de identificação. Essa unicidade de identificação permite um controle das ações praticadas pelos
usuários através dos logs.
No caso de identificação a partir de caracteres, é comum estabelecer certas regras de composição, como, por
exemplo, quantidade mínima e máxima de caracteres, misturando letras, números e símbolos.

O que é autenticação do usuário?

Após a identificação do usuário, deve-se proceder à sua autenticação, isto é, o sistema deve confirmar se o
usuário é realmente quem ele diz ser. Os sistemas de autenticação são uma combinação de hardware, software
e de procedimentos que permitem o acesso de usuários aos recursos computacionais.

Na autenticação, o usuário deve apresentar algo que só ele saiba ou possua, podendo até envolver a
verificação de características físicas pessoais. A maioria dos sistemas atuais solicita uma senha (algo que,
supostamente, só o usuário conhece), mas já existem sistemas mais modernos utilizando cartões inteligentes
(algo que o usuário possui) ou ainda características físicas (algo intrínseco ao usuário), como o formato da
mão, da retina ou do rosto, impressão digital e reconhecimento de voz.

Como orientar os usuários em relação às senhas?

Para que os controles de senha funcionem, os usuários devem ter pleno conhecimento das políticas de senha
da organização, e devem ser orientados e estimulados a segui-las fielmente. Todos os usuários devem ser
solicitados a:
- Manter a confidencialidade das senhas;
- Não compartilhar senhas;
- Evitar registrar as senhas em papel;
- Selecionar senhas de boa qualidade, evitando o uso de senhas muito curtas ou muito longas, que os obriguem
a escrevê-las em um pedaço de papel para não serem esquecidas (recomenda-se tamanho entre seis e oito
caracteres);
- Alterar a senha sempre que existir qualquer indicação de possível comprometimento do sistema ou da própria
senha;
- Alterar a senha em intervalos regulares ou com base no número de acessos (senhas para usuários
privilegiados devem ser alteradas com maior frequência que senhas normais);
- Evitar reutilizar as mesmas senhas;
- Alterar senhas temporárias no primeiro acesso ao sistema;
- Não incluir senhas em processos automáticos de acesso ao sistema (por exemplo, armazenadas em macros).

Vale lembrar também que utilizar a mesma senha para vários sistemas não é uma boa prática, pois a primeira
atitude de um invasor, quando descobre a senha de um usuário em um sistema vulnerável, é tentar a mesma
senha em outros sistemas a que o usuário tem acesso.

95
Que tipos de senhas devem ser evitadas?

Os usuários devem evitar senhas compostas de elementos facilmente identificáveis por possíveis invasores,
como por exemplo:
- Nome do usuário;
- Identificador do usuário (ID), mesmo que seus caracteres estejam embaralhados;
- Nome de membros de sua família ou de amigos íntimos;
- Nomes de pessoas ou lugares em geral;
- Nome do sistema operacional ou da máquina que está sendo utilizada;
- Nomes próprios;
- Datas;
- Números de telefone, de cartão de crédito, de carteira de identidade ou de outros documentos pessoais;
- Placas ou marcas de carro;
- Palavras que constam de dicionários em qualquer idioma;
- Letras ou números repetidos;
- letras seguidas do teclado do computador (ASDFG, YUIOP);
- Objetos ou locais que podem ser vistos a partir da mesa do usuário (nome de um livro na estante, nome de
uma loja vista pela janela);
- Qualquer senha com menos de seis caracteres.

Alguns softwares são capazes de identificar senhas frágeis, como algumas dessas citadas acima, a partir de
bases de dados de nomes e sequências de caracteres mais comuns, e ainda bloquear a escolha destas senhas
por parte do usuário.

Essas bases de dados normalmente fazem parte do pacote de software de segurança, e podem ser atualizadas
pelo gerente de segurança com novas inclusões.

Como escolher uma boa senha?

Geralmente são consideradas boas senhas aquelas que incluem, em sua composição, letras (maiúsculas e
minúsculas), números e símbolos embaralhados, totalizando mais de seis caracteres. Porém, para ser boa
mesmo, a senha tem de ser difícil de ser adivinhada por outra pessoa, mas de fácil memorização, para que
não seja necessário anotá-la em algum lugar. Também é conveniente escolher senhas que possam ser
digitadas rapidamente, dificultando que outras pessoas, a uma certa distância ou por cima de seus ombros,
possam identificar a sequência de caracteres.

Um método bastante difundido é selecionar uma frase significativa para o usuário e utilizar os primeiros
caracteres de cada palavra que a compõe, inserindo símbolos entre eles.

É também recomendável não utilizar a mesma senha para vários sistemas. Se um deles não for devidamente
protegido, a senha poderá ser descoberta e utilizada nos sistemas que, a priori, estariam seguros. Outro
conselho: adquira o hábito de trocar sua senha com frequência. Trocá-la a cada sessenta, noventa dias é
considerada uma boa prática.

Se você realmente não conseguir memorizar sua senha e tiver que escrevê-la em algum pedaço de papel,
tenha pelo menos o cuidado de não identificá-la como sendo uma senha.
Não pregue esse pedaço de papel no próprio computador, não guarde a senha junto com a sua identificação
de usuário, e nunca a envie por e-mail ou a armazene em arquivos do computador.

Como deve ser feita a concessão de senhas aos usuários?

A concessão de senhas deve ser feita de maneira formal, considerando os seguintes pontos:
- Solicitar aos usuários a assinatura de uma declaração, a fim de manter a confidencialidade de sua senha
pessoal (isso pode estar incluso nos termos e condições do contrato de trabalho do usuário);
- Garantir, aos usuários, que estão sendo fornecidas senhas iniciais seguras e temporárias, forçando-os a
alterá-las imediatamente no primeiro logon. O fornecimento de senhas temporárias, nos casos de
esquecimento por parte dos usuários, deve ser efetuado somente após a identificação positiva do respectivo
usuário;
- Fornecer as senhas temporárias aos usuários de forma segura. O uso de terceiros ou de mensagens de
correio eletrônico desprotegidas (não criptografadas) deve ser evitado.

96
O que a instituição pode fazer para proteger e controlar as senhas de acesso a seus sistemas?

O sistema de controle de senhas deve ser configurado para proteger as senhas armazenadas contra uso não
autorizado, sem apresentá-las na tela do computador, mantendo-as em arquivos criptografados e estipulando
datas de expiração (normalmente se recomenda a troca de senhas após 60 ou 90 dias). Alguns sistemas, além
de criptografar as senhas, ainda guardam essas informações em arquivos escondidos que não podem ser
vistos por usuários, dificultando, assim, a ação dos hackers.

Para evitar o uso frequente das mesmas senhas, o sistema de controle de senhas deve manter um histórico
das últimas senhas utilizadas por cada usuário. Deve-se ressaltar, entretanto, que a troca muito frequente de
senhas também pode confundir o usuário, que poderá passar a escrever a senha em algum lugar visível ou
escolher uma senha mais fácil, comprometendo, assim, sua segurança.

O gerente de segurança deve desabilitar contas inativas, sem senhas ou com senhas padronizadas. Até
mesmo a senha temporária fornecida ao usuário pela gerência de segurança deve ser gerada de forma que já
entre expirada no sistema, exigindo uma nova senha para os próximos logons. Portanto, deve haver um
procedimento que force a troca de senha imediatamente após a primeira autenticação, quando o usuário
poderá escolher a senha que será utilizada dali por diante. Ex-funcionários devem ter suas senhas bloqueadas.
Para isso, devem existir procedimentos administrativos eficientes que informem o gerente de segurança, ou o
administrador dos sistemas, da ocorrência de demissões ou de desligamentos de funcionários. Esses
procedimentos, na prática, nem sempre são seguidos, expondo a organização a riscos indesejáveis.

Também devem ser bloqueadas contas de usuários após um determinado número de tentativas de acesso
sem sucesso.

Esse procedimento diminui os riscos de alguém tentar adivinhar as senhas. Atingido esse limite, só o
administrador do sistema poderá desbloquear a conta do usuário, por exemplo.

Existem outras formas de autenticação do usuário, além do uso de senhas?

Sim. A autenticação dos usuários pode ser feita a partir de tokens, ou ainda, de sistemas biométricos.

O que são tokens?

A ideia de fornecer tokens aos usuários como forma de identificá-los é bastante antiga. No nosso dia-a-dia,
estamos frequentemente utilizando tokens para acessar alguma coisa.
As chaves que abrem a porta da sua residência ou seu cartão com tarja magnética para utilizar o caixa
eletrônico do banco são exemplos de tokens. O cartão magnético é ainda uma token especial, pois guarda
outras informações, como, por exemplo, a sua conta bancária.
Token pode ser definida, então, como um objeto que o usuário possui, que o diferencia das outras pessoas e
o habilita a acessar algum objeto. A desvantagem das tokens em relação às senhas é que essas, por serem
objetos, podem ser perdidas, roubadas ou reproduzidas com maior facilidade.

O que são cartões magnéticos inteligentes?

Os cartões inteligentes são tokens que contêm microprocessadores e capacidade de memória suficiente para
armazenar dados, a fim de dificultar sua utilização por outras pessoas que não seus proprietários legítimos.
O primeiro cartão inteligente, patenteado em 1975, foi o de Roland Moreno, considerado o pai do cartão
inteligente.

Comparado ao cartão magnético, que é um simples dispositivo de memória, o cartão inteligente não só pode
armazenar informações para serem lidas, mas também é capaz de processar informações. Sua clonagem é
mais difícil e a maioria dos cartões inteligentes ainda oferece criptografia.

Normalmente o usuário de cartão inteligente precisa fornecer uma senha à leitora de cartão para que o acesso
seja permitido, como uma medida de proteção a mais contra o roubo de cartões.

97
As instituições bancárias, financeiras e governamentais são os principais usuários dessa tecnologia, em função
de seus benefícios em relação à segurança de informações e pela possibilidade de redução de custos de
instalações e de pessoal, como, por exemplo, a substituição dos guichês de atendimento ao público nos bancos
por caixas eletrônicos. Os cartões inteligentes têm sido usados em diversas aplicações: cartões bancários,
telefônicos e de crédito, dinheiro eletrônico, segurança de acesso, carteiras de identidade.

O que são sistemas biométricos?

Os sistemas biométricos são sistemas automáticos de verificação de identidade baseados em características


físicas do usuário. Esses sistemas têm como objetivo suprir deficiências de segurança das senhas, que podem
ser reveladas ou descobertas, e das tokens, que podem ser perdidas ou roubadas.

Os sistemas biométricos automáticos são uma evolução natural dos sistemas manuais de reconhecimento
amplamente difundidos há muito tempo, como a análise grafológica de assinaturas, a análise de impressões
digitais e o reconhecimento de voz. Hoje já existem sistemas ainda mais sofisticados, como os sistemas de
análise da conformação dos vasos sanguíneos na retina.

Que características humanas podem ser verificadas por sistemas biométricos?

Teoricamente, qualquer característica humana pode ser usada como base para a identificação biométrica. Na
prática, entretanto, existem algumas limitações. A tecnologia deve ser capaz de medir determinada
característica de tal forma que o indivíduo seja realmente único, distinguindo inclusive gêmeos, porém não
deve ser invasiva ou ferir os direitos dos indivíduos.

Um dos problemas enfrentados pelos sistemas biométricos atuais é sua alta taxa de erro, em função da
mudança das características de uma pessoa com o passar dos anos, ou devido a problemas de saúde ou o
próprio nervosismo, por exemplo. A tolerância a erros deve ser estabelecida com precisão, de forma a não ser
grande o suficiente para admitir impostores, nem pequena demais a ponto de negar acesso a usuários
legítimos. Abaixo serão apresentadas algumas características humanas verificadas por sistemas biométricos
existentes:
- Impressões digitais: são características únicas e consistentes. Nos sistemas biométricos que utilizam essa
opção, são armazenados de 40 a 60 pontos para verificar uma identidade. O sistema compara a impressão
lida com impressões digitais de pessoas autorizadas, armazenadas em sua base de dados. Atualmente, estão
sendo utilizadas impressões digitais em alguns sistemas governamentais, como, por exemplo, o sistema de
previdência social na Espanha e o de registro de eleitores na Costa Rica;

- Voz: os sistemas de reconhecimento de voz são usados para controle de acesso, porém não são tão
confiáveis como as impressões digitais, em função dos erros causados por ruídos do ambiente e de problemas
de garganta ou nas cordas vocais das pessoas a eles submetidas;

- Geometria da mão: também é usada em sistemas de controle de acesso, porém essa característica pode
ser alterada por aumento ou diminuição de peso ou pela artrite;

- Configuração da íris e da retina: os sistemas que utilizam essas características se propõem a efetuar
identificação mais confiável do que os sistemas que verificam impressões digitais.
Entretanto, são sistemas invasivos, pois direcionam feixes de luz aos olhos das pessoas que se submetem à
sua identificação;

- Reconhecimento facial através de termogramas: o termograma facial é uma imagem captada por uma
câmera infravermelha que mostra os padrões térmicos de uma face.
Essa imagem é única e, combinada com algoritmos sofisticados de comparação de diferentes níveis de
temperatura distribuídos pela face, constitui-se em uma técnica não-invasiva, altamente confiável, não sendo
afetada por alterações de saúde, idade ou temperatura do corpo. São armazenados ao todo 19.000 pontos de
identificação, podendo distinguir gêmeos idênticos, mesmo no escuro. O desenvolvimento dessa tecnologia
tem como um de seus objetivos baratear seu custo para que possa ser usada em um número maior de
aplicações de identificação e de autenticação.

Como restringir o acesso aos recursos informacionais?

98
O fato de um usuário ter sido identificado e autenticado não quer dizer que ele poderá acessar qualquer
informação ou aplicativo sem qualquer restrição. Deve-se implementar um controle específico, restringindo o
acesso dos usuários apenas às aplicações, arquivos e utilitários imprescindíveis para desempenhar suas
funções na organização. Esse controle pode ser feito por menus, funções ou arquivos.

Para que servem os controles de menu?

Os controles de menu podem ser usados para restringir o acesso de diferentes categorias de usuários apenas
àqueles aplicativos ou utilitários indispensáveis a cada categoria.

Por exemplo, em um sistema de folha de pagamento, poderá ser apresentado um menu inicial com três opções
diferentes: funcionário, gerente e setor de recursos humanos.

Nesse caso, o administrador do sistema deverá conceder acesso a cada uma das opções de acordo com a
função desempenhada pelo usuário. Portanto, o funcionário só terá acesso a dados da sua folha de pagamento
pessoal, enquanto que o gerente poderá ter acesso a algumas informações da folha de seus funcionários. O
setor de recursos humanos, para poder alimentar a base de dados de pagamento, obterá um nível diferente
de acesso e sua interação com o sistema será feita a partir de menus próprios para a administração de pessoal.

Os menus apresentados após a seleção de uma das opções (funcionário, gerente ou setor de recursos
humanos) serão, portanto, diferentes.

Para que servem os controles de funções de aplicativos?

No que diz respeito às funções internas dos aplicativos, os respectivos proprietários deverão definir quem
poderá acessá-las e como, por meio de autorização para uso de funções específicas ou para restrição de
acesso às funções de acordo com o usuário (menus de acesso predefinidos), horário ou tipo de recursos
(impressoras, fitas backup).

Como proteger arquivos?

A maioria dos sistemas operacionais possui mecanismos de controle de acesso que definem as permissões e
os privilégios de acesso para cada recurso ou arquivo no sistema.

Quando um usuário tenta acessar um recurso, o sistema operacional verifica se as definições de acesso desse
usuário e do recurso desejado conferem. O usuário só conseguirá o acesso se essa verificação for positiva.
Para garantir a segurança lógica, pode-se especificar dois tipos de controle, sob óticas diferentes:
- O que um sujeito pode fazer; ou
- O que pode ser feito com um objeto.

O que são direitos e permissões de acesso?

Definir direitos de acesso individualmente para cada sujeito e objeto pode ser uma maneira um tanto trabalhosa
quando estiverem envolvidas grandes quantidades de sujeitos e objetos. A forma mais comum de definição de
direitos de acesso, nesse caso, é a matriz de controle de acesso. Nessa matriz pode-se fazer duas análises:
uma em relação aos sujeitos; outra, em relação aos objetos.

Na primeira abordagem, cada sujeito recebe uma permissão (ou capacidade) que define todos os seus direitos
de acesso. As permissões de acesso são, então, atributos, associados a um sujeito ou objeto, que definem o
que ele pode ou não fazer com outros objetos. Essa abordagem, no entanto, é pouco utilizada, já que, na
prática, com grandes quantidades de sujeitos e objetos, a visualização exata de quem tem acesso a um
determinado objeto não é tão clara, comprometendo, assim, a gerência de controle de acesso.

Na segunda abordagem, os direitos de acesso são armazenados com o próprio objeto formando a chamada
lista de controle de acesso (Access Control List (ACL)).

O que são listas de controle de acesso?

99
Enquanto a permissão de acesso define o que um objeto pode ou não fazer com outros, a lista de controle de
acesso define o que os outros objetos ou sujeitos podem fazer com o objeto a ela associado. As listas de
controle de acesso nada mais são do que bases de dados, associadas a um objeto, que descrevem os
relacionamentos entre aquele objeto e outros, constituindo-se em um mecanismo de garantia de
confidencialidade e integridade de dados.

A definição das listas de controle de acesso deve ser sempre feita pelos proprietários dos recursos, os quais
determinam o tipo de proteção adequada a cada recurso e quem efetivamente terá acesso a eles.
A gerência das listas de controle de acesso, na prática, também é complicada. Para reduzir os problemas de
gerenciamento dessas listas e o espaço de memória ou disco por elas ocupado, costuma-se agrupar os sujeitos
com características semelhantes ou direitos de acesso iguais. Dessa forma, os direitos de acesso são
associados a grupos, e não a sujeitos individualizados. Vale ressaltar que um sujeito pode pertencer a um ou
mais grupos, de acordo com o objeto a ser acessado.

Como monitorar o acesso aos recursos informacionais?

O monitoramento dos sistemas de informação é feito, normalmente, pelos registros de log, trilhas de auditoria
ou outros mecanismos capazes de detectar invasões. Esse monitoramento é essencial à equipe de segurança
de informações, já que é praticamente impossível eliminar por completo todos os riscos de invasão por meio
da identificação e autenticação de usuários.

Na ocorrência de uma invasão, falha do sistema ou atividade não autorizada, é imprescindível reunir evidências
suficientes para que possam ser tomadas medidas corretivas necessárias ao restabelecimento do sistema às
suas condições normais, assim como medidas administrativas e/ ou judiciais para investigar e punir os
invasores.

A forma mais simples de monitoramento é a coleta de informações, sobre determinados eventos, em arquivos
históricos, mais conhecidos como logs. Com essas informações, a equipe de segurança é capaz de registrar
eventos e de detectar tentativas de acesso e atividades não autorizadas após sua ocorrência.

O que são logs?

Os logs são registros cronológicos de atividades do sistema que possibilitam a reconstrução, revisão e análise
dos ambientes e das atividades relativas a uma operação, procedimento ou evento, acompanhados do início
ao fim.

Os logs são utilizados como medidas de detecção e monitoramento, registrando atividades, falhas de acesso
(tentativas frustradas de logon ou de acesso a recursos protegidos) ou uso do sistema operacional, utilitários
e aplicativos, e detalhando o que foi acessado, por quem e quando. Com os dados dos logs, pode-se identificar
e corrigir falhas da estratégia de segurança. Por conterem informações essenciais para a detecção de acesso
não autorizado, os arquivos de log devem ser protegidos contra alteração ou destruição por usuários ou
invasores que queiram encobrir suas atividades.

O que deve ser registrado em logs?

Devido à grande quantidade de dados armazenada em logs, deve-se levar em consideração que seu uso pode
degradar o desempenho dos sistemas. Sendo assim, é aconselhável balancear a necessidade de registro de
atividades críticas e os custos, em termos de desempenho global dos sistemas.

Normalmente, os registros de log incluem:


- Identificação dos usuários;
- Datas e horários de entrada (logon) e saída do sistema (logoff);
- Identificação da estação de trabalho e, quando possível, sua localização;
- Registros das tentativas de acesso (aceitas e rejeitadas) ao sistema;
- Registros das tentativas de acesso (aceitas e rejeitadas) a outros recursos e dados.

Ao definir o que será registrado, é preciso considerar que quantidades enormes de registros podem ser
inviáveis de serem monitoradas. Nada adianta ter um log se ele não é periodicamente revisado. Para auxiliar
a gerência de segurança na árdua tarefa de análise de logs, podem ser previamente definidas trilhas de

100
auditoria mais simples e utilizados softwares especializados disponíveis no mercado, específicos para cada
sistema operacional.

Outros controles de acesso lógico

Outro recurso de proteção bastante utilizado em alguns sistemas é o time-out automático, isto é, a sessão é
desativada após um determinado tempo sem qualquer atividade no terminal ou computador. Para restaurá-la,
o usuário é obrigado a fornecer novamente seu ID e senha. Em alguns sistemas operacionais, o próprio
usuário, após sua habilitação no processo de logon, pode ativar e desativar essa função de time-out. Nesse
sentido, os usuários devem ser orientados a:
- Encerrar as sessões ativas, a menos que elas possam ser protegidas por mecanismo de bloqueio (por
exemplo, proteção de tela com senha);
- No caso de terminal conectado ao computador de grande porte, efetuar a desconexão quando a sessão for
finalizada (não apenas desligar o terminal, mas utilizar o procedimento para desconexão).

Como controle de acesso lógico, a gerência de segurança pode ainda limitar o horário de uso dos recursos
computacionais de acordo com a real necessidade de acesso aos sistemas. Pode-se, por exemplo, desabilitar
o uso dos recursos nos fins de semana ou à noite.

É usual também limitar a quantidade de sessões concorrentes, impedindo que o usuário consiga entrar no
sistema ou na rede a partir de mais de um terminal ou computador simultaneamente. Isso reduz os riscos de
acesso ao sistema por invasores, pois se o usuário autorizado já estiver conectado, o invasor não poderá entrar
no sistema. Da mesma forma, se o invasor estiver logado, o usuário autorizado, ao tentar se conectar,
identificará que sua conta já está sendo usada e poderá notificar o fato à gerência de segurança.

Onde as regras de controle de acesso são definidas?

As regras de controle e direitos de acesso para cada usuário ou grupo devem estar claramente definidas no
documento da política de controle de acesso da instituição, o qual deverá ser fornecido aos usuários e
provedores de serviço para que tomem conhecimento dos requisitos de segurança estabelecidos pela
gerência.

O que considerar na elaboração da política de controle de acesso?

A política de controle de acesso deve levar em conta:


- Os requisitos de segurança de aplicações específicas do negócio da instituição;
- A identificação de toda informação referente às aplicações de negócio;
- As políticas para autorização e distribuição de informação (por exemplo, a necessidade de conhecer os
princípios e níveis de segurança, bem como a classificação da informação);
- A compatibilidade entre o controle de acesso e as políticas de classificação da informação dos diferentes
sistemas e redes;
- A legislação vigente e qualquer obrigação contratual, considerando a proteção do acesso a dados ou serviços;
- O perfil de acesso padrão para categorias de usuários comuns;
O gerenciamento dos direitos de acesso em todos os tipos de conexões disponíveis em um ambiente
distribuído conectado em rede.

Que cuidados devem ser tomados na definição das regras de controle de acesso?

Ao especificar as regras de controle de acesso, devem ser considerados os seguintes aspectos:


- Diferenciar regras que sempre devem ser cumpridas das regras opcionais ou condicionais;
- Estabelecer regras baseadas na premissa “Tudo deve ser proibido a menos que expressamente permitido”
ao invés da regra “Tudo é permitido a menos que expressamente proibido”;
- Diferenciar as permissões de usuários que são atribuídas automaticamente por um sistema de informação
daquelas atribuídas por um administrador;
- Priorizar regras que necessitam da aprovação de um administrador antes da liberação daquelas que não
necessitam de tal aprovação.

Que tipo de regras de controle de acesso devem ser formalizadas na política?

101
O acesso aos sistemas de informação deve ser controlado por um processo formal, o qual deverá abordar,
entre outros, os seguintes tópicos:
- Utilização de um identificador de usuário (ID) único, de forma que cada usuário possa ser identificado e
responsabilizado por suas ações;
- Verificação se o usuário obteve autorização do proprietário do sistema de informação ou serviço para sua
utilização;
- Verificação se o nível de acesso concedido ao usuário está adequado aos propósitos do negócio e consistente
com política de segurança da organização;
- Fornecimento, aos usuários, de documento escrito com seus direitos de acesso. Os usuários deverão assinar
esse documento, indicando que entenderam as condições de seus direitos de acesso;
- Manutenção de um registro formal de todas as pessoas cadastradas para usar cada sistema de informações;
- Remoção imediata dos direitos de acesso de usuários que mudarem de função ou saírem da organização;
- Verificação periódica da lista de usuários, com intuito de remover usuários inexistentes e IDs em duplicidade;
- Inclusão de cláusulas nos contratos de funcionários e prestadores de serviço, que especifiquem as sanções
a que estarão sujeitos em caso de tentativa de acesso não autorizado.

Quem é o responsável pelos controles de acesso lógico?

A responsabilidade sobre os controles de acesso lógico pode ser tanto do gerente do ambiente operacional
como dos proprietários (ou gerentes) de aplicativos. O gerente do ambiente operacional deve controlar o
acesso à rede, ao sistema operacional e seus recursos e, ainda, aos aplicativos e arquivos de dados. É
responsável, assim, por proteger os recursos do sistema contra invasores ou funcionários não autorizados.

Enquanto isso, os proprietários dos aplicativos são responsáveis por seu controle de acesso, identificando
quem pode acessar cada um dos sistemas e que tipo de operações pode executar. Por conhecerem bem o
sistema aplicativo sob sua responsabilidade, os proprietários são as pessoas mais indicadas para definir
privilégios de acesso de acordo com as reais necessidades dos usuários.

Dessa forma, as responsabilidades sobre segurança de acesso são segregadas entre o gerente do ambiente
operacional de informática e os gerentes de aplicativos.

Em que os usuários podem ajudar na implantação dos controles de acesso lógico?

A cooperação dos usuários autorizados é essencial para a eficácia da segurança. Os usuários devem estar
cientes de suas responsabilidades para a manutenção efetiva dos controles de acesso, considerando,
particularmente, o uso de senhas e a segurança dos equipamentos de informática que costumam utilizar.

Análise estática de código fonte


A análise de código para fins de segurança é uma das alternativas bastante utilizadas pelo mercado para o
desenvolvimento de software seguro. Sua difusão se deve primeiro aos resultados, em termos de localização
de bugs de segurança em código e, segundo, pela facilidade de incorporação ao ciclo de desenvolvimento,
uma vez que as principais ferramentas se integram às IDEs mais usadas hoje, como o Eclipse e o Visual Studio
da Microsoft.

Todas as ferramentas comerciais existentes se fundamentam no mesmo princípio, regras e padrões de


codificação suspeitos. Isso as tornam muito dependentes da ação humana. Num primeiro momento, para
desenhar essas regras a partir de muita pesquisa e depois, para avaliar o resultado de uma análise de código.
As ferramentas de análise de código fundamentam ao Teorema de Rice, que coloca que qualquer questão não
trivial endereçada a um programa pode ser reduzido ao Problema de Halting, isso implica que os problemas
de análise de código são insolúveis no pior caso e, por consequência, que essas ferramentas são obrigadas a
fazer aproximação, cujo resultado é algo não perfeito.

Os principais problemas das ferramentas de análise de código fonte para segurança estão concentradas em:
- Falso negativo: o programa contém bugs não endereçados pela ferramenta. Isso dá a falsa sensação de
que não existe bugs, que na verdade significa que a ferramenta não foi capaz de encontrar mais exemplares;

- Falso positivo: a ferramenta endereça bugs não existentes. Isso se refere a duas possibilidades: um erro
propriamente dito, onde a ferramenta localizou um bug que não existe fisicamente; ou há uma classificação da
ferramenta incoerente com as variáveis do ambiente. Por exemplo, a ferramenta poderia encontrar um bug de

102
SQL Injection, que na realidade, não interessa para o software investigado pelas suas características de
operação.

Vale ressaltar que as ferramentas comerciais procuram reduzir o falso positivo, assumindo o custo de deixar
passar falsos negativos.

As análises de código fonte podem ser divididas de acordo com as seguintes abordagens:
- Análise estática: a análise estática pode compreender as técnicas de busca direta a partir de lista de strings
(grep); a análise léxica, onde os tokens do código fonte são comparados com àqueles contidos numa biblioteca
de vulnerabilidades e análise semântica, onde se prevê como o programa se comportará em tempo de
execução, usando a tecnologia de compiladores (árvore sintática abstrata);
- Análise de fluxo de controle: usada para caminhar através das condições lógicas do código. O processo
funciona como a seguir:
- Observe uma função e determine cada condição de desvio. Essas incluem loops, switchs, if's e blocos
try/catch;
- Entenda as condições sobre como cada bloco será executado;
- Vá para a próxima função e repita.
- Análise de fluxo de dados: usada para seguir fluxos de dados dos pontos de entrada aos pontos de saída. O
processo funciona como descrito a seguir:
- Para cada entrada, determine o quanto você acredita na fonte de entrada. Quando em dúvida você não deve
acreditar;
- Siga o fluxo de dados para cada saída possível, registrando ao longo do percurso qualquer tentativa de
validação de dados;
- Vá para a próxima entrada e continue.
A ferramenta mais eficiente é a que consegue fazer uso dessas abordagens combinadas para reduzir tanto o
falso negativo, como o falso positivo. Alguns fornecedores estão na busca por ferramentas efetivas em temos
de análise de código para segurança. Dentre eles, vale destacar:
- Coverity;
- Fortify;
- Ounce Labs;
- Microsoft.
Vale reforçar, que para conseguir tirar o melhor proveito ferramentas de análise de código fonte para
segurança, seu uso deve estar amparado por um ciclo de desenvolvimento seguro, como o CLASP ou SDL.

Visão geral de backup (SQL Server)

Este tópico apresenta o componente de backup do SQL Server. O backup do banco de dados do SQL Server
é essencial para proteger seus dados. Esta discussão abrange tipos de backup e restrições de backup. O
tópico também apresenta dispositivos de backup do SQL Server e mídia de backup.

- fazer backup [verbo]


Copia os dados ou registros de log de um banco de dados do SQL Server ou de seu log de transações para
um dispositivo de backup, como um disco, a fim de criar um backup de dados ou backup de log.

- backup [substantivo]
Uma cópia dos dados do SQL Server que pode ser usada para restaurar e recuperar os dados após uma falha.
Um backup dos dados do SQL Server é criado no nível de um banco de dados ou de um ou mais de seus
arquivos ou grupos de arquivos. Não é possível criar backups no nível da tabela. Além dos backups de dados,
o modelo de recuperação completa requer a criação de backups do log de transações.

- modelo de recuperação
Uma propriedade de banco de dados que controla a manutenção do log de transações em um banco de dados.
Existem três modelos de recuperação: simples, completo e bulk-logged. O modelo de recuperação de banco
de dados determina seus requisitos de backup e de restauração.

- restaurar
Um processo multifase que copia todos os dados e páginas de log de um backup do SQL Server para um
banco de dados especificado e, em seguida, efetua roll-forward de todas as transações registradas no backup,
aplicando as alterações registradas para avançar os dados em tempo.

103
Tipos de backups
- backup somente cópia
Um backup de uso especial que é independente da sequência regular dos backups do SQL Server.

- backup de dados
Um backup de dados em um banco de dados completo (um backup de banco de dados), um banco de dados
parcial (um backup parcial) ou um conjunto de arquivos de dados ou grupos de arquivos (um backup de
arquivo).

- backup de banco de dados


Um backup de um banco de dados. Os backups completos de banco de dados representam todo o banco de
dados no momento em que o backup é concluído. Os backups de banco de dados diferenciais contêm somente
alterações feitas no banco de dados desde seu backup completo de banco de dados mais recente.

- backup diferencial
Um backup de dados que se baseia no backup completo mais recente de um banco de dados completo ou
parcial ou um conjunto de arquivos de dados ou grupos de arquivos (a base diferencial) que contém somente
as extensões de dados alterados desde a base diferencial.
Um backup diferencial parcial registra apenas as extensões de dados que foram alteradas nos grupos de
arquivos desde o backup parcial anterior, conhecido como a base para o diferencial.

- backup completo
Um backup de dados que contém todos os dados em um banco de dados ou em um conjunto de grupos de
arquivos ou arquivos, além de log suficiente para permitir a recuperação desses dados.

- backup de log
Um backup de logs de transações que inclui todos os registros de log dos quais não foi feito backup em um
backup de log anterior. (modelo de recuperação completa)

- backup de arquivo
Um backup de um ou mais arquivos ou grupos de arquivos de banco de dados.

- backup parcial
Contém dados apenas de alguns grupos de arquivos em um banco de dados, incluindo os dados no grupo de
arquivos primário, em cada grupo de arquivos de leitura/gravação e em qualquer arquivo somente leitura
especificado opcionalmente.

Termos e definições de mídia de backup


- dispositivo de backup
Um disco ou dispositivo de fita no qual são gravados backups do SQL Server e nos quais eles podem ser
restaurados. Os backups do SQL Server também podem ser gravados em um serviço de armazenamento do
Blob do Windows Azure. O formato de URL é usado para especificar o destino e o nome do arquivo de backup.

- mídia de backup
Uma ou mais fitas ou arquivos de disco nos quais um ou mais backups foram gravados.

- conjunto de backup
O conteúdo de backup adicionado a um conjunto de mídias por uma operação de backup bem-sucedida.

- família de mídia
Os backups criados em um único dispositivo não espelhado ou um conjunto de dispositivos espelhados em um
conjunto de mídias

- conjunto de mídias
Uma coleção ordenada de mídias de backup, fitas ou arquivos de disco, em que uma ou mais operações de
backup foram gravadas, usando um número e um tipo fixo de dispositivos de backup.

104
- conjunto de mídias espelhado
Várias cópias (espelhos) de um conjunto de mídias.

Termos e definições de mídia de backup


- dispositivo de backup
Um disco ou dispositivo de fita no qual são gravados backups do SQL Server e nos quais eles podem ser
restaurados. Os backups do SQL Server também podem ser gravados em um serviço de armazenamento do
Blob do Windows Azure. O formato de URL é usado para especificar o destino e o nome do arquivo de backup.

- mídia de backup
Uma ou mais fitas ou arquivos de disco nos quais um ou mais backups foram gravados.

- conjunto de backup
O conteúdo de backup adicionado a um conjunto de mídias por uma operação de backup bem-sucedida.

- família de mídia
Os backups criados em um único dispositivo não espelhado ou um conjunto de dispositivos espelhados em um
conjunto de mídias

- conjunto de mídias
Uma coleção ordenada de mídias de backup, fitas ou arquivos de disco, em que uma ou mais operações de
backup foram gravadas, usando um número e um tipo fixo de dispositivos de backup.

- conjunto de mídias espelhado


Várias cópias (espelhos) de um conjunto de mídias.

Fazer backup e restaurar bancos de dados do SQL Server

O componente de backup e restauração do SQL Server oferece uma proteção essencial para dados críticos
armazenados em bancos de dados do SQL Server. Para minimizar o risco de perda de dados catastrófica,
você precisa fazer backup dos bancos de dados para preservar as modificações feitas nos dados regularmente.
Uma estratégia de backup e restauração bem-planejada ajuda a proteger bancos de dados contra perda de
dados causada por várias falhas. Teste sua estratégia restaurando um conjunto de backups e recuperando
depois seu banco de dados para se preparar para responder com eficiência a um desastre.
Além do armazenamento local para guardar os backups, o SQL Server também oferece suporte ao backup e
à restauração no serviço de armazenamento de Blob do Windows Azure. .

Benefícios

O backup dos bancos de dados do SQL Server, a execução de procedimentos de restauração de teste nos
backups e o armazenamento de cópias de backups em um local externo seguro evita a perda de dados
potencialmente catastrófica.
Com backups válidos de um banco de dados, você pode recuperar seus dados de muitas falhas, como:
- Falha de mídia.
- Por exemplo, erros de usuário, que removem uma tabela por engano.
- Por exemplo, problemas de hardware, uma unidade de disco danificada ou perda permanente de um servidor.
- Desastres naturais. Ao usar o Backup do SQL Server para serviço de armazenamento de Blob do Windows
Azure, é possível criar um backup externo em uma região diferente daquela do seu local, para usar no caso de
um desastre natural afetar seu local.
Além disso, os backups de um banco de dados são úteis para fins administrativos rotineiros, como copiar um
banco de dados de um servidor para outro, configurar o espelhamento do banco de dados ou Grupos de
Disponibilidade AlwaysOn e fazer arquivamento.

Componentes e conceitos
- fazer backup [verbo]
Copia os dados ou registros de log de um banco de dados do SQL Server ou de seu log de transações para
um dispositivo de backup, como um disco, a fim de criar um backup de dados ou backup de log.

105
- backup [substantivo]
Uma cópia dos dados que podem ser usados para restaurar e recuperar os dados após uma falha. Os backups
de um banco de dados também podem ser usados para restaurar uma cópia do banco de dados em um novo
local.

- dispositivo de backup
Um disco ou dispositivo de fita no qual os backups do SQL Server serão gravados e nos quais eles poderão
ser restaurados. Os backups do SQL Server também podem ser gravados em um serviço de armazenamento
do Blob do Windows Azure. O formato de URL é usado para especificar o destino e o nome do arquivo de
backup.

- mídia de backup
Uma ou mais fitas ou arquivos de disco nos quais um ou mais backups foram gravados.

- backup de dados
Um backup de dados em um banco de dados completo (um backup de banco de dados), um banco de dados
parcial (um backup parcial) ou um conjunto de arquivos de dados ou grupos de arquivos (um backup de
arquivo).

- backup de banco de dados


Um backup de um banco de dados. Os backups completos de banco de dados representam todo o banco de
dados no momento em que o backup é concluído. Os backups de banco de dados diferenciais contêm somente
alterações feitas no banco de dados desde seu backup completo de banco de dados mais recente.

- backup diferencial
Um backup de dados que se baseia no backup completo mais recente de um banco de dados completo ou
parcial ou um conjunto de arquivos de dados ou grupos de arquivos (a base diferencial) que contém somente
os dados alterados desde essa base.

- backup completo
Um backup de dados que contém todos os dados em um banco de dados ou em um conjunto de grupos de
arquivos ou arquivos, além de log suficiente para permitir a recuperação desses dados.

- backup de log
Um backup de logs de transações que inclui todos os registros de log dos quais não foi feito backup em um
backup de log anterior. (Modelo de recuperação completa)

- recuperação
Para retornar um banco de dados a um estado estável e consistente.

- recuperação
Uma fase de inicialização de banco de dados ou de restauração com recuperação que coloca o banco de
dados em um estado de transação consistente.

- modelo de recuperação
Uma propriedade de banco de dados que controla a manutenção do log de transações em um banco de dados.
Existem três modelos de recuperação: simples, completo e bulk-logged. O modelo de recuperação de banco
de dados determina seus requisitos de backup e de restauração.

- restaurar
Um processo multifase que copia todos os dados e páginas de log de um backup do SQL Server para um
banco de dados especificado e, em seguida, efetua roll forward de todas as transações registradas no backup,
aplicando as alterações registradas para avançar os dados no tempo.

Introdução às estratégias de backup e restauração

O backup e a restauração dos dados devem ser personalizados em um ambiente específico e devem funcionar
com os recursos disponíveis. Portanto, um uso confiável de backup e restauração para recuperação requer
uma estratégia de backup e restauração. Uma estratégia de backup e restauração bem-planejada maximiza a

106
disponibilidade dos dados e minimiza a perda de dados, considerando, ao mesmo tempo, seus requisitos
empresariais específicos.

Coloque o banco de dados e os backups em dispositivos separados. Caso contrário, se o dispositivo que
contém o banco de dados falhar, seus backups ficarão indisponíveis. Colocar os dados e backups em
dispositivos separados também aprimora o desempenho de E/S dos backups gravados e o uso de produção
do banco de dados.

Uma estratégia de backup e restauração contém uma parte de backup e uma parte de restauração. A parte de
backup da estratégia define o tipo e a frequência dos backups, a natureza e velocidade do hardware exigido
para eles, como os backups serão testados, e onde e como a mídia de backup deve ser armazenada (incluindo
considerações de segurança). A parte de restauração da estratégia define quem é responsável pela execução
da restauração e como a restauração deve ser executada para atender às metas de disponibilidade do banco
de dados e minimizar perda de dados. Recomendamos que você documente seus procedimentos de backup
e restauração e mantenha uma cópia da documentação em seu livro de execuções.

O design de uma estratégia de backup e restauração eficaz requer planejamento, implementação e teste
cuidadosos. O teste é obrigatório. Não existirá uma estratégia de backup até que você tenha restaurado com
êxito os backups em todas as combinações incluídas na estratégia de restauração. Você deve considerar uma
variedade de fatores. Eles incluem o seguinte:
- As metas de produção de sua organização para os bancos de dados, especialmente os requisitos para
disponibilidade e proteção contra perda de dados.
- A natureza de cada um dos seus bancos de dados: o tamanho, os padrões de uso, a natureza de seu
conteúdo, os requisitos dos dados, e assim por diante.
- Restrições de recursos, como hardware, pessoal, espaço para armazenagem de mídia de backup, a
segurança física da mídia armazenada, e assim por diante.

O formato de armazenamento do SQL Server em disco é o mesmo nos ambientes de 64 bits e 32 bits. Portanto,
backup e restauração funcionam em ambientes de 32 bits e 64 bits. Um backup criado em uma instância de
servidor executada em um ambiente pode ser restaurado em uma instância de servidor executada em outro
ambiente.

Impacto do modelo de recuperação no backup e na restauração

As operações de backup e restauração ocorrem dentro do contexto de um modelo de recuperação. Um modelo


de recuperação é uma propriedade de banco de dados que controla a forma de gerenciamento do log de
transações. Além disso, o modelo de recuperação de um banco de dados determina para quais tipos de
backups e cenários de restauração o banco de dados oferece suporte. Geralmente, um banco de dados usa o
modelo de recuperação simples ou o modelo de recuperação completa. O modelo de recuperação completa
pode ser suplementado alternando para o modelo de recuperação bulk-logged antes das operações em massa.

A melhor escolha do modelo de recuperação para o banco de dados depende de seus requisitos empresariais.
Para evitar gerenciamento de log de transações e simplificar o backup e a restauração, use o modelo de
recuperação simples. Para minimizar exposição à perda de trabalho, às custas de uma sobrecarga
administrativa, use o modelo de recuperação completa.

Planejar a estratégia de backup

Depois de selecionar um modelo de recuperação que satisfaça seus requisitos empresariais para um banco
de dados específico, você precisa planejar e implementar uma estratégia de backup correspondente. A melhor
estratégia de backup depende de uma série de fatores, dos quais os seguintes são especialmente
significativos:

Quantas horas ao dia os aplicativos precisam acessar o banco de dados?

Se houver um período de pouca atividade previsível, recomendamos que você agende backups de banco de
dados completos para aquele período.

Com que frequência as alterações e atualizações deverão ocorrer?

107
Se as alterações forem frequentes, considere o seguinte:
No modelo de recuperação simples, agende backups diferenciais entre os backups de banco de dados
completos. Um backup diferencial captura só as alterações desde o último backup completo do banco de
dados.

No modelo de recuperação completa, você deve agendar backups de log frequentes. O agendamento de
backups diferenciais entre backups completos pode reduzir o tempo de restauração reduzindo o número de
backups de log a serem restaurados após a restauração dos dados.

As alterações ocorrem geralmente em uma pequena parte do banco de dados ou em uma


grande parte do banco de dados?

Para um banco de dados grande no qual mudanças estão concentradas em uma parte dos arquivos ou grupos
de arquivos, backups parciais e backups de arquivo podem ser úteis

Quanto espaço em disco é necessário para um backup completo de banco de dados?

Estimar o tamanho de um backup de banco de dados completo


Antes de implementar uma estratégia de backup e restauração, calcule quanto espaço em disco um backup
de banco de dados completo usará. A operação de backup copia os dados no banco de dados para o arquivo
de backup. O backup contém só os dados reais no banco de dados e não qualquer espaço não utilizado.
Portanto, o backup é geralmente menor do que o próprio banco de dados. Você pode estimar o tamanho de
um backup de banco de dados completo usando o procedimento armazenado do sistema sp_spaceused. Para
obter mais informações, consulte sp_spaceused (Transact-SQL).

Agendar backups

A execução do backup tem um efeito mínimo sobre as transações em andamento; portanto, as operações de
backup podem ser realizadas durante a operação regular. Você pode executar um backup do SQL Server com
um efeito mínimo sobre as cargas de trabalho de produção.

Depois de decidir os tipos de backups necessários e a frequência de execução de cada tipo, recomendamos
que você agende backups regulares como parte de um plano de manutenção de banco de dados para o banco
de dados.

Testar seus backups

Não existirá uma estratégia de restauração até que você tenha testado seus backups. É muito importante testar
sua estratégia de backup completamente para cada um dos bancos de dados, restaurando uma cópia do banco
de dados em um sistema de teste. É necessário testar a restauração de cada tipo de backup que você pretende
usar.

Recomendamos que você mantenha um manual de operações para cada banco de dados. Esse manual
operacional deve documentar o local dos backups, os nomes do dispositivo de backup (se houver) e o tempo
necessário para restaurar os backups de teste

Coletânea de Exercícios I
Gabarito: no final da Coletânea de exercícios
01) Há uma tecnologia que é empregada sobre grandes volumes de dados para descobrir novas
informações em função de regras e padrões existentes nesses dados. Normalmente, tais informações
não são obtidas simplesmente consultando os dados armazenados em bancos de dados. Por exemplo:
uma das maiores redes de varejo dos Estados Unidos descobriu, em seu enorme banco de dados, por
meio do uso dessa tecnologia, que o aumento das vendas de fraldas descartáveis, nas sextas-feiras,
estava relacionada às vendas de cerveja, sendo que, geralmente, os compradores eram homens. Como
oportunidade de negócio, a rede varejista colocou os produtos lado a lado, resultando em um aumento
expressivo nas vendas de ambos os produtos. Para obter tais descobertas, essa tecnologia usa

108
diversas técnicas, tais como associação, classificação e predição, dentre outras. Nesse caso, essa
tecnologia é chamada de:
A) Data Mart.
B) Data mining.
C) Data Warehouse
D) Business intelligence.
E) OLAP.

02) Uma das técnicas bastante utilizadas em sistemas de apoio à decisão é o Data Mining, que se
constitui em uma técnica
A) para a exploração e análise de dados, visando descobrir padrões e regras, a pr incípio ocultos, importantes
à aplicação.
B) ara se realizar a criptografia inteligente de dados, objetivando a proteção da informação.
C) que visa sua distribuição e replicação em um cluster de servidores, visando aprimorar a disponibilidade de
dados.
D) de compactação de dados, normalmente bastante eficiente, permitindo grande desempenho no
armazenamento de dados.
E) de transmissão e recepção de dados que permite a comunicação entre servidores, em tempo real.

03) Na técnica de árvore de decisão em data mining, é empregada a abordagem denominada


A) análise de volumetria.
B) combinação de variáveis.
C) estratificação.
D) avaliação de dados.
E) percepção.

04) Identifique, dentre os itens abaixo, os que podem ser utilizadas por processos e sistemas de data
mining.
1. Criptografia assíncrona
2. Inteligência artificial
3. Machine learning
4. Estatística
5. Algoritmos genéticos
Assinale a alternativa que indica todos os itens corretos.
A) São corretos apenas os itens 2, 3 e 4.
B) São corretos apenas os itens 2, 3 e 5.
C) São corretos apenas os itens 1, 2, 3 e 5.
D) São corretos apenas os itens 2, 3, 4 e 5.
E) São corretos os itens 1, 2, 3, 4 e 5.

05) As técnicas de mineração de dados podem ser categorizadas em supervisionadas e não


supervisionadas.
As técnicas de árvores de decisão, agrupamento e regras de associação são categorizadas,
respectivamente, como
A) não supervisionada, não supervisionada, não supervisionada
B) não supervisionada, supervisionada e não supervisionada
C) supervisionada, não supervisionada e não supervisionada
D) supervisionada, não supervisionada e supervisionada
E) supervisionada, supervisionada e supervisionada

06) Dentre os algoritmos utilizados em data mining, há um algoritmo que visa o estabelecimento de
categorias, a partir do conjunto de dados, bem como a distribuição dos dados nas categorias
estabelecidas. Essa descrição corresponde aos algoritmos de
A) classificação.
B) sumarização.
C) visualização.
D) evolução.
E) detecção de desvios.

07) A respeito das técnicas e(ou) métodos de mineração de dados, assinale a opção correta.

109
A) O agrupamento (ou clustering) realiza identificação de grupos de dados que apresentam coocorrência.
B) A classificação realiza o aprendizado de uma função que pode ser usada para mapear os valores associados
aos dados em um ou mais valores reais.
C) A regressão ou predição promove o aprendizado de uma função que pode ser usada para mapear dados
em uma de várias classes discretas definidas previamente, bem como encontrar tendências que possam ser
usadas para entender e explorar padrões de comportamento dos dados.
D) As regras de associação identificam grupos de dados, em que os dados têm características semelhantes
aos do mesmo grupo e os grupos têm características diferentes entre si.
E) Os métodos de classificação supervisionada podem ser embasados em separabilidade (entropia), utilizando
árvores de decisão e variantes, e em particionamento, utilizando SVM (support vector machines).

08) Os termos Business Intelligence (BI) e Big Data confundem-se em certos aspectos. Uma conhecida
abordagem para identificação dos pontos críticos de cada paradigma é conhecida como 3V, e destaca:
A) variedade, visualização, volume;
B) velocidade, virtualização, volume;
C) variedade, velocidade, volume;
D) virtualização, visualização, volume;
E) variedade, visualização, virtualização.

09) Big Data se refere ao imenso volume de conjuntos de dados que alcançam elevadas ordens de
magnitude. O valor real do Big Data está no insight que ele produz quando analisado — buscando
padrões, derivando significado, tomando decisões e, por fim, respondendo ao mundo com inteligência.
Referente ao Big Data, é correto afirmar que o termo variedade refere-se
A) a um conjunto de dados mais diversos, incluindo dados estruturados, semiestruturados e não estruturados.
É heterogêneo e vem em muitos formatos, incluindo texto, documento, imagem, vídeo e outros.
B) a banco de dados homogêneo que trata de informações do mesmo tipo definindo padrões de segurança.
C) a um conjunto de dados que são gerados em tempo real, o que requer a oferta imediata de informações
úteis.
D) aos data centers físicos que transformam os dados em informações pertinentes ao negócio.
E) ao controle de dados semiestruturados de formatos definidos como texto e números.

10) No âmbito da ciência de dados na definição de Big Data, utilizam-se características ou atributos que
alguns pesquisadores adotam como sendo os cinco Vs. Porém, a base necessária para o
reconhecimento de Big Data é formada por três propriedades:
A) valor, velocidade e volume.
B) valor, veracidade e volume.
C) variedade, velocidade e volume.
D) variedade, valor e volume.
E) velocidade, veracidade e volume.

11) Assinale a alternativa que NÃO corresponde a um Sistema Gerenciador de Banco de Dados.
A) MySQL.
B) Oracle.
C) Microsoft SQL Server.
D) Firebird.
E) Firefox.

12) Em relação ao Gerenciamento de transações, toda transação depende de quatro propriedades


básicas, que são conhecidas como:
A) Atomicidade, Inconsistência, Depuração e Fluxo.
B) Atomicidade, Filtragem, Algoritmo e Refluxo
C) Atomicidade, Consistência, Isolamento e Durabilidade.
D) Consistência, Criptografia, Byte de Paridade e Fluxograma.
E) Consistência, Assinatura digital, Chave Hash e Derivação Estruturada.

13) Ao se atribuir nomes a tabelas e a seus atributos, é recomendável seguir algumas regras e/ou
recomendações básicas, importantes na documentação de um banco de dados. Umas dessas regras
e/ou recomendações consiste em utilizar
A) acrônimos de conhecimento restrito na própria empresa.
B) o mesmo nome para as chaves primárias de todas as tabelas.

110
C) nomes longos para todos os atributos, com no mínimo 20 caracteres em cada nome.
D) nomenclatura codificada, dificultando acessos indevidos.
E) nomes de tabelas e atributos que indiquem, de forma clara, o conteúdo dos dados armazenados.

14) Com referência a big data, assinale a opção correta.


A) A definição mais ampla de big data restringe o termo a duas partes — o volume absoluto e a velocidade —
, o que facilita a extração das informações e dos insights de negócios.
B) O sistema de arquivos distribuído Hadoop implementa o algoritmo Dijkstra modificado para busca irrestrita
de dados em árvores aglomeradas em clusters com criptografia.
C) Em big data, o sistema de arquivos HDFS é usado para armazenar arquivos muito grandes de forma
distribuída, tendo como princípio o write-many, read-once.
D) Para armazenar e recuperar grande volume de dados, o big data utiliza bancos SQL nativos, que são bancos
de dados que podem estar configurados em quatro tipos diferentes de armazenamentos: valor chave, colunar,
gráfico ou documento.
E) O MapReduce é considerado um modelo de programação que permite o processamento de dados massivos
em um algoritmo paralelo e distribuído.

15) Com relação a Algoritmos e Estrutura de Dados, dadas as afirmações abaixo, segundo Farrer (1999),
assinale a alternativa CORRETA:
A) Python é uma linguagem compilável, a qual, após esse processo, gera um arquivo executável, do tipo
binário.
B) A declaração de variáveis é algo obrigatório em Python.
C) Python é uma linguagem procedural a qual não contempla orientação a objetos.
D) Listas, em Python, são conjuntos de valores, os quais só podem ser do mesmo tipo, acessados por um
índice numérico que inicia em 0 (zero).
E) Em comandos condicionais ou de repetição, a separação de blocos de código em Phyton é feita utilizando
a indentação.

16) Assinale a opção que apresenta a API (application programming interface) disponível para o
desenvolvedor programar a interface de usuário de um aplicativo.
A) gerenciador de recursos
B) gerenciador de atividades
C) provedores de conteúdo
D) gerenciador de notificações
E) sistema de visualização

17) Um dos grandes desafios das empresas é evitar o vazamento de dados. Nesse sentido, surgiram
softwarese sistemas de prevenção de vazamento de dados, Data Loss Prevention (DLP). Considerando
a necessidade de controle das informações da empresa e as soluções de DLP presentes no mercado,
assinale a alternativa correta.
A) DLP tem como principal função impedir o vazamento de grandes volumes de dados.
B) Para que DLP seja implementada, é necessário que a informação crítica da organização esteja classificada.
C) Para a implementação de DLP, é necessário que a organização tenha um firewall de nova geração com
suporte a virtualização.
D) Soluções de DLP atuais somente verificam o protocolo SMTP.
E) O inconveniente dos sistemas DLP é que cada usuário precisa gerar um hash dos seus arquivos e registrá-
los no sistem

18) Bancos de dados textuais oferecem várias técnicas de pesquisa direcionadas para consultas de
textos livres. Uma delas é representada por uma ferramenta capaz de automaticamente, inovar
sinônimos para os argumentos de pesquisa. Assim, o usuário não precisa se lembrar de todos os
termos relevantes relacionados à pesquisa.
Exemplo: se uma consulta for feita para a palavra “automóvel”, podem ser pesquisados,
simultaneamente, os sinônimos “carro” e “veículo”.
Essa técnica é conhecida como:
A) search.
B) connect.
C) wildcards
D) thesaurus.
E) infosphere

111
19) Projeto físico corresponde à etapa da implementação de um banco de dados, no qual o modelo do
BD é enriquecido com detalhes que influenciam no seu desempenho, mas não interferem na sua
funcionalidade. Na prática, é um processo contínuo, que ocorre mesmo depois de o banco de dados já
está implementado e em funcionamento, também conhecido como:
A) tuning.
B) polling.
C) rendering
D) swapping.
E) overlaying.

20) A integridade dos dados é um termo abrangente que inclui, simultaneamente, os conceitos de
consistência, precisão e correção dos dados armazenados em um banco de dados. Um dos tipos de
integridade é caracterizado por meio das condições listadas a seguir.
- É a forma mais elementar de restrição de integridade;
- O valor de um campo deve obedecer ao tipo de dados e às restrições de valores admitidos para a coluna;
- Funciona ao nível da coluna do banco de dados.
O tipo descrito acima é denominado integridade de:
A) tabela.
B) registro.
C) domínio.
D) entidade.
E) instância

21) Em um projeto de banco de dados, a projetista percebeu que uma tabela A precisa de um novo
relacionamento com a tabela B, de modo que a única maneira de concretizar esta conexão é a criação
de uma terceira tabela, independente. Isto significa que a cardinalidade desta nova relação entre A e B
é:
A) um-para-um.
B) um-para-muitos.
C) muitos-para-um
D) muitos-para-muitos.

22) O processo de tunning em bancos de dados consiste em se obter uma estratégia otimizada para a
execução de consultas. Para tanto, em diversos gerenciadores de bancos de dados há um módulo para
a otimização de consultas. Um dos fatores considerados por esse módulo para se avaliar o custo de
uma consulta é o
A) número de acessos ao disco que contém os dados do banco de dados.
B) nome das tabelas que compõem o banco de dados.
C) tipo de senhas utilizadas pelos usuários do banco de dados.
D) tipo de backup utilizado para o banco de dados.
E) tempo total de existência do banco de dados.

23) Na modelagem de bancos de dados relacionais, há um item importante da modelagem, que é o


conceito de chave estrangeira, na qual
A) os atributos que a compõem não admitem o uso da acentuação da língua portuguesa.
B) os atributos que a compõem podem ter origem na chave primária de mais de uma tabela.
C) uma tabela com chave estrangeira não é armazenada no banco de dados.
D) não pode ser aplicada a tabelas com mais de 5 atributos.
E) somente pode ser do tipo numérico.

24) Quando da modelagem de dados de um banco de dados relacional, podem ser utilizados atributos
compostos, sobre os quais é correto afirmar que
A) podem ser decompostos em outros atributos simples ou ainda compostos.
B) são sempre formados por um atributo do tipo numérico e um do tipo literal.
C) não podem conter atributos do tipo booleano em sua formação.
D) não admitem valores nulos em sua composição.
E) fazem parte, obrigatoriamente, da chave primária do conjunto de entidades ao qual são vinculados.

25) Considere

112
I. A fonte de dados de todos os cubos OLAP do Service Manager são os data marts do Operations
Manager, enquanto o Configuration Manager fornece dados em Big Data e CSV, não sendo compatíveis
com OLAP.
II. As informações de autenticação sobre a fonte de dados devem ser armazenadas no SSAS (SQL
Server Analysis Services) para se estabelecer o nível correto de permissões.
III. Os cubos OLAP podem exibir e somar grandes volumes de dados, embora não forneçam aos
usuários acesso pesquisável a quaisquer pontos de dados, quando os dados precisam ser
acumulados, decompostos e analisados, conforme a necessidade para tratar da maior variedade de
questões relevantes à área de interesse do usuário.
Está correto APENAS o que se afirma em
A) III.
B) II e III.
C) I e III.
D) I e II.
E) II.

26) Os otimizadores de consultas SQL dos principais sistemas gerenciadores de bancos de dados não
dependem exclusivamente das regras gerais de transformação de operações da álgebra relacional para
estimar e comparar os custos de execução de uma consulta SQL.
Dentre os principais componentes avaliados para a execução de uma consulta se destacam os custos
de
A) memória, comunicação, armazenamento secundário e computação.
B) buffers e buckets, page faults, armazenamento e computação.
C) memória, compilação, fator de divisão de bloco e de transferência de blocos.
D) disco rígido, número de operações E/S, fator de blocagem e computação.
E) buffers de memória, page faults, fator de blocagem e comunicação entre processadores.

27) Um técnico, ao efetuar a modelagem de um banco de dados relacional, pode utilizar o modelo
entidade-relacionamento no qual
A) entre dois conjuntos de entidades pode estar associado mais de um conjunto de relacionamentos.
B) um conjunto de relacionamentos binário liga conjuntos de entidades com exatamente dois atributos cada
um.
C) conjunto de relacionamentos binário liga conjuntos de entidades com exatamente dois atributos cada um.
D) um conjunto de relacionamentos recursivo está associado a pelo menos 3 conjuntos de entidades.
E) cada conjunto de entidades deve estar associado a no máximo 2 conjuntos de relacionamentos.

28) Considerando que se deseje efetuar uma pesquisa de um valor sobre a chave primária de uma
tabela de um banco de dados com uma chave primária com um tipo de campo que receba um valor
inteiro e que se possa fazer essa pesquisa utilizando-se a busca sequencial ou a busca binária, assinale
a opção correta.
A) O método de busca binária requer, no máximo, ln(n) comparações para determinar o elemento pesquisado,
em que n é o número de registros.
B) O método de busca binária será sempre mais rápido que o método de busca sequencial, independentemente
de a tabela estar ordenada com base no elemento pesquisado.
C) O método de busca sequencial requererá, no máximo, n2 comparações para determinar o elemento
pesquisado, em que n será o número de registros.
D) O método de busca binária sempre efetuará menos comparações que o método de pesquisa sequencial.
E) O método de busca sequencial efetuará menos comparações para encontrar o elemento pesquisado quando
a tabela estiver ordenada em comparação à situação quando a tabela estiver desordenada.

29) Um projeto da Fazenda Municipal sobre a recuperação de bancos de dados vai aplicar a técnica da
recuperação adiada, na qual as alterações observadas no banco de dados são salvas
A) após o encerramento da seção corrente do banco de dados.
B) apenas quando o usuário titular da seção solicitar tal ação, explicitamente.
C) após a transação responsável pelas alterações ter sido executada completamente.
D) imediatamente após qualquer modificação feita no banco de dados, ainda que a transação responsável
pelas alterações não tenha chegado a seu ponto final.
E) quando o buffer utilizado para armazenar as transações efetuadas estiver com 80% de sua capacidade
preenchida.

113
30) Em uma certa visão governamental, os órgãos são identificados sequenciamente a partir do número
um, dentro de cada ministério. No projeto da base de dados é necessário que tal fato seja levado em
consideração por questão de unicidade da chave primária da tabela de órgãos. Este enunciado remete
ao princípio que norteia, especificamente, no MER, a formação de
A) entidade fraca.
B) entidade associativa.
C) relacionamento ternário.
D) auto-relacionamento.
E) visibilidade.

31) Nos sistemas transacionais, os dados sofrem diversas alterações como inclusão, alteração e
exclusão. Antes de serem carregados no ambiente de um Data Warehouse, os dados são filtrados e
limpos, de forma a gerarem informação útil. Após esta etapa, esses dados
A) ficam disponíveis para a mineração em tempo real, pois tais dados são constantemente atualizados a partir
da chave de tempo que indica o dia em que foram extraídos dos sistemas transacionais.
B) podem sofrer operações de consulta, mas, devido a sua não volatilidade, não podem ser alterados, não
havendo necessidade de bloqueio por concorrência de usuários ao seu acesso.
C) são reunidos a partir de diversas fontes de dados, o que facilita muito o trabalho do analista, embora este
tenha que lidar com a grande redundância das informações.
D) ficam ordenados pela data da extração do sistema transacional, sendo necessárias técnicas de data mining
para fazer a sua recuperação orientada por assunto.
E) são classificados somente pelo assunto principal de interesse da organização. Por exemplo, em uma
organização de arrecadação de impostos, os dados são organizados pelo cadastro de contribuintes que
possuem impostos a recolher.

32) O mecanismo que permite a implementação de relacionamentos entre tabelas em um banco de


dados relacional é a
A) chave primária.
B) chave estrangeira.
C) chave interna.
D) tupla.

33) Um relacionamento do tipo n:m no MER (modelo entidaderelacionamento)


A) deriva em duas tabelas no modelo relacional normalizado, cada uma com as chaves primárias referentes
às estrangeiras do lado oposto.
B) deriva em duas tabelas no modelo relacional normalizado, cada uma com as chaves estrangeiras referentes
às primárias do lado oposto.
C) não pode ser normalizado.
D) deriva em três tabelas no modelo relacional normalizado, sendo uma delas a correspondência entre as
instâncias específicas de uma entidade com as da outra.
E) deriva em três tabelas no modelo relacional normalizado, sendo uma delas composta unicamente por duas
tuplas contendo as relações reversas: primária de uma relacionada a todas as primárias da oposta.

34) No âmbito do MS SQL Server, a propriedade identity, usada na descrição de colunas de tabelas,
tem a função de:
A) especificar a chave primária da tabela;
B) fazer uma referência default aos atributos que compõem a chave primária da tabela;
C) gerar valores para a coluna;
D) armazenar o timestamp do instante em que uma nova linha é inserida na tabela;
E) criar um índice do tipo clustered.

35) Considere os seguintes métodos de busca/indexação:


I. Busca binária
II. Tabelas hash
III. Índices B-trees
Considere ainda um universo de busca com aproximadamente um milhão de chaves, para o qual cada método
tenha sido implementado adequadamente.
Num benchmark extensivo, cada método apresentou um número médio de acessos até que cada chave fosse
localizada.
Esses tempos médios, em ordem crescente, correspondem aos métodos:

114
A) I, II, III;
B) I, III, II;
C) II, I, III;
D) II, III, I;
E) III, I, II.

36) 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.

37) Assinale a opção correta a respeito do CRISP-DM.


A) CRISP-DM é uma suíte de ferramentas proprietárias que vem se tornando um padrão da indústria para
mineração de dados, uma vez que fornece um plano completo e tecnologias para a realização de um projeto
de mineração de dados.
B) A verificação da qualidade dos dados é uma atividade da fase de entendimento dos dados.
C) Durante a fase de preparação dos dados, é realizado um inventário de requisitos, suposições e restrições
de recursos.
D) Na fase de avaliação dos dados, são realizadas as atividades de identificar valores especiais dos dados e
catalogar seu significado.
E) Na fase de preparação dos dados, são realizadas as atividades de analisar o potencial de implantação de
cada resultado e estimar o potencial de melhoria do processo atual.

38) Acerca de visualização e análise exploratória de dados, assinale a opção correta.


A) As variáveis são características que podem ser observadas ou medidas em cada elemento pesquisado,
sendo classificadas em inteiras, textuais ou imagens.
B) A entrada de dados deve assumir convenções tais como: os dados devem estar no formato de matriz; cada
linha da matriz deve ter pelo menos um atributo identificador; e cada coluna da matriz deve ter um nome
distinto.
C) A informação de uma ou mais variáveis que não estiver disponível (por exemplo, falta de resposta, rasura
etc.) deve ser marcada (ou indicada) com zero.
D) Um arquivo csv (comma separated values), no qual as colunas de um conjunto de dados são separadas por
vírgula, pode ser aberto em qualquer editor de texto ou planilha eletrônica.
E) A eliminação completa (casewise deletion) consiste em eliminar os arquivos que apresentem mais de um
dado perdido.

39) Dentre os diversos tipos de bancos de dados, existe o denominado bancos de dados objeto-
relacionais, que tem como fundamento a
A) duplicação das tabelas componentes de um banco de dados originalmente relacional.
B) incorporação de características e recursos da orientação a objetos nos bancos de dados originalmente
relacionais.
C) eliminação do conceito de atributos, existente nos bancos de dados originalmente relacionais.
D) transformação de todas as tabelas de um banco de dados originalmente relacional em uma única classe da
orientação a objetos.
E) substituição do conceito representado pelas propriedades ACID pelo teorema CAP.

40) Nas transações em bancos de dados concorrentes, se uma transação requer o acesso
A) a uma informação que está bloqueada de forma exclusiva, essa transação deve ser imediatamente
terminada.
B) a uma informação que está bloqueada de forma exclusiva, ocorrerá um deadlock.
C) de leitura a uma informação, ela deve solicitar um bloqueio exclusivo a essa informação.
D) de escrita a uma informação, ela deve solicitar um bloqueio exclusivo a essa informação.
E) de escrita a uma informação, ela deve solicitar um bloqueio compartilhado a essa informação.

115
41) Considere um banco de dados que registre informações sobre alunos, disciplinas e professores em
uma faculdade. Sabe-se que um aluno pode cursar uma ou mais disciplinas, que cada disciplina é
ministrada por um único professor e que cada disciplina aceita inscrições de um ou mais alunos. Nesse
contexto, analise as afirmativas a seguir.
I. Alunos e professores têm relação N:M ente si
II. Professores e disciplinas têm uma relação 1:N entre si.
III. Cada professor ministra, necessariamente, apenas uma disciplina.
Está correto o que se afirma em
A) I, apenas.
B) II, apenas.
C) III, apenas.
D) I e II, apenas.
E) I, II e III.

42) A validação de acesso a bancos de dados relacionais pode ser feita por meio da técnica denominada
criptografia de chave pública, na qual
A) cada usuário possui duas chaves públicas e uma chave privada de acesso ao banco de dados.
B) as chaves privadas são de conhecimento dos demais usuários do banco de dados.
C) cada usuário possui uma chave pública e uma chave privada de acesso ao banco de dados.
D) as chaves públicas devem ser idênticas às chaves privadas, para cada usuário do banco de dados.
E) cada usuário possui duas chaves privadas e uma chave pública de acesso ao banco de dados.

43) A segurança física de um banco de dados representa um aspecto de grande importância na


proteção dos dados. O controle da segurança física de bancos de dados
A) não tem relação com possíveis danos ao ambiente físico do banco de dados decorrentes de imprevistos,
como por exemplo, um incêndio.
B) considera que toda a diretoria da empresa pode ter acesso irrestrito ao ambiente do banco de dados.
C) não abrange equipamentos ou dispositivos de no-break, pois esses não estão na linha crítica de
funcionamento do banco de dados.
D) trata de medidas de proteção contra acesso físico não autorizado aos equipamentos que provêm acesso ao
banco de dados.
E) considera que equipes terceirizadas podem ter acesso irrestrito ao ambiente físico do banco de dados.

44) Considere a criação de perfis de usuários e a atribuição de privilégios a esses perfis, em um banco
de dados relacional. Nessa situação,
A) a cada perfil podem ser atribuídos conjuntos de privilégios distintos.
B) um usuário não pode estar incluído a mais de um perfil, simultaneamente.
C) cada perfil criado em um banco de dados abrange todos os usuários desse banco de dados.
D) um perfil, uma vez criado, não pode mais ser excluído, permanecendo até o fim do banco de dados.
E) uma visão de um banco de dados comporta apenas os privilégios de leitura e inserção de registros.

45) Qual alternativa é exemplo de Modelo de Banco de dados?


A) Dedutivo.
B) Task.
C) Modular.
D) Desestruturado.
E) Criptografado

46) A segurança é considerada importante sempre que os dados são armazenados em qualquer sistema
de gerenciamento de banco de dados relacional. Sabendo disso, assinale a alternativa que apresenta
os três principais mecanismos para implementar o framework de segurança de um banco de dados
IBM/DB2.
A) Autoridade, autenticidade, consistência.
B) Autenticação, autorização, privilégio.
C) Autoridade, privilégio, acessibilidade.
D) Autorização, acessibilidade, securidade.
E) Acessibilidade, consistência, privilégio.

47) Em bancos de dados relacionais normalmente há uma política de replicação de dados. Sobre essa
política,

116
A) o número de cópias ou réplicas de um conjunto de dados deve ser impar, seja no caso síncrono, seja no
assíncrono.
B) na replicação do tipo síncrono, as réplicas são atualizadas em uma nova transação realizada posteriormente
à transação originária de uma modificação, e portanto nem todas as réplicas terão valores idênticos dos dados.
C) a replicação representa uma melhor disponibilidade do banco de dados, pelo fato de haver réplica(s)
disponível(eis) na eventualidade da ocorrência de falhas no sistema.
D) na replicação do tipo assíncrono, as réplicas devem ser atualizadas na mesma transação originária de uma
modificação, resultando em apenas uma versão dos dados.
E) na chamada independência ou transparência de replicação, os usuários devem conhecer o número e a
localização das réplicas.

48) Uma das propriedades conhecidas em bancos de dados relacionais como ACID é a durabilidade,
segundo a qual, em uma transação completada com sucesso, todas as atualizações feitas no banco de
dados por essa transação devem persistir
A) com exceção da ocorrência de falhas na memória do servidor de banco de dados.
B) mesmo na ocorrência de falhas no sistema de banco de dados, após o término da transação.
C) a menos que ocorra uma falha no servidor em até 1 segundo, após o término da transação.
D) exceto se houver outras transações em execução no momento da falha.
E) com exceção da ocorrência de falhas no barramento de dados do servidor do banco de dados.

49) Bloqueios constituem uma técnica bastante utilizada em sistemas de bancos de dados relacionais.
É correto afirmar que
A) quando uma transação obtém um bloqueio do tipo compartilhado sobre um item de dados, pode escrever
mas não ler sobre esse item.
B) no protocolo de bloqueio em duas fases, na fase de encolhimento, uma transação pode obter novos
bloqueios.
C) no protocolo de bloqueio em duas fases, na fase de crescimento, uma transação pode liberar e também
obter novos bloqueios.
D) quando uma transação obtém um bloqueio do tipo exclusivo sobre um item de dados, pode ler e escrever
sobre esse item.
E) no protocolo de bloqueio em duas fases, na fase de crescimento, uma transação pode liberar, mas não obter
novos bloqueios.

50) O termo sistemas de banco de dados orientados a objetos é usado para se referir aos sistemas de
banco de dados que aceitam um sistema de tipo orientado a objeto e permitem acesso direto aos dados
de uma linguagem de programação orientada a objeto, usando o sistema de tipo nativo da linguagem.
De acordo com os conceitos de herança de tabela, um requisito de consistência para uma subtabela é
que
A) as tuplas correspondentes não podem ser derivadas de uma tupla inserida na tabela.
B) cada tupla da supertabela pode corresponder a, no máximo, uma tupla de cada uma de suas tabelas
imediatas.
C) cada tupla da supertabela pode corresponder a, no mínimo, uma tupla de cada uma de suas tabelas
imediatas.
D) cada tupla da subtabela pode corresponder a duas tuplas da supertabela.

51) Na implementação de rotinas de recuperação de transações em bancos de dados relacionais, tem


papel vital os arquivos de log, sobre os quais é correto afirmar que
A) devem conter valores antigos e novos de registros que sofreram modificações.
B) não se aplicam a bancos de dados de pequeno porte.
C) contêm, exclusivamente, indicação de instantes de início e final de cada transação.
D) não indicam se as transações foram confirmadas ou abortadas.
E) aplicam-se, exclusivamente, a bancos de dados que contenham informações sigilosas.

52) Considerando a indexação de bancos de dados relacionais, é correto afirmar que


A) em um índice do tipo árvore B+ cada caminho da raiz até uma folha apresenta tamanhos variados.
B) a criação de um índice não representa espaço adicional de armazenamento além das tabelas originárias
dos dados.
C) uma determinada tabela admite a indexação de apenas um atributo.
D) índices são atualizados uma única vez a cada hora, independentemente das operações feitas no banco de
dados.

117
E) índices do tipo árvore B+ são estruturados como árvores balanceadas.

53) Julgue os itens a seguir, relativamente ao conceito de visão de um banco de dados.


I - Visões complexas podem utilizar comandos DML para manipulação dos dados.
II - Visões fazem referência a tabelas, sem armazenar nenhuma linha.
III - Visões complexas podem conter funções.
IV - Visões e tabelas temporárias são equivalentes quanto ao tratamento.
Estão certos apenas os itens
A) I e II.
B) I e IV.
C) II e III.
D) I, III e IV.
E) II, III e IV.

54) Na teoria de bancos de dados, uma transação é um conjunto de operações cujo processamento
respeita as propriedades de atomicidade, consistência, isolamento e durabilidade. Em sistemas não
distribuídos, a propriedade “durabilidade” é usualmente implementada por meio de
A) algoritmos two-phase commitment.
B) algoritmos two-phase lock.
C) arquivos de log que provêm redundância.
D) pela combinação de operações de rollback e commit.
E) serialização de operações no controle de concorrência.

55) No âmbito da utilização de bancos de dados no papel de “data warehouse”, é usualmente aceitável
que as tabelas não estejam plenamente normalizadas. Assinale a opção que mostra porque essa
característica, embora indesejada, é admitida.
A) As dependências funcionais tornam-se obsoletas.
B) As operações de insert/update não estão mais sujeitas ao controle de concorrência.
C) Facilita os processos de ETL.
D) Não é possível criar bancos de dados históricos normalizados.
E) Simplifica as consultas e melhora o tempo de resposta.

56) Na fase de modelagem de um banco de dados, o modelo que analisa os limites impostos por alguma
tecnologia de banco de dados é o:
A) Modelo conceitual
B) Modelo lógico.
C) Modelo físico.
D) Modelo orientado a objeto.

57) A principal definição de Big Data parte de três características, conhecidas como 3 V do Big Data, a
saber: velocidade, variedade e volume. O termo velocidade refere-se, principalmente, à:
A) necessidade das aplicações de gerar respostas rapidamente, a partir de grandes massas de dados.
B) existência de um alto fluxo de dados na entrada.
C) necessidade de gerar aplicações rapidamente, em função da demanda do negócio.
D) importância da facilidade de manipular cubos de visualização de dados, rapidamente.
E) rapidez com que os dados se tornam inválidos com o tempo.

58) Um banco de dados de Big Data deve possuir pelo menos três aspectos, os chamados 3Vs do Big
Data, que são:
A) Variedade; Volume; Valor.
B) Valor; Variabilidade; Velocidade.
C) Volume; Veracidade; Velocidade.
D) Veracidade; Velocidade; Variedade.
E) Velocidade; Volume; Variedade.

59) A coluna da esquerda apresenta conceitos em Banco de Dados e a da direita, definições associadas
a cada conceito. Numere a coluna da direita de acordo com a da esquerda.

118
Assinale a sequência correta.
A) 2, 1, 3, 4
B) 1, 3, 4, 2
C) 3, 4, 1, 2
D) 2, 4, 1, 3

60) A figura a seguir mostra a estrutura das tabelas Produto, Venda e Cliente pertencentes a um banco
de dados de uma empresa comercial.

A tabela Venda contém um registro para cada venda efetuada pela companhia. A fim de preservar a
integridade referencial do banco de dados, assinale a opção que indica a coluna ou colunas dessa
tabela que deveria(m) ser chaves estrangeiras.
A) id_produto.
B) imposto e quantidade.
C) quantidade.
D) id_produto e quantidade.
E) id_cliente e id_produto.

Gabarito
01 - B 02 - A 03 - C 04 - D 05 - C 06 - A 07 - E 08 - C 09 - A 10 - C
11 - E 12 - C 13 - E 14 - E 15 - E 16 - E 17 - B 18 - D 19 - A 20 - C
21 - D 22 - A 23 - B 24 - A 25 - E 26 - A 27 - A 28 - A 29 - C 30 - A
31 - B 32 - B 33 - D 34 - C 35 - D 36 - B 37 - B 38 - D 39 - B 40 - D
41 - D 42 - C 43 - D 44 - A 45 - A 46 - B 47 - C 48 - B 49 - D 50 - B
51 - A 52 - E 53 - C 54 - C 55 - E 56 - B 57 - B 58 - E 59 - A 60 - E

Coletânea de Exercícios II
Gabarito: no final da Coletânea de exercícios

MARQUE: C (Certo) ou E (Errado)


01) Mineração de dados é o processo de empregar uma ou mais técnica de aprendizagem em
computador para, automaticamente, analisar e extrair conhecimentos de dados contidos em uma base
de dados. Julgue o item seguinte, que versam sobre mineração de dados e KDD.
A metodologia para a realização de tarefas de mineração de dados, prescrita pelo modelo de referência
proposto pelo Consórcio CRISP/DM, consiste nas seguintes fases: entendimento do negócio (business
understanding), entendimento dos dados (data understanding), préprocessamento dos dados (data
preparation), modelagem (modeling), avaliação dos modelos (evaluation) e colocação do modelo selecionado
em uso (deployment).

02) Julgue o item a seguir, em relação a data warehouse e data mining.


No contexto de data mining, o processo de descoberta de conhecimento em base de dados consiste na
extração não trivial de conhecimento previamente desconhecido e potencialmente útil.

119
03) Julgue o item a seguir, referente a data mining.
Algoritmo genético é uma das ferramentas do data mining que utiliza mecanismos de biologia evolutiva, como
hereditariedade, recombinação, seleção natural e mutação, para solucionar e agrupar problemas.

04) Julgue o item a seguir, a respeito de datawarehouse e de datamining.


Em um processo de mineração, durante a etapa de preparação dos dados, são analisados os requisitos de
negócio para consolidar os dados.

05) Julgue o item subsecutivo, com relação a Data Mining, desempenho de sistemas de bancos de
dados e controle de concorrência.
Com o uso da classificação como técnica de Data Mining, busca-se a identificação de uma classe por meio de
múltiplos atributos. Essa técnica também pode ser usada em conjunto com outras técnicas de mineração de
dados.

06) Julgue o item subsequente, acerca de segurança da informação de um SGBD e de um BI (Business


Intelligence).
CRISP-DM é uma metodologia proprietária que identifica as fases Business Understanding e Data
Understanding na implantação de um projeto de data mining.

07) Acerca de modelagem dimensional, OLAP, Data Warehouse, Data Mart e Data Mining, julgue o item
a seguir, marcando C (Certo) ou E (Errado).
Clusterização é uma técnica de mineração de dados que utiliza o aprendizado supervisionado.

08) Julgue o item a seguir, a respeito de administração de dados e de administração de banco de dados.
Mineração de dados, em seu conceito pleno, consiste na realização, de forma manual, de sucessivas consultas
ao banco de dados com o objetivo de descobrir padrões úteis, mas não necessariamente novos, para auxílio
à tomada de decisão.

09) Julgue o item a seguir, relativo aos sistemas de suporte a decisão.


Um banco de dados pode conter objetos de dados que não sigam o padrão dos dados armazenados. Nos
métodos de mineração de dados, esses objetos de dados são tratados como exceção, para que não induzirem
a erros na mineração.

10) No que diz respeito a sistemas de suporte a decisão, julgue o item subsequente.
O data mining possibilita analisar dados para obtenção de resultados estatísticos que poderão gerar novas
oportunidades ao negócio.

11) Julgue o item que se segue, acerca de data mining e data warehouse.
O processo de mineração de dados está intrinsecamente ligado às dimensões e a fato, tendo em vista que,
para a obtenção de padrões úteis e relevantes, é necessário que esse processo seja executado dentro dos
data warehouses.

12) Com relação a BI (business inteligence), indicadores da produção, administração da produção,


monitoração do ambiente operacional, julgue o próximo item.
O data mining é um processo utilizado para a extração de dados de grandes repositórios para tomada de
decisão, mas sua limitação é não conseguir analisar dados de um data warehouse.

13) Com relação a data mining e data warehouse, julgue o item que se segue.
Agrupar registros em grupos, de modo que os registros em um grupo sejam semelhantes entre si e diferentes
dos registros em outros grupos é uma maneira de descrever conhecimento descoberto durante processos de
mineração de dados.

14) Julgue o item seguinte, a respeito de big data e tecnologias relacionadas a esse conceito.
De maneira geral, big data não se refere apenas aos dados, mas também às soluções tecnológicas criadas
para lidar com dados em volume, variedade e velocidade significativos.

15) A respeito de bancos de dados, julgue o item a seguir.

120
Um banco de dados é uma coleção de dados que são organizados de forma randômica, sem significado
implícito e de tamanho variável, e projetados para atender a uma proposta específica de alta complexidade, de
acordo com o interesse dos usuários.

16) Julgue o item que se segue, relativo a projeto de banco de dados.


No projeto físico, são implementadas as estruturas de armazenamento, como, por exemplo, o particionamento
de uma tabela.

17) Com relação à arquitetura e ao acesso a banco de dados, julgue o item a seguir.
No nível externo, pode-se ter uma visão única de todo o banco de dados, incluindo definições de esquemas e
restrições de integridade, independentemente do armazenamento físico.

18) Julgue o item a seguir a respeito do projeto lógico e físico de banco de dados.
No projeto lógico, o modelo físico é obtido por meio da transformação do modelo conceitual.

19) No que se refere a fundamentos de banco de dados, julgue o item a seguir.


Um arquivo é organizado logicamente como uma sequência de registros, que podem ser de tamanho fixo ou
variável. A remoção e a inserção em arquivos de registros de tamanho variável são mais fáceis de serem
implementadas do que em arquivos de registro de tamanho fixo.

20) A respeito de tipos de bancos de dados, julgue o item que se segue.


Sistemas de bancos de dados classificados como NoSQL permitem a inserção de dados sem que haja um
esquema predefinido.

21) Julgue o item a seguir, relativo a banco de dados.


Existem várias categorias de linguagens de SGBD: a de definição de dados (DDL), usada para especificar
esquemas (conceitual e externo); a de manipulação de dados (DML), que provê um conjunto de operações
básicas para manipulação de dados; a de definição de visões (VDL), utilizada para especificar a visão do
usuário (esquema externo) e seu mapeamento para o esquema conceitual e a de definição de armazenamento
(SDL), usada para especificar o esquema interno de armazenamento dos dados no banco.

22) A respeito de banco de dados, julgue o item subsequente.


Um modelo de dados pode ser usado para representar os tipos de dados existentes em um banco de dados
de um sistema online de reservas.

23) Acerca de sistema de gerenciamento de banco de dados (SGBD), Julgue o item a seguir.
O SGBD proporciona um conjunto de programas que permite o acesso aos dados sem exposição dos detalhes
de representação e armazenamento de dados, por meio de uma visão abstrata dos dados, conhecida como
independência de dados.

24) Julgue o item a seguir, no que se refere aos projetos conceitual, lógico e físico de banco de dados
relacional.
A construção de um modelo particular para cada SGBD, obtido a partir da transformação do modelo conceitual,
é o objetivo do projeto lógico.

25) Julgue o item a seguir, no que se refere aos projetos conceitual, lógico e físico de banco de dados
relacional.
O fato de haver restrições associadas a consultas como ocorre, por exemplo, no caso de a consulta ter de ser
executada em, no máximo, três segundos influencia o projeto físico.

26) Julgue o item a seguir, no que se refere aos projetos conceitual, lógico e físico de banco de dados
relacional.
Um projeto conceitual completo e sem redundância contém um modelo com a descrição dos objetos que devem
fazer parte do banco dados, além de manter um registro da forma com que esses dados estão guardados no
SGBD.

27) No que diz respeito à arquitetura e aos conceitos de banco de dados, julgue o item a seguir.
De acordo com a arquitetura ANSI, o nível conceitual representa os dados independentemente de qualquer
aplicação.

121
28) Julgue o item a seguir, a respeito de bancos de dados.
Uma chave primária é composta de um registro único, o qual identifica a entidade.

29) Julgue o item que se segue, acerca das linguagens de definição, manipulação, controle e transação
de dados em sistemas gerenciadores de banco de dados relacionais.
Os comandos commit e rollback são utilizados para finalizar uma transação.

30) Julgue o item a seguir, relativo à administração de banco de dados e ao sistema de gerenciamento
de banco de dados (SGBD).
Uma das atribuições do administrador de banco de dados é definir a estratégia que determinará como será
feito o becape do banco de dados.

31) Acerca de bancos de dados semiestruturados e bancos de dados NoSQL, julgue o item subsecutivo.
Bancos de dados NoSQL orientados a documentos são apropriados para o armazenamento de dados
semiestruturados.

32) Acerca de bancos de dados semiestruturados e bancos de dados NoSQL, julgue o item subsecutivo.
Para garantir a eficiência das consultas a bancos de dados semiestruturados, é fundamental a adoção de
técnica de indexação que leve em consideração, além das informações, as propriedades estruturais dos dados.

33) Acerca de bancos de dados semiestruturados e bancos de dados NOSQL, julgue o item
subsecutivo.
Devido à escalabilidade esperada para os bancos de dados NOSQL, a implementação desses bancos utiliza
modelos de armazenamento de dados totalmente distintos dos utilizados em sistemas relacionais.

34) Julgue o item a seguir, no que se refere a Big Data.


O processamento de consultas ad hoc em Big Data, devido às características de armazenamento dos dados,
utiliza técnicas semelhantes àquelas empregadas em consultas do mesmo tipo em bancos de dados
tradicionais.

35) Com base nos modelos de banco de dados, julgue o item subsecutivo.
O modelo de dados físico é considerado de baixo nível, o que significa que somente os sistemas gerenciadores
de banco de dados conseguem interpretá-lo.

36) Julgue o item a seguir, relativo a banco de dados.


No Linux, o programa Mysql-query-browser permite acessar remotamente o banco de dados MySQL. Para
isso, é necessário configurar a conexão, informando-se o IP do servidor desejado na porta 3306, o nome do
usuário do banco de dados e a senha.

37) No que se refere ao desenvolvimento web de alto desempenho, julgue o item subsecutivo.
Uma característica de bancos de dados NoSQL é o suporte à replicação de dados. Entre as abordagens
utilizadas para replicação, inclui-se a mestre-escravo.

38) No que se refere ao desenvolvimento web de alto desempenho, julgue o item subsecutivo.
A escalabilidade dos bancos de dados NoSQL é garantida pela ausência de um esquema (scheme free).

39) No que se refere ao desenvolvimento web de alto desempenho, julgue o item subsecutivo.
Apesar de implementarem tecnologias distintas, todos os bancos de dados NoSQL apresentam em comum a
implementação da tecnologia chave-valor.

40) No que diz respeito às funções do administrador de dados e à elaboração e implantação de projeto
de banco de dados, julgue o item que se segue.
Se, durante a elaboração de um projeto de banco de dados relacional, houver dependência entre entidades,
trata-se de representação que pode ser concebida utilizando-se o conceito de entidade fraca.

41) Acerca de sistema gerenciador de banco de dados, do tuning e da segurança em banco de dados,
julgue o item subsecutivo.
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.

122
42) Acerca de sistema gerenciador de banco de dados, do tuning e da segurança em banco de dados,
julgue o item subsecutivo.
Por ser considerada uma ação atômica, a proteção do banco de dados deve ser realizada ao nível de tabela,
não sendo possível, por exemplo, realizar a proteção de uma tupla inteira ou de parte da tupla.

43) A respeito de fundamentos de banco de dados e linguagens de definição e manipulação de dados


em SGBDs relacionais, julgue o item a seguir.
Os atributos utilizados para a classificação do resultado pela cláusula order by não necessitam estar presentes
na cláusula select da consulta.

44) A respeito de fundamentos de banco de dados e linguagens de definição e manipulação de dados


em SGBDs relacionais, julgue o item a seguir.
O algoritmo de junção de laço aninhado requer o uso de índices para examinar parcialmente os pares de tuplas
nas duas relações da junção.

45) Julgue o item a seguir, relativo aos procedimentos de backup de banco de dados.
Os procedimentos de recuperação de um banco de dados devem prever uma sequência de operações que se
inicie com a restauração de um backup diferencial, quando ele existir.

46) Julgue o item seguinte acerca da modelagem de dados, considerando diagramas entidade-
relacionamento e mapeamento para modelo relacional.
Uma visão de banco de dados é uma coleção de objetos que estão disponíveis para um determinado usuário
ou grupo. Os objetos de uma visão são estruturas lógicas que se referem diretamente aos dados do banco.

47) No que se refere a banco de dados relacional (SQL) e não relacional (NoSQL) e ao framework JPA,
julgue o item subsecutivo.
Para uma empresa que necessite implantar uma base de dados altamente escalável, com grande desempenho
e cujo esquema de dados seja flexível, de modo que suporte constantes mudanças de campos e valores
armazenados, a melhor opção é uma base de dados NoSQL.

48) Com relação a banco de dados, julgue o item seguinte.


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).

49) Com relação a banco de dados, julgue o item seguinte.


Diferentemente dos bancos de dados transacionais, a modelagem de bancos de dados multidimensionais é
caracterizada pelo uso de tabelas fato e tabelas periféricas, que armazenam, respectivamente, a transação e
as dimensões.

50) Julgue o próximo item no que se refere à gestão de segurança em banco de dados.
View é um objeto que permite implementar a segurança em um banco de dados, omitindo dados irrelevantes
para algum grupo de usuário. No entanto, não é permitido criar uma view com base na definição de outra view.

51) Julgue o próximo item no que se refere à gestão de segurança em banco de dados.
Em SQL, o comando create role acesso_ensino as grant insert, update on ensino_superior, quando executado,
cria o papel acesso_ensino, contendo os privilégios de inserir e atualizar na tabela ensino_superior.

52) Julgue o próximo item no que se refere à gestão de segurança em banco de dados.
A instrução, em SQL, grant update (nota) on aluno_disciplina to pedro, miguel; apresenta erro de sintaxe

53)

123
As informações anteriormente apresentadas correspondem aos campos de uma tabela de um banco
de dados, a qual é acessada por mais de um sistema de informação e também por outras tabelas. Esses
dados são utilizados para simples cadastros, desde a consulta até sua alteração, e também para
prevenção à fraude, por meio de verificação dos dados da tabela e de outros dados em diferentes bases
de dados ou outros meios de informação.
Considerando essas informações, julgue o item que se segue.
Se um sistema de informação correlaciona os dados da tabela em questão com outros dados não estruturados,
então, nesse caso, ocorre um processo de mineração de dados.

Gabarito
01 - Certo 02 - Certo 03 - Certo 04 - Errado 05 - Certo 06 - Errado 07 - Errado
08 - Errado 09 - Errado 10 - Certo 11 - Errado 12 - Errado 13 - Certo 14 - Certo
15 - Errado 16 - Certo 17 - Errado 18 - Errado 19 - Errado 20 - Certo 21 - Certo
22 - Certo 23 - Certo 24 - Certo 25 - Certo 26 - Errado 27 - Certo 28 - Errado
29 - Certo 30 - Certo 31 - Certo 32 - Certo 33 - Errado 34 - Errado 35 - Errado
36 - Certo 37 - Certo 38 - Errado 39 - Errado 40 - Certo 41 - Certo 42 - Errado
43 - Certo 44 - Errado 45 - Errado 46 - Errado 47 - Certo 48 - Certo 49 - Certo
50 - Errado 51 - Errado 52 - Errado 53 - Certo ******* ******* *******

FIM

124

Você também pode gostar