0% acharam este documento útil (0 voto)
114 visualizações450 páginas

Aulas Do Módulo 02

Zebra precisa de cuidados veterinários.

Enviado por

dougfbrum
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
114 visualizações450 páginas

Aulas Do Módulo 02

Zebra precisa de cuidados veterinários.

Enviado por

dougfbrum
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
Você está na página 1/ 450

Bootcamp Técnico(a) de Banco de Dados

Introdução a Banco de Dados


Módulo 2

Prof. Gustavo Aguilar


Apresentação do Professor
Nesta Aula
❑ Formação Acadêmica
❑ Atuação Acadêmica
❑ Atuação Profissional
❑ Certificações
Formação Acadêmica
▪ Bacharelado em Ciência da Computação (PUC Minas);
▪ Pós-Graduação em Adm. de Sistemas Ger. de Banco de
Dados SQL Server (Newton Paiva);
▪ MBA em Ciência de Dados - Big Data (IGTI / XP Educação);
▪ Especialização em Docência do Ensino Superior (Newton
Paiva);
▪ Mestrando em Educação com Ênfase em TIC (Universidad
Europea del Atlántico).
Atuação Acadêmica
▪ Coordenador de Graduação na XP Educação:

➢ Tecnologia em Banco de Dados

➢ Tecnologia em Computação em Nuvem

▪ Coordenador de Pós-Graduação na XP Educação:

➢ MBA em Arquitetura de Software & Soluções

➢ MBA em Cloud Computing

➢ MBA em Engenharia de Software Ágil


Atuação Acadêmica
▪ Coordenador de Bootcamps na XP Educação:

➢ Analista de Banco de Dados

➢ Arquiteto Cloud Computing

➢ Arquiteto de Software

➢ Arquiteto de Soluções

➢ Engenheiro de Software Ágil

➢ Profissional AWS Cloud Computing

➢ Profissional Azure Cloud Computing


Atuação Acadêmica
▪ Professor de Pós-graduação, Graduação e Bootcamp:
➢ Aplicações com Linguagem SQL

➢ Arquitetura de Dados Escaláveis

➢ Gerenciamento de Bancos de Dados Distribuídos

➢ Introdução à Computação em Nuvem

➢ Performance e Otimização em Bancos Relacionais e NOSQL

➢ Persistência e Pesquisa de Dados

➢ Princípios de Sistemas Distribuídos

➢ Sol. de Armazenamento, Banco de Dados e Analytics no Azure


Atuação Acadêmica
▪ Orientador de Trabalho de Conclusão de Curso (TCC);

▪ Orientador de Projeto Aplicado (PA) na XP Educação;

▪ Mentor de Carreira:

➢ Banco de Dados;

➢ Computação em Nuvem.
Atuação Profissional
▪ Database Tech Lead;

▪ Administrador de Bancos de Dados e de Ambientes Big Data;

▪ Arquiteto de Dados / Administrador de Dados;

▪ Arquiteto de Soluções em Nuvem;

▪ Administrador de Ambientes em Nuvem;

▪ Consultor em Projetos de Banco de Dados;

▪ Arquiteto Corporativo.
Certificações

Instrutor Oficial Microsoft


(Microsoft Certified Trainer - MCT)
Certificações
Bons estudos!
Sucesso !!

www.linkedin.com/in/gustavoaagl

[email protected]
Próxima Aula
❑ Apresentação do Módulo “Introdução a Banco de Dados”.
Apresentação do Módulo
Nesta Aula
❑ Descrição do Módulo
❑ Objetivos de Ensino
❑ Estrutura do Módulo
❑ Materiais Didáticos
❑ Atividades dos Alunos
❑ Distribuição de Pontos
Descrição do Módulo
Este módulo tem o objetivo de apresentar os
conceitos iniciais para a construção do
conhecimento na área de banco de dados,

além de começar a aplicá-los no sistema gerenciador


de banco de dados Microsoft SQL Server.
Objetivos de Ensino
1. Compreender os conceitos da teoria de bancos de dados;

2. Compreender os papéis dos perfis profissionais da área de dados;

3. Compreender o funcionamento de um sistema gerenciador de


banco de dados;

4. Compreender os conceitos da teoria de banco de dados relacional;

5. Compreender os conceitos e funcionamento básico do Microsoft


SQL Server;
Objetivos de Ensino
6. Compreender a aplicabilidade da Linguagem SQL;

7. Usar instruções básicas da Linguagem SQL no SQL Server;

8. Criar e popular um banco de dados no SQL Server;

9. Compreender o mecanismo básico de segurança no SQL Server;

10. Fazer backup e restaurar bancos de dados SQL Server.


Estrutura do Módulo
Capítulo 1 - Introdução ao Mundo dos Dados
1.1. Dado, Metadado e Pirâmide do Conhecimento
1.2. Tipos de Dados
1.3. Perfis de Profissionais da Área de Dados
1.4. Escalabilidade e Elasticidade Capítulo 4 - Introdução a Banco de Dados Relacional

1.5. Tipos de Workloads de Dados 4.1. Teoria de Banco de Dados Relacional


4.2. As 12 Regras de Codd
Capítulo 3 - Sistemas Gerenciadores de Bancos de Dados (SGBD) 4.3. As Propriedades ACID
3.1. Antepassados: Sistema de Processamento de Arquivos 4.4. A Linguagem SQL
3.2. Características dos SGBDs 4.5 Padronização da Linguagem SQL, Classes de Instruções SQL e Dialetos
3.3. Arquitetura ANSI/SPARC e os 3 níveis de abstração 4.6. Uma “Sopa de Letrinhas”
3.4. Tipos de SGBDS
Capítulo 5 - Introdução ao Microsoft SQL Server
3.5. Tipos de Arquiteturas de SGBDs
5.1. Introdução ao SQL Server
3.6. Componentes de um SGBD
5.2. Conceitos Básicos do SQL Server
3.7. Funcionamento de um SGBD
5.3. Instalação do SQL Server
5.4. A Linguagem Transact-SQL (T-SQL)
Estrutura do Módulo
Capítulo 6 - Ferramentas Client Capítulo 7 - Utilização Básica do SQL Server
6.1. Ferramentas Client 7.1. Criação de Estruturas de Dados
6.2. Instalação e Overview do SQL Server Management Studio 7.2. Alteração de Estruturas de Dados
6.3. Instalação e Overview do Azure Data Studio 7.3. Remoção de Estruturas de Dados
6.4. Instalação e Overview do Banco de Dados de Exemplo AdventureWorks 7.4. Selecionando Dados
7.5. Demonstração: Selecionando Dados

Capítulo 8 - Segurança no SQL Server 7.6. Ordenando Dados

8.1. Introdução à Segurança no SQL Server 7.7. Filtrando Dados


7.8. Inserindo Dados
8.2. A Linguagem de Controle de Acesso a Dados (DCL)
7.9. Atualizando Dados
8.3. Concessão e Revogação de Privilégios na Prática
7.10. Excluindo Dados
Capítulo 9 - Backup e Restore no SQL Server
9.1. Tipos de Backups
9.2. Fazendo Backup de um Banco de Dados
9.3. Restaurando um Banco de Dados
Materiais Didáticos
✓ Apostila

✓ Aulas gravadas

✓ Slides das aulas gravadas

✓ Aula interativa ao vivo

✓ Slides da aula interativa

✓ Referências bibliográficas
Atividades dos Alunos
▪ Assistir às aulas gravadas;

▪ Tirar as dúvidas com o tutor no Fórum de Dúvidas no Canvas;

▪ Revisar conteúdo com slides das aulas gravadas e apostila;

▪ Consultar referências bibliográficas e referências adicionais;

▪ Participar do Fórum de Debates Pontuado;

▪ Assistir às aulas interativas;

▪ Fazer o Trabalho Prático;

▪ Fazer o Desafio do módulo.


Distribuição de Pontos
 Fórum de Dúvidas

 Fórum de Debates + 10 pontos

 Trabalho Prático + 25 pontos

 Desafio + 40 pontos

 Participação na 1ª. Aula Interativa + 10 pontos *

 Participação na 2ª. Aula Interativa + 10 pontos *

 Feedback + 5 pontos

*Reposição da aula interativa (para quem não assistiu ao vivo).


TOTAL = 100 pontos
Próxima Aula
❑ Capítulo 1 - Introdução ao Mundo dos Dados.
Introdução ao Mundo dos Dados
Capítulo 1

Aula 1.1. Dado, Metadado e Pirâmide do


Conhecimento
Prof. Gustavo Aguilar
Nesta Aula
❑ Dado
❑ Metadado
❑ Informação
❑ Pirâmide do Conhecimento
Dados
▪ Coleção de fatos em uma forma bruta ou desorganizada,
como números ou caracteres.

Exemplo: 01102008
Metadado
▪ Prefixo “Meta” vem do grego e significa “além de”;

▪ Metadados são dados acerca dos dados;

▪ Facilitam o entendimento dos relacionamentos entre


os dados;

▪ Contribuem para a adição de contexto aos dados;

▪ Pode informar do que se trata aquele dado:

➢ 01102008 ➔ “isso é uma data”.


Informação
• Dados que foram processados ​de forma a facilitar a visualização,
medição e análise para um propósito específico.

• Exemplo: 01102008 ➔ isso é uma data ➔ 01 de outubro de 2008.


• Data de Casamento
Pirâmide do Conhecimento
▪ Hierarquia informacional utilizada principalmente nos campos
da Ciência da Informação e da Gestão do Conhecimento;

▪ Estruturada em quatro partes:


✓ Dados
✓ Informações
✓ Conhecimento
✓ Sabedoria;

▪ Pirâmide DIKW (Data-Information-Knowledge-Wisdom);


✓ Cada camada acrescenta certos atributos sobre a anterior.
Pirâmide do Conhecimento
▪ Dado: “matéria-prima”
▪ Estado bruto e sem significado de forma isolada.

▪ Informação: dados com significado


▪ “o quê?”, “quem?”, “onde?” ou “quando?”.

▪ Conhecimento: informação enriquecida


▪ “como?” e “por quê?”.

▪ Sabedoria: conhecimento aplicado


▪ Robotizações e Inteligência Artificial.
Pirâmide do Conhecimento
Pirâmide do Conhecimento
Pirâmide do Conhecimento
Pirâmide do Conhecimento
▪ Dado?
✓ Caracteres e números.

▪ Informação?
✓ Imagem de Zebra.

▪ Conhecimento?
✓ Zebra com machucado.

▪ Sabedoria?
✓ Acionar mecanismos do zoológico para direcionar a zebra para o

setor veterinário.
Pirâmide do Conhecimento
Próxima Aula
❑ Tipos de Dados.
Introdução ao Mundo dos Dados
Capítulo 1

Aula 1.2. Tipos de Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ Dados Estruturados
❑ Dados Semiestruturados
❑ Dados Não Estruturados
❑ Dados na Era da Informação
Dados Estruturados
▪ Em geral, armazenados no formato tabular ➔em tabelas
➢ Linha + Coluna(s) ➔ Tupla

COD_CLIENTE NOM_CLIENTE NUM_TEL_CLIENTE IND_SEXO_CLIENTE


1 JOÃO 33333333 M
2 MARIA 99999999 F
3 JOSÉ 88888888 M
4 TIAGO 66666666 M
5 PEDRO 44444444 M
6 MATEUS 11111111 M
7 ANA 77777777 F
8 TEREZA 55555555 F
9 CLLODDOVILL 90000000 D
Dados Estruturados
▪ Organizados e representados com uma estrutura rígida:
➢ Aderem a um esquema (schema físico de dados).

▪ Definição prévia de um modelo de dados:


➢ Todos os registros de uma tabela possuem as mesmas colunas

e propriedades.
Dados Semiestruturados
▪ Não contém toda a rigidez requerida na definição dos tipos de dados
estruturados;

▪ Procuram manter certa uniformidade no armazenamento das informações:


➢ Mantém tags e marcações internas que identificam elementos de dados

separados.

▪ Comumente chamados de dados não relacionais ou NOSQL.


Dados Não Estruturados
▪ Não são estruturados por meio de modelos ou esquemas de dados
predefinidos;

▪ Significa que não há restrições quanto aos tipos de dados que podem conter;

▪ Dados binários (blob) podem conter:


✓ Documento PDF

✓ Imagem JPEG

✓ Áudio MP3

✓ Vídeo MPEG

✓ Etc.
Dados na Era da Informação
▪ Início da “Era da Internet”:
✓ Volume de dados não muito significativo;

✓ Grande parte dos dados de tipo textual;

✓ Quase a totalidade dos sistemas trabalhando com dados estruturados.


Dados na Era da Informação
▪ “Pré-era da Informação”:
✓ Expansão da Internet;

✓ Volume de dados iniciando um crescimento exponencial;

✓ Sistemas trabalhando também com dados semiestruturados.


Dados na Era da Informação
▪ Era da Informação:
✓ Uso massivo de Internet banda larga;

✓ Computação ubíqua, Internet das Coisas (IoT), Big Data, etc.;

✓ Uso intensivo de redes sociais para divulgação de informações e conteúdo;

✓ Fotos, vídeos, posts, likes, snaps, etc.;

✓ Crescimento exponencial do volume de dados (+ não estruturados);

✓ Proliferação de soluções de Big Data para lidar com esse alto volume de

dados não estruturados;

✓ Coexistência com soluções legadas e/ou baseadas em dados estruturados

/ semiestruturados.
Dados na Era da Informação
▪ Era da Informação
Dados na Era da Informação
▪ Papel fundamental dos Profissionais da Área de Dados:
✓ Arquiteto de Dados / Administrador de Dados (AD)

✓ Administrador de Banco de Dados (DBA)

✓ Oficial de Proteção de Dados (DPO)

✓ Analista de Banco de Dados

✓ Analista de Dados

✓ Engenheiro de Dados

✓ Cientista de Dados

✓ Etc.
Próxima Aula
❑ Perfis de Profissionais da Área de Dados.
Introdução ao Mundo dos Dados
Capítulo 1

Aula 1.3. Perfis de Profissionais da Área de Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ Overview do Processo de Soluções de Dados
❑ Perfis de Profissionais de Dados
Overview do Processo de
Soluções de Dados

Projetar a Implantar a Implantar o Análise de Dados


solução infraestrutura processo Ciência de Dados
para a solução (pipeline) de Aprendizado de
dados Máquina
Etc.
Perfis de Profissionais de Dados
▪ Arquiteto de Soluções
▪ Arquiteto de Dados
▪ Administrador de Banco de Dados
▪ Engenheiro de Dados

▪ Analista de Dados
▪ Cientista de Dados

▪ Engenheiro de Inteligência Artificial


Perfis de Profissionais de Dados
Arquiteto de Soluções (Solutions Architect)

▪ Visão holística de toda a solução (visão do ecossistema);

▪ Integração das soluções;

▪ Recursos e capacidade para a solução;

▪ Estratégias de backup, monitoramento;

▪ Disponibilidade e escalabilidade da solução;

▪ Plano de Continuidade de Negócio (PCN);

▪ Custo da solução, etc.


Perfis de Profissionais de Dados
Arquiteto de Dados (Data Architect)

▪ Arquiteturas para armazenamento dos dados (centralizadas /


distribuídas, escaláveis, etc.);

▪ Modelos de dados;

▪ Estruturas de armazenamento dos dados;

▪ Governança de dados (acesso, retenção, etc.);

▪ Administração de dados corporativos;

▪ Backup de dados de negócio, etc.


Perfis de Profissionais de Dados
Administrador de Banco de Dados (DBA)

▪ Aspectos de implantação (instalação / aprovisionamento):


✓ SGBDs;

✓ Plataformas de armazenamento de dados;

✓ Bancos de dados;

✓ Repositórios / quotas.

▪ Aspectos operacionais:
✓ Tunning e troubleshoting;

✓ Disponibilidade dos SGBDs / plataformas;

✓ Segurança de acesso aos dados.


Perfis de Profissionais de Dados
Engenheiro de Dados (Data Engineer)

▪ Projeto do Pipeline (Fluxo) de Dados ➔ ETL


✓ Extração de dados;

✓ Transformação de dados;

✓ Ingestão (carga) de dados.

▪ Implementação e gerenciamento do fluxo de dados estruturados e


não estruturados de diversas origens (fontes de dados);

▪ Construção do Data Lake (Lago de Dados).


Perfis de Profissionais de Dados
Analista de Dados (Data Analyst)

▪ Projetar e construir modelos de dados analíticos;

▪ Análises Descritivas: ajudar a responder questões acerca


do que aconteceu;

▪ Transformar dados em informações analíticas que tenham


valor comercial;

▪ Planejamento e gerenciamento de dashboards.


Perfis de Profissionais de Dados
Cientista de Dados (Data Scientist)

▪ Aplicação de modelos matemáticos e análises avançadas para


ajudar a gerar valor a partir dos dados;

▪ Análises Preditivas: o que vai acontecer;

▪ Análises Prescritivas: o que precisa ser feito para atingir


determinado objetivo;

▪ Suporte a decisões orientadas a dados (Data-Driven Decision).


Perfis de Profissionais de Dados
Engenheiro / Analista de Inteligência Artificial

▪ Arquitetar e implementar soluções de IA


✓ Serviços cognitivos;

✓ Machine Learning;

✓ Mineração de conhecimento.

▪ Suporte a soluções de processamento de linguagem natural,


reconhecimento de voz e imagem;

▪ Bots e agentes virtuais autonômos.


Overview do Processo de
Soluções de Dados
Arquiteto de Soluções Adm. Banco de Dados Engenheiro Analista de Dados
Arquiteto de Dados Adm. Big Data de Dados Cientista de Dados
Engenheiro de IA

Projetar a solução Implantar a infraestrutura Implantar o Análise de Dados


para a solução processo Ciência de Dados
(pipeline) de Aprendizado de
dados Máquina
Etc.
Próxima Aula
❑ Escalabilidade e Elasticidade.
Introdução ao Mundo dos Dados
Capítulo 1

Aula 1.4. Escalabilidade e Elasticidade


Prof. Gustavo Aguilar
Nesta Aula
❑ O Que É Escalabilidade?
❑ Escalabilidade Vertical
❑ Escalabilidade Horizontal
❑ Computação Elástica / Elasticidade
O Que É Escalabilidade?
▪ Capacidade de escalar o ambiente, ou seja, de adicionar mais recursos computacionais
✓ Poder de processamento (CPU)

✓ Cache (memória RAM)

✓ Capacidade de armazenamento (disco)

✓ Velocidade de transmissão (network)

✓ Nós de processamento (worker node)

✓ Nós de armazenamento (data node)

▪ Pode ser feita de forma transparente ou não;

▪ Pode ser vertical ou horizontal.


Escalabilidade Vertical
▪ Adicionar mais recursos (CPU, RAM, etc.) aos integrantes do ambiente;

▪ Não se altera a quantidade de integrantes do ambiente.


Escalabilidade Vertical
Escalabilidade Horizontal
▪ Adicionar novos integrantes ao ambiente;

▪ Altera-se a quantidade de integrantes do ambiente;

▪ Objetivo é dar mais capacidade de processamento paralelo (simultâneo).


Escalabilidade Horizontal
Esc. Horizontal x Vertical
Elasticidade
▪ Capacidade de aumentar e reduzir rapidamente os recursos
computacionais de um ambiente;

▪ Requer escalabilidade vertical / horizontal.


Elasticidade
▪ Para atender às exigências dinâmicas, sem se preocupar com o
planejamento de capacidade e os picos de utilização.
Próxima Aula
❑ Tipos de Workloads de Dados.
Introdução ao Mundo dos Dados
Capítulo 1

Aula 1.5. Tipos de Workloads de Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ Carga de Trabalho
❑ Tipos de Workloads
❑ Workloads x Escalabilidade
Carga de Trabalho
▪ Workload;

▪ Quantidade de processamento que determinados recursos computacionais


recebem para serem executado em um determinado momento;

▪ Definida por três propriedades:


✓ Tempo de Resposta: o tempo entre uma solicitação e uma resposta;

✓ Taxa de Transferência: quanto trabalho é realizado durante um período

de tempo;

✓ Tipo de Workload: forma e frequência como a carga de trabalho é

executada.
Tipos de Workloads
Existem várias classificações, mas na área de dados, a mais comum é:

➢ TRANSACIONAL: baseado em transações (unidade de trabalho


pequena e discreta) e também conhecido como OLTP (Online
Transactional Processing);

➢ ANALÍTICO: voltado para cenários de análises de dados

oriundos de diversas fontes e também conhecido OLAP


(Online Analytical Processing).
Workload OLAP
Workload OLAP
Pode acontecer de duas formas: BATCH e STREAMING.

➢ BATCH: dados são coletados em um grupo, e todo o grupo é


então processado em um momento futuro como um lote.
Workload OLAP
➢ STREAMING: cada novo dado é processado quando chega.
Batch x Streaming
❖ Quanto ao ESCOPO dos dados:
▪ Batch ➔ pode processar todos os dados do conjunto de dados.

▪ Streaming ➔ normalmente só tem acesso aos dados recebidos mais


recentemente, ou dentro de uma janela de tempo (os últimos 30
segundos, por exemplo).

❖ Quanto ao VOLUME / TAMANHO dos dados:


▪ Batch ➔ lida com grandes conjuntos de dados de forma eficiente.

▪ Streaming ➔ destinado a registros individuais ou micro lotes


compostos de poucos registros.
Batch x Streaming
❖ Quanto ao DESEMPENHO:
▪ Batch ➔ a latência é normalmente de algumas horas.

▪ Streaming ➔ o processamento normalmente ocorre imediatamente,


com latência da ordem de segundos ou milissegundos.

❖ Quanto à ANÁLISE:
▪ Batch ➔ análises complexas.

▪ Streaming ➔ respostas simples, agregações ou cálculos, como


média e desvio padrão.
Workloads x Escalabilidade
❖ BATCH: escalabilidade programa.

Capacidade Capacidade
Normal Janela de Processamento Batch Normal
Workloads x Escalabilidade
❖ STREAMING e OLTP: escalabilidade sobre demanda.
Próxima Aula
❑ Capítulo 2 - Introdução a Banco de Dados.
Introdução a Banco de Dados
Capítulo 2

Aula 2.1. Conceitos Básicos de Banco de Dados - Parte I


Prof. Gustavo Aguilar
Nesta Aula
❑ Banco de Dados
❑ Sistema Gerenciador de Banco de Dados
❑ Sistema de Banco de Dados
❑ Instância de Banco de Dados
Banco de Dados
Banco de Dados
➢ Mas o que é um Dado?
✓ Algo que qualifica ou é qualificado, quantifica ou é quantificado,

e que pode ser registrado;

✓ Um fato com significado implícito;

✓ Característica, elemento ou quantidade conhecida;

✓ Elemento para a formação de um juízo

(definição do dicionário Aurélio).


Banco de Dados
➢ Exemplos de Dados

✓ Nome ✓ Data

✓ Cor ✓ Local

✓ Idade ✓ Forma, etc.


Banco de Dados
➢ Os dados abaixo têm significado?

15/01/1950
José da Silva
56

Amarelo 91

Guaxupé
Quadrado
Banco de Dados
➢ E agora?

Idade em anos
56
José da Silva
Nascimento
15/01/1950

Amarelo 91

Natural de Tamanho dos lados em cm

Cor
Guaxupé predominante Quadrado
Banco de Dados
Banco de Dados
▪ “É uma coleção de dados inter-relacionados, representando
informações sobre um domínio específico.” (KORTH, 1994, p.1)

▪ “É uma coleção de dados relacionados.” (ELMASRI; NAVATHE, 2011, p.4)

Banco de Dados Manual

Banco de Dados Computacional / Informatizado


SGBD
▪ Sistema Gerenciador de Banco de Dados;
▪ É uma coleção de programas, ou seja, um software, que permite aos
usuários criar e manter um banco de dados;

▪ “Um sistema de software de propósito geral que facilita os


processos de definição, construção, manipulação e
compartilhamento de bancos de dados entre vários usuários e
aplicações.” (ELMASRI; NAVATHE, 2011, p.4)
SGBD
SGBD
✓ Sistemas Gerenciadores de Bancos

de Dados Relacionais (SGBDR);

✓ Sistemas Gerenciadores de Bancos


de Dados NOSQL (Não Relacionais);

✓ Sistemas Gerenciadores de Bancos

de Dados NewSQL.
Sistema de Banco de Dados
▪ Ecossistema formado pelo SGBD, o(s) banco(s) de dados, todos os dados
manipulados e armazenados, além das aplicações que usam o banco de
dados para inserir, alterar, excluir ou consultar dados.
Instância de Banco de Dados
▪ Processo do mecanismo de banco de dados (SGBD) executado como um
serviço do sistema operacional;

▪ Gerencia um ou mais bancos de dados dos aplicativos;


Instância de Banco de Dados
▪ Cada servidor pode executar várias instâncias;

▪ Aplicativos se conectam à instância para executar trabalhos em um banco de


dados gerenciado pela instância.
Próxima Aula
❑ Conceitos Básicos de Banco de Dados - Parte II.
Introdução a Banco de Dados
Capítulo 2

Aula 2.2. Conceitos Básicos de Banco de Dados - Parte II


Prof. Gustavo Aguilar
Nesta Aula
❑ Estruturas de Armazenamento
❑ Esquema de Dados
❑ Instância de Dados
❑ Linguagem de Consulta
❑ Modelo de Dados
Estruturas de Armazenamento
▪ Onde os dados são armazenados e organizados;

▪ Exemplo: tabela para armazenar dados em um banco de dados de um sistema


gerenciador de banco de dados relacional.
Estruturas de Armazenamento
▪ Estruturas de armazenamento adequadas para cada tipo de dado;

▪ Exemplo: tabela para armazenar dados estruturados.


Esquema de Dados
▪ Também chamado de schema;
▪ Concepção global do banco de dados, ou seja, é a forma como o
banco de dados está estruturado e as regras que deve seguir;

▪ Exemplo:
➢ Funcionario (nome, sexo, endereço)

✓ Nome ➔ string de 100 caracteres;

✓ Sexo ➔ string de 1 caractere;

✓ Endereço ➔ string de 200 caracteres.


Esquema de Dados
Esquema Físico
▪ Esquema de dados com os tipos de dados, propriedades e regras aplicáveis ao
SGBD em questão.
Instância de Dados
▪ Coleção de informações armazenadas no banco de dados em um
instante particular, ou seja, é uma fotografia do esquema de banco
de dados;

▪ Exemplos de instâncias de
dados para o schema

➢ Funcionario (José, M, Rua Solo 10)

➢ Funcionario (Maria, F, Rua Lagoa 20)


Linguagem de Consulta
▪ Linguagem de consulta de dados é usada para interagir com o banco de
dados, realizando, por exemplo consulta aos dados;

▪ SQL (Structured Query Language / Linguagem de Consulta Estruturada):


linguagem de consulta de dados mais famosa e utilizada no mundo.
Modelo de Dados
Representação abstrata e simplificada dos dados de um sistema
real, com a qual se pode explicar ou testar o seu comportamento,
em seu todo ou em partes. (Paulo Cougo)
Modelo de Dados
ZONA LOCALIDADE LOCALIDADE
NUMERO ZONA CODIGO ESTADO CODIGO LOCALIDADE
DESCRICAO ZONA NOME LOCALIDADE NOME LOCALIDADE
CODIGO ESTADO (FK) CODIGO LOCALIDADE (FK) SGL_UF
CARGO
CODIGO CARGO

NOME CARGO

E/20
CANDIDATO
SECAO NUMERO SECAO (FK)
NUMERO ZONA (FK) NUMERO CANDIDATO
NUMERO SECAO
NUMERO ZONA (FK) NUMERO CANDIDATO (FK) NUMERO PARTIDO (FK)
QUANTIDADE TOTAL VOTOS NOME CANDIDATO
DESCRICAO ENDERECO
CODIGO CARGO (FK)

ELEITOR PARTIDO
NUMERO TITULO ELEITOR NUMERO PARTIDO
NOME ELEITOR NOME PARTIDO
NUMERO SECAO (FK) SIGLA PARTIDO
NUMERO ZONA (FK)
Próxima Aula
❑ Data Warehouse, Data Lake e Big Data.
Introdução a Banco de Dados
Capítulo 2

Aula 2.3. Data Warehouse, Data Lake e Big Data


Prof. Gustavo Aguilar
Nesta Aula
❑ Data Warehouse
❑ Big Data
❑ Data Lake
❑ Data Warehouse Moderno (MDW)
Data Warehouse
▪ Armazém de dados;

▪ Depósito de dados orientado por assunto, integrado, não volátil, variável com
o tempo, para apoiar as decisões gerenciais; (Date, 2004)

▪ Um data warehouse centraliza e consolida dados de várias fontes e


geralmente contém grandes quantidades de dados históricos.
Data Warehouse
▪ Um data warehouse típico geralmente inclui os seguintes
elementos:

✓ Banco de dados relacional para armazenar e gerenciar dados

(estruturados);

✓ 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.


Data Warehouse
▪ Processo ETL (Extract ➔ Transform ➔ Load).
Big Data
Big Data
▪ Big Data está focado principalmente em questões de volume de conjunto de
dados extremamente grandes gerados a partir de práticas tecnológicas, tais
como mídia social, tecnologias operacionais, acessos à Internet e fontes de
informações distribuídas. Big Data é essencialmente uma prática que
apresenta novas oportunidades de negócios. (Gartner Group)

▪ A intensa utilização de redes sociais online, de dispositivos móveis para


conexão à Internet, transações e conteúdos digitais, e também o crescente
uso de computação em nuvem tem gerado quantidades incalculáveis de
dados. O termo Big Data refere-se à este conjunto de dados cujo crescimento
é exponencial e cuja dimensão está além da habilidade das ferramentas
típicas de capturar, gerenciar e analisar dados. (McKinsey Global Institute)
Big Data
▪ Termo adotado pelo mercado para descrever problemas no gerenciamento e
processamento de informações de quantidades extremas, as quais excedem a
capacidade das tecnologias de informações tradicionais ao longo de uma ou
várias dimensões.
Big Data
▪ Campo que trata de maneiras de analisar, extrair sistematicamente
informações ou, de outra forma, lidar com conjuntos de dados que são muito
grandes ou complexos para serem tratados por softwares de aplicativos de
processamento de dados tradicionais.
Big Data
Big Data
▪ VOLUME: a quantidade de dados gerados, que costumava ser medida em
Gigabytes agora é medida em Zettabytes (ZB), caminhando para Yottabytes
(YB).

▪ VELOCIDADE: velocidade em que os dados são gerados e se tornam


acessíveis.

▪ VARIEDADE: de formatos, de tipos (estruturado, não estruturado e semi-


estruturado), e da natureza (numérica, data, caracter, etc.).

▪ VARIABILIDADE: mesma combinação de dados cujo significado muda


constantemente.
Big Data
▪ VERACIDADE: garantir que os dados sejam precisos, verdadeiros, fidedignos.

▪ VISUALIZAÇÃO: formas mais aderentes para visualizar grandes quantidades


de dados complexos.

▪ VALOR: transformar dados em valor, vantagem competitiva ou otimização


operacional.
Big Data
▪ Big Data é mais que um produto de software ou hardware;

▪ É um conjunto de tecnologias, processos e práticas que permitem às


empresas analisarem dados que antes não tinham acesso e tomar decisões,
ou mesmo gerenciar atividades de forma muito mais eficiente.
Data Lake
▪ Repositório centralizado projetado para armazenar, processar e
proteger grandes quantidades de dados estruturados,
semiestruturados e não estruturados;
Data Lake
▪ Processo ELT (Extract ➔ Load ➔ Transform);
▪ Usado principalmente por cientistas de dados, que aplicam modelos
matemáticos capazes de extrair insights dos dados do Data Lake.
Data Warehouse Moderno
▪ Modern Data Warehouse (MDW);
▪ Utiliza recursos em nuvem para reunir facilmente, e em tempo mais
ágil, todos os dados em qualquer escala, sejam estruturados, não
estruturados ou semiestruturados;

▪ Traz agilidade, escalabilidade, facilidade, mais performance e


redução expressiva de custos operacionais;

▪ Permite insights para tomada de decisões de negócios mais rápidas.


Data Warehouse Moderno
Próxima Aula
❑ Projeto de Banco de Dados.
Introdução a Banco de Dados
Capítulo 2

Aula 2.4. Projeto de Banco de Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ Projeto de Banco de Dados
❑ Minimundo
❑ Modelo de Dados Conceitual
❑ Modelo de Dados Lógico
❑ Modelo de Dados Físico
Pirâmide do Conhecimento
▪ Necessita de um Modelo de Dados que explique
os relacionamentos entre os dados, gerando
informação, para que seja possível prover
insumos consistentes para a geração de
conhecimento e sabedoria.

▪ Modelo de dados que preveja todos os dados


brutos necessários.

Muito importante !!
Projeto de Banco de Dados
▪ Visão geral do processo de projeto de banco de dados.

*Universo do
Discurso

1
Minimundo
▪ Definição da porção da realidade a ser analisada;

▪ Levantamento de requisitos, regras e interações internas e externas;

▪ Construído normalmente com entrevistas e coleta de informações;

▪ Resultado:
✓ Descrição textual

ou

✓ Representação gráfica
Projeto de Banco de Dados
▪ Visão geral do processo de projeto de banco de dados.

*Universo do
Discurso

1 2

4
Projeto de Banco de Dados
Maior grau de abstração, sem
detalhes de modelagem e/ou
Minimundo tecnologia.
Detalhes da estrutura da
Modelo Conceitual informação, independente das
restrições.
Detalhes baseados na
Modelo Lógico abordagem (hierárquica, rede,
relacional e NOSQL).
Menor grau de abstração, com
Modelo Físico detalhes das estruturas internas
do banco de dados (arquivos /
Nível de tabelas / índices, etc.).
Abstração
Projeto de Banco de Dados
▪ Visão geral do processo de projeto de banco de dados.

*Universo do
Discurso

1 2

5
Próxima Aula
❑ Capítulo 3 - Sistemas Gerenciadores de Bancos de Dados.
Sistemas Ger. de Bancos de Dados
Capítulo 3

Aula 3.1. Antepassados dos SGBDs


Prof. Gustavo Aguilar
Nesta Aula
❑ Sistema de Cartão Perfurado
❑ Sistema de Arquivos
Sistema de Cartão Perfurado
▪ Um cartão perfurado é um pedaço de papel rígido que contém dados digitais
representados pela presença ou ausência de furos em posições pré-definidas;
Sistema de Cartão Perfurado
▪ Sistema de Cartão Perfurado foi inventado por Herman Hollerith, no final de
1800;

▪ Herman desenvolveu a
tecnologia de
processamento de
dados de cartão
perfurado para o
Censo dos EUA de
1890.
Sistema de Cartão Perfurado
▪ Armazenamento de dados mais simples e em menor volume;

▪ Durabilidade do meio físico de armazenamento;

▪ Tempo de processamento, etc.


Sistema de Arquivos
▪ Arquivo de Computador é um recurso para armazenamento de dados, que
está disponível a um programa de computador e é normalmente baseado em
algum tipo de armazenamento durável.
Sistema de Arquivos
▪ Sistema de Arquivos é um sistema utilizado para
armazenar, organizar e acessar dados em um
computador de forma efetiva;

▪ Os dispositivos que utilizam sistemas de arquivos são discos rígidos, mídias


ópticas como CDs e DVDs, cartões de memória e pendrives (flash drives) e
discos flexíveis (disquetes), entre outros;

▪ Permite o armazenamento organizado de arquivos, agregando características


a cada arquivo como um nome e permissões de acesso.
Sistema de Arquivos
▪ Redundância de dados: mesma informação repetida em arquivos diferentes;
Sistema de Arquivos
▪ Inconsistência de dados: as várias cópias dos dados podem divergir ao longo
do tempo;
Sistema de Arquivos
▪ Dificuldade de acesso aos dados: acesso sequencial;

▪ Isolamento de dados: dados espalhados em diversos arquivos ➔ dificuldade


para fazer cruzamento de dados;

▪ Desperdício de espaço de armazenamento;

▪ Problemas de integridade: como garantir que determinados valores dos


campos satisfaçam certas restrições?
Sistema de Arquivos
▪ Problemas de atomicidade: uma operação atômica deve ocorrer por
completo ou não ocorrer;

▪ Problemas no acesso concorrente: a interação entre atualizações


concorrentes pode resultar em inconsistência dos dados;

▪ Linguagem de consulta não amigável;

▪ Problemas de segurança: como garantir o controle de acesso aos dados via


permissões aos usuários?
Próxima Aula
❑ Características dos SGBDs.
Sistemas Ger. de Bancos de Dados
Capítulo 3

Aula 3.2. Características dos SGBDs


Prof. Gustavo Aguilar
Nesta Aula
❑ Propósitos de um SGBD
❑ Características Gerais de SGBDs
Propósitos de um SGBD
▪ Armazenar os dados de forma protegida contra acessos indevidos e
contra danos ou perdas;

▪ Disponibilizar os dados de forma fácil e rápida;


▪ Isolar os usuários dos detalhes mais internos do banco de dados;
▪ Prover independência de dados (lógica e física) para as aplicações;
▪ Reduzir / eliminar redundância e inconsistência de dados;
▪ Reduzir a perda de espaço de armazenamento;

▪ Garantir a integridade dos dados;


Propósitos de um SGBD
▪ Possibilitar rapidez no acesso / manipulação do dado através de uma
linguagem de consulta;

▪ Reduzir esforço humano no desenvolvimento / utilização dos dados;


▪ Fazer o controle de acesso / atualizações concorrentes;
▪ Possibilitar implementações de restrições de segurança e
padronização.
Características Gerais de SGBDs
▪ Natureza autodescritiva:
✓ Definição completa ou descrição da estrutura do banco de dados e suas

restrições;

✓ Armazenadas no catálogo do SGBD ➔ Dicionário de Dados;

✓ Metadados com informações como a estrutura de cada registro, o tipo e

o formato de armazenamento de cada item de dado e várias restrições


sobre os dados.
Características Gerais de SGBDs
▪ Isolamento entre os programas e dados:
✓ No armazenamento usando sistema de arquivos, a estrutura do arquivo

de dados está embutida no programa da aplicação ➔ qualquer


mudança na estrutura de dados / arquivo pode exigir alterações em
todos os programas que acessam o arquivo.
Características Gerais de SGBDs
▪ Isolamento entre os programas e dados:
✓ Garantido no SGBD com a abstração de dados:

✓ SGBDs fornecem uma representação conceitual de dados que não inclui

grandes / profundos detalhes de como ou onde o dado é armazenado, ou


como as operações de busca dos dados no disco é feita;

✓ A estrutura detalhada e a organização de cada estrutura de armazenamento

são armazenadas no catálogo (dicionário de dados do banco de dados).


Características Gerais de SGBDs
▪ Compartilhamento de dados e processamento de transação
multiusuários

✓ Um SGBD multiusuário deve permitir que diversos usuários acessem o

banco de dados ao mesmo tempo;

✓ O SGBD deve incluir um software de controle de concorrência para

garantir que diversos usuários, ao tentarem atualizar o mesmo dado, o


façam de um modo controlado, de forma a assegurar que os resultados
das atualizações sejam corretos;
Características Gerais de SGBDs
▪ Compartilhamento de dados e processamento de transação
multiusuários

✓ Utiliza o recurso de transação: um programa em execução ou processo

que inclui um ou mais acessos ao banco de dados, como a leitura ou a


atualização de registros;
✓ A propriedade de isolamento garante que cada transação possa ser efetuada

de forma isolada de outras transações, mesmo quando centenas de


transações estiverem sendo executadas simultaneamente;

✓ A propriedade de atomicidade garante que todas as operações em um banco


de dados, dentro de uma transação, sejam executadas totalmente ou
nenhuma delas .
Características Gerais de SGBDs
▪ Suporte para múltiplas visões dos dados:
✓ Cada usuário pode ter ou solicitar diferentes perspectivas ou visões do

banco de dados;

✓ Visões podem ser um subconjunto de um banco de dados (algumas

tabelas, por exemplo) ou uma visão virtual dos dados (por exemplo,
com algumas colunas apenas da tabela ou parte dos dados).

Visão do
professor

Visão do
aluno Smith
Próxima Aula
❑ Arquitetura ANSI/SPARC e Independência de dados.
Sistemas Ger. de Bancos de Dados
Capítulo 3

Aula 3.3. Arquitetura ANSI/SPARC e Independência


de dados
Prof. Gustavo Aguilar
Nesta Aula
❑ Arquitetura ANSI/SPARC
❑ Independência de Dados
Arquitetura ANSI/SPARC
▪ Tem o objetivo de separar o usuário da aplicação do banco de
dados físico;

▪ É com ela que o SGBD provê as características de abstração de


dados e as múltiplas visões dos dados;

▪ Também chamada de Arquitetura de Três Esquemas.


Arquitetura ANSI/SPARC
Arquitetura ANSI/SPARC
▪ Nível Interno ou Físico: descreve como os dados estão de fato
armazenados no banco de dados.

▪ Nível Conceitual ou Lógico: descreve quais dados estão


armazenados no banco de dados e quais os relacionamentos entre
eles.

▪ Nível Externo ou de Visão: descreve apenas parte do banco de


dados. Pode-se ter mais de uma visão do mesmo banco de dados.
Arquitetura ANSI/SPARC
Exemplo: Type Funcionario = record
codigo : number;
nome : string;
sexo : string;
endereço : string;
end;

▪ Nível Interno: dado em um bloco consecutivo de memória (bytes);

▪ Nível Conceitual: instância dos dados, como no exemplo;


▪ Nível Externo: Programa de Cadastro de Funcionários (programa do
exemplo que esconde os detalhes dos tipos de dados).
Independência de Dados
“É a capacidade de modificar a definição dos esquemas em um
determinado nível, sem afetar o esquema do nível superior.”

(Korth, Henry)
Independência de Dados
✓ Independência de Dados Física: capacidade de modificar o esquema
físico sem precisar alterar a programação de acesso aos dados.

➢ Por exemplo, modificações para melhorar o desempenho.

✓ Independência de Dados Lógica: capacidade de modificar o


esquema lógico sem precisar alterar a programação de acesso aos
dados.

➢ Por exemplo, quando novas unidades de medida são inseridas no

sistema de uma fábrica de roupas.


Independência de Dados
❖ Pergunta: Qual independência de dados é a mais difícil
de ser alcançada?
✓ Resposta: a independência de dados lógica, pois os programas são
mais dependentes da estrutura lógica dos dados do que da forma
que o SGBD os acessa no disco.
Próxima Aula
❑ Tipos de SGBDS.
Sistemas Ger. de Bancos de Dados
Capítulo 3

Aula 3.4. Tipos de SGBDS


Prof. Gustavo Aguilar
Nesta Aula
❑ SGBD Hierárquico
❑ SGBD em Rede
❑ SGBD Orientado a Objetos
❑ SGBD Relacional
❑ SGBD Não Relacional
❑ SGBD New SQL
SGBD Hierárquico
▪ Conecta registros numa estrutura de dados em árvore através de
ligações, de tal modo que cada tipo de registro tenha apenas um
possuidor;

▪ Registros eram armazenados com ponteiros entre eles;


SGBD Hierárquico
▪ Queries tinham que processar uma tupla por vez, percorrendo a
estrutura hierárquica ➔ Sistema de “Navegação”.

Roupa
SGBD Hierárquico
▪ Não havia independência entre os esquemas lógico e físico;
▪ Muito esforço de programação para usar banco de dados
hierárquico;

▪ Exemplo: IMS (Information Management System) da IBM.


SGBD de Rede
▪ Organização semelhante à dos SGBDs hierárquicos, mas eliminando
o conceito de hierarquia:

✓ Permite que um mesmo

registro esteja envolvido


em várias associações, ou
seja, um registro filho
pode ser ligado a mais de
um registro pai, criando
conexões bastante
complexas.
SGBD de Rede
▪ Bastante utilizado em sistemas para computadores de grande porte
(mainframe);

▪ A estrutura é formada de entidade (registros), atributos (itens de


dados), tipo de registro e ocorrência do registro;

▪ Assim como no hierárquico, as aplicações devem ser construídas


para atravessar um conjunto de registros interligados previamente.

▪ Exemplos:
✓ CODASYL (Comitee for Data Systems Language)
✓ ADABAS (Adaptable DAta BAse System) da Software AG
✓ RDM (Raima Database Manager) / db_VISTA
SGBD Orientado a Objetos
▪ Dados são armazenados na forma de objetos, ou seja, utilizando a
estrutura de dados denominada orientação a objetos, a qual
permeia as linguagens modernas de programação;

▪ Referenciado por OODBMS (Object-Oriented Database Management System)


ou SGBDOO.
SGBD Orientado a Objetos
▪ Dados só podem ser manipulados pelos métodos definidos pela
classe de que estes objetos pertencem;

▪ Os objetos são organizados numa hierarquia de tipos e subtipos


que recebem as características de seus supertipos (herança);

▪ Os objetos podem conter referências para outros objetos, e as


aplicações acessam os dados usando navegação de programação.

▪ Exemplos:
✓ ORION
✓ GemStone
✓ Caché
SGBD Relacional
▪ Surgiu com a Teoria Relacional de Edgar Frank Codd, que se baseou
na Teoria de Conjuntos e Álgebra Relacional;

▪ Registros armazenados de forma tabular;


▪ Possui linguagem de alto nível (declarativa);
▪ Possui alta independência de esquemas;
✓ Queries independentes do meio físico.

▪ Regras de negócio podendo estar no banco de dados;


▪ Exemplos: MySQL, Oracle, SQL Server, Sybase, PostgreSQL, DB2 etc.
SGBD Não Relacional
▪ NOSQL ➔ Not Only SQL;
▪ Propósito de gravar e recuperar grande volume de dados de forma
mais rápida ➔ Filosofia da Agregação Atômica;

▪ Regras de negócio voltam para a camada de aplicação;


▪ Altamente escaláveis horizontalmente (além de verticalmente);
▪ Dados semiestruturados e esquema de dados flexível;
SGBD Não Relacional
▪ Quatro principais famílias de SGBDs NOSQL;

▪ Exemplos: Cassandra, MongoDB, CouchDB, DynamoDB, Hbase,


MemcacheDB, Redis, Neo4j, OrientDB etc.;

▪ http://nosql-database.org
SGBD NewSQL
▪ SGBDD Relacional que procura fornecer o mesmo desempenho
escalável de um SGBD NOSQL;

▪ Exemplos: Amazon Aurora, CockroachDB, CosmosDB, novas engines


otimizadas (MySQL NDB Cluster, SQL Server Column Store, etc.).
Linha do Tempo dos SGBDs
Big Data

80’s 90’s 2000 2000’s NOSQL


Bancos de dados Surgimento da SGBDRs Procura por bancos Nesse contexto, se
hierárquicos, de Internet (www) / centralizados não de dados começa a falar em
rede ou dos Necessidades novas atenderiam às distribuídos, de fácil gerenciadores de
dominantes bancos de armazenamento demandas futuras escalabilidade e alto bancos de dados
relacionais e processamento da desempenho NOSQL.
massa de dados
Próxima Aula
❑ Tipos de Arquiteturas de SGBDs.
Sistemas Ger. de Bancos de Dados
Capítulo 3

Aula 3.5. Tipos de Arquiteturas de SGBDs


Prof. Gustavo Aguilar
Nesta Aula
❑ Arquitetura Monolítica
❑ Arquitetura Cliente-Servidor
❑ Arquitetura Centralizada
❑ Arquitetura Distribuída
Arquitetura Monolítica
▪ Banco de dados e aplicação no mesmo servidor;
▪ Acesso do usuário final centralizado nesse servidor único.
Arquitetura Monolítica
▪ Vantagens:
✓ Mais fácil de gerenciar;

✓ Comunicação mais rápida entre o banco de dados e a aplicação, por ser

local.

▪ Desvantagens:
✓ Difícil de escalar ➔ somente verticalmente;

✓ Degradação de performance da aplicação gera impactos no banco de

dados e vice-versa;

✓ Indisponibilidade do servidor indisponibiliza o acesso à aplicação e aos

dados armazenados no banco de dados.


Arquitetura Monolítica
▪ Desvantagens:
✓ SPOF (Single Point Of Failure) ou ponto único de falha: Local no sistema

que, caso falhe, provoca a falha de todo o sistema.


Arquitetura Cliente-Servidor
▪ Camada de banco de dados separada da camada da aplicação.
Arquitetura Cliente-Servidor
▪ Vantagens:
✓ Independência entre a camada da aplicação e do banco de dados;

✓ Isolamento entre a camada de aplicação e a camada de banco de dados;

✓ Segurança e controles adequados para cada camada.

▪ Desvantagens:
✓ Introduz latência de comunicação entre a aplicação e o banco de dados;

✓ Necessidade de mais recursos (hardware, software) ➔ mais custos;

✓ Aumento da complexidade de administração.


Arquitetura Cliente-Servidor
✓ SPOF pode continuar a existir e carece atenção!

Servidor de Aplicação

Servidor de
Banco de Dados
Arquitetura Centralizada
▪ Camada de banco de dados sem redundância ➔ dados
centralizados em um único sistema de armazenamento;

▪ Processamento centralizado de consultas e transações;


▪ Pode usar componentes físicos únicos (topologia stand alone) ou
compartilhados (topologia cluster com alta disponibilidade do
servidor / SGBD).
Arquitetura Centralizada
Clients
Cluster Failover

Public Network

Private Network
SQL Server SQL Server SQL Server SQL Server
Instance 1 Instance 1 Instance 1 Instance 1

Node 1 Node 2 Node 3 Node 4

Shared Storage
(SAN/SMB)
Arquitetura Centralizada
Clients
Cluster Failover

Public Network

Private Network
SQL Server SQL Server SQL Server SQL Server
Instance 1 Instance 1 Instance 1 Instance 1

Node 1 Node 2 Node 3 Node 4

Shared Storage
(SAN/SMB)
Arquitetura Centralizada
▪ Vantagens:
✓ Tolerância à falhas na camada dos servidores de banco de dados.

▪ Desvantagens:
✓ Sistema de armazenamento ainda continua único, sem tolerância à

falhas na camada de acesso aos dados;

✓ Necessidade de mais recursos (hardware, software) ➔ mais custos;

✓ Em topologia ativo-passivo ➔ ociosidade de hardware;

✓ Aumento ainda maior da complexidade de administração e instalação.


Arquitetura Centralizada
✓ SPOF pode continuar a existir e carece atenção!
Clients
Cluster Failover

Public Network

Private Network
SQL Server SQL Server SQL Server SQL Server
Instance 1 Instance 1 Instance 1 Instance 1

Node 1 Node 2 Node 3 Node 4

Shared Storage
(SAN/SMB)
Arquitetura Distribuída
▪ “Um sistema constituído por um conjunto de computadores
independentes, visto pelos utilizadores do sistema como sendo um
sistema coerente e único.” (Tanenbaum - Sistemas Distribuídos: Princípios e Paradigmas)

Topologia Percepção do Usuário


Arquitetura Distribuída
▪ Vantagens:
✓ Alta disponibilidade na camada de banco de dados;

✓ Tolerância à falhas na camada de armazenamento de dados, devido à

utilização de distribuição de dados ➔ replicação / particionamento;

✓ Escalabilidade horizontal e vertical mais fácil de se implementar.

▪ Desvantagens:
✓ Necessidade de mais recursos (hardware, software) ➔ mais custos;

✓ Controles a mais para garantir a integridade / consistência de dados;

✓ Aumento ainda maior da complexidade de administração e instalação.


Arquitetura Distribuída
Arquitetura Distribuída
✓ Possibilita eliminar SPOF na camada de banco de dados!

Banco de Dados
Servidor de Aplicação

Banco de Dados
Arquitetura Distribuída
❖ É possível eliminar 100% ???

Datacenter em Porto Alegre


Próxima Aula
❑ Componentes e Funcionamento de um SGBD.
Sistemas Ger. de Bancos de Dados
Capítulo 3

Aula 3.6. Componentes e Funcionamento de um SGBD


Prof. Gustavo Aguilar
Nesta Aula
❑ Componentes de um SGBD
❑ Funcionamento de um SGBD
Componentes de um SGBD
Componentes de um SGBD
❖ Arquivos de Dados

✓ Conjunto de arquivos (os dados em si).

❖ Dicionário / Catálogo de Dados

✓ Metadados do SGBD e bancos de dados.

❖ Gerenciador de Arquivos

✓ Gerencia a alocação do espaço necessário para a armazenagem do

arquivo no disco e as estruturas de dados utilizadas para representar a


informação armazenada.
Componentes de um SGBD
❖ Gerenciador de Banco de Dados

✓ Fornece a interface entre os dados armazenados, os programas de

aplicação e as solicitações submetidas ao sistema;

✓ Interage com o Gerenciador de Arquivos;

✓ Responsável pelo controle de segurança, controle de concorrência,

integridade, cópias de segurança e recuperação.

❖ Processador de Consultas

✓ Traduz comandos numa linguagem de consulta em instruções de baixo

nível, que são reconhecidas pelo Gerenciador de Banco de Dados.


Componentes de um SGBD
❖ Pré-Compilador DML

✓ Converte comandos DML embutidos em um aplicativo para chamadas

na linguagem hospedeira;

✓ Interage com o Processador de Consulta para gerar o código apropriado.

❖ Compilador DDL

✓ Converte comandos DDL em um conjunto de tabelas contendo

Metadados, que são armazenados no Catálogo de Dados;

❖ Índices

✓ Usados para performance e otimização nas operações com os dados.


Funcionamento de um SGBD

1. O programa de aplicação chama o SGBD para ler um registro lógico,


fornecendo critérios para a pesquisa.
Funcionamento de um SGBD

2. O SGBD verifica se o que o usuário quer ler existe e se ele tem


autorização para isso.
Funcionamento de um SGBD

3. O SGBD verifica na visão lógica quais os tipos de dados lógicos


necessários.
Funcionamento de um SGBD

4. O SGBD examina a descrição física e determina quais os registros físicos


a serem lidos.
Funcionamento de um SGBD

5. O SGBD emite uma ordem ao sistema operacional para que ele faça a
leitura dos registros solicitados.
Funcionamento de um SGBD

6. O sistema operacional interage com o meio físico onde os dados estão


armazenados.
Funcionamento de um SGBD

7. Os dados são transferidos para um buffer do sistema.


Funcionamento de um SGBD

8. O SGBD compara o sub-esquema (visão do usuário) com o esquema


(visão global), extraindo dos dados do buffer o registro lógico solicitado.
Funcionamento de um SGBD

9. O SGBD transfere os dados do buffer para a área de comunicação no


programa de aplicação.
Funcionamento de um SGBD

10. O SGBD fornece um código de status ao programa, informando o


resultado da operação, inclusive se houve algum erro.
Funcionamento de um SGBD

11. O programa de aplicação reassume o controle, podendo operar com os


dados na área de comunicação.
Próxima Aula
❑ Capítulo 4 - Introdução a Banco de Dados Relacional.
Introd. a Banco de Dados Relacional
Capítulo 4

Aula 4.1. Teoria de Banco de Dados Relacional


Prof. Gustavo Aguilar
Nesta Aula
❑ O Modelo de Dados Relacional
❑ Elementos do Modelo Relacional
O Modelo de Dados Relacional
▪ Criado por Edgar Frank Codd, em junho de 1970;
✓ Artigo A Relational Model of Data for Large Shared Data Banks.

▪ Representação dos dados é independente de como eles são


organizados internamente nos servidores;

▪ Representação tabular dos dados;


▪ Baseado na Álgebra Relacional.
O Modelo de Dados Relacional
▪ Dados sendo vistos como uma tupla ➔ linha formada por uma lista
ordenada de colunas;

COD_CLIENTE NOM_CLIENTE NUM_TEL_CLIENTE IND_SEXO_CLIENTE


1 JOÃO 33333333 M
2 MARIA 99999999 F
3 JOSÉ 88888888 M
4 TIAGO 66666666 M
5 PEDRO 44444444 M
6 MATEUS 11111111 M
7 ANA 77777777 F
8 TEREZA 55555555 F
9 CLLODDOVILL 90000000 D

▪ Facilidade para manipular e visualizar dados ➔ “boom” do modelo.


Elementos do Modelo Relacional
▪ Tabela: objeto para armazenamento lógico dos dados;
▪ Domínio: natureza dos valores. Exemplos:
✓ CODIGO CLIENTE ➔ NUMBER

✓ NOME CLIENTE ➔ STRING

✓ DATA NASCIMENTO ➔ DATE

▪ Coluna (campo): atributo do modelo conceitual + domínio do dado;

TIPO_PRODUTO
COD_TIPO_PRODUTO: Number
DSC_TIPO_PRODUTO: String
Elementos do Modelo Relacional
▪ Chave Primária (Primary Key / PK): coluna(s) que identificam
unicamente uma linha (tupla) em uma tabela;

➢ Exemplos: ID ÚNICO, CÓDIGO DO CLIENTE, CPF.

▪ Chave Candidata: não repetem valor e podem ser PK;


➢ Exemplos: TÍTULO DO ELEITOR, RG, CPF.

▪ Chave Estrangeira (Foreign Key / FK): elo de ligação entre tabelas.


MUSICA
CODIGO MUSICA: Number ESTILO

NOME MUSICA: String CODIGO ESTILO: Number


CODIGO ESTILO: Number (FK) NOME ESTILO: String
QUANTIDADE TEMPO MUSICA: String
Elementos do Modelo Relacional
▪ Cardinalidade: além de representar a quantidade de elementos das
entidades envolvidos na relação, indicam também as restrições de
nulidade das chaves estrangeiras.
➢ Notação Information Engineering (IE)
Elementos do Modelo Relacional
▪ Cardinalidades 0,1 e 0,N ➔ chaves estrangeiras podem ser nulas.
PRODUTO
COD_PRODUTO: Number NOT NULL TIPO_PRODUTO
NOM_PRODUTO: String NOT NULL
COD_TIPO_PRODUTO: Number NOT NULL
COD_TIPO_PRODUTO: Number NULL (FK)
DSC_TIPO_PRODUTO: String NULL
DSC_PRODUTO: String NULL
VLR_PRODUTO: Number NOT NULL

0,1:

▪ Cardinalidades 1:0,N e 1:0,1 ➔ chaves estrangeiras não nulas.

1:
Elementos do Modelo Relacional
▪ Restrições de Integridade
✓ Regra que garante a consistência dos dados em um relacionamento

entre duas tabelas;

✓ São implementadas por um recurso dos bancos de dados relacionais

chamado CONSTRAINT;

✓ Restricit (R): não permite deletar um registro que seja chave estrangeira

✓ Cascade (C): deleção em cascata

✓ Set Null (S): seta chave estrangeira para nulo


Elementos do Modelo Relacional
✓ Restricit (R): não permite deletar um registro que seja chave estrangeira

✓ Cascade (C): deleção em cascata

✓ Set Null (S): seta chave estrangeira para nulo


Elementos do Modelo Relacional
▪ Restrições de Integridade ➔ algoritmo para auxiliar a definição.
Elementos do Modelo Relacional
▪ Modelo de dados relacional de um Sist. de Agência de Turismo p/ o SGBDR Oracle.
SERVICO
CLIENTE
COD_SERVICO: NUMBER(3)
COD_CLIENTE: NUMBER(5)
COD_FORNECEDOR: NUMBER(3) (FK)
NOM_CLIENTE: VARCHAR2(50)
COD_FORMA_PAGAMENTO: NUMBER(2) (FK)
DSC_ENDERECO_COBRANCA: VARCHAR2(100) FK_FORNEC_SERVICO_01
DSC_SERVICO: VARCHAR2(50)
NUM_TELEFONE: NUMBER(12)
VLR_SERVICO: NUMBER(10,2)

FK_SERVICO_ITSOLSER_01
FK_CLIENTE_SOLISERV_01
FORNECEDOR
COD_FORNECEDOR: NUMBER(3)
NOM_FORNECEDOR: VARCHAR2(50)
ITEM_SOLICITACAO_SERVICO DSC_ENDERECO: VARCHAR2(100)
COD_ITEM_SOLICITACAO: NUMBER(5) NUM_TELEFONE: NUMBER(12)
NUM_SOLICITACAO_SERVICO: NUMBER(5) (FK)
COD_SERVICO: NUMBER(3) (FK)
FK_FORMAPAG_SERVICO_01
QTD_SERVICO: NUMBER(2)
VLR_TOTAL_ITEM: NUMBER(10,2) FORMA_PAGAMENTO
COD_FORMA_PAGAMENTO: NUMBER(2)
DSC_FORMA_PAGAMENTO: VARCHAR2(20)
FK_SOLISERV_ITSOLSER_01

FK_FORMAPAG_SOLISERV_01
SOLICITACAO_SERVICO
NUM_SOLICITACAO_SERVICO: NUMBER(5)
COD_CLIENTE: NUMBER(5) (FK)
COD_ATENDENTE: NUMBER(3) (FK) ATENDENTE
DAT_SOLICITACAO: DATE FK_ATEND_SOLISERV_01 COD_ATENDENTE: NUMBER(3)
VLR_TOTAL_SOLICITACAO: NUMBER(10,2) NOM_ATENDENTE: VARCHAR2(50)
IND_UNIFICACAO_FORMA_PAGAMENTO: CHAR(1)
COD_FORMA_PAGAMENTO: NUMBER(2) (FK)
Próxima Aula
❑ As Doze Regras de Codd.
Introd. a Banco de Dados Relacional
Capítulo 4

Aula 4.2. As Doze Regras de Codd


Prof. Gustavo Aguilar
Nesta Aula
❑ As Doze Regras de Codd
As Doze Regras de Codd
▪ Publicadas em 1981, com o propósito de definir o que seria
necessário para um SGBD ser considerado relacional;

▪ Proteger a visão relacional, dos fornecedores de SGBDs;


▪ Numeradas de 1 à 12;
▪ REGRA 0 - Regra Base para Toda as Outras
✓ Gerenciamento exclusivamente pelas capacidades relacionais do SGBD.

▪ REGRA 1 - A Regra da Informação


✓ Representada explicitamente no nível lógico e por valores em tabelas.
As Doze Regras de Codd
▪ REGRA 2 - Regra de Garantia de Acesso
✓ Logicamente acessível com nome da tabela + chave + coluna.

▪ REGRA 3 - Tratamento Sistemático de Valores Nulos


✓ Possibilidade de valores nulos para as colunas.

▪ REGRA 4 - Catálogo Online e Dinâmico Baseado no Mod. Relacional


✓ Representado e armazenado no nível lógico da mesma forma que os

dados das aplicações;

✓ Usuários autorizados conseguem acessar este catálogo da mesma forma

que acessam os dados regulares.


As Doze Regras de Codd
▪ REGRA 5 - Regra da Linguagem de Dados Compreensiva
✓ Linguagem de alto nível;

✓ Abstrai, para os usuários, os detalhes internos da engine do banco de

dados e do “bit-a-bit” do armazenamento dos dados;

✓ Linguagem declarativa para realizar as operações a seguir:

✓ Definição de dados e de visões;

✓ Manipulação de dados (interativo e por programa);

✓ Restrições de integridade;

✓ Autorização;

✓ Controle de transação (begin, commit e rollback).


As Doze Regras de Codd
▪ REGRA 6 - Regra da Atualização de Visões
▪ REGRA 7 - Inserções, Atualizações e Deleções de Alto Nível
✓ Otimização das tarefas do SGBD e melhor experiência do usuário.

▪ REGRA 8 - Independência Física dos Dados


✓ Imutabilidade dos programas quando de alterações na camada de

armazenamento dos dados.

▪ REGRA 9 - Independência Lógica dos Dados


✓ Imutabilidade dos comandos de manipulação de dados após alterações

em estruturas de tabelas que preservem os dados originais das mesmas.


As Doze Regras de Codd
▪ REGRA 10 - Independência de Integridade
✓ Deixa à cargo do banco de dados a garantia da integridade dos dados.

▪ REGRA 11 - Independência de Distribuição


✓ Imutabilidade dos programas quando uma distribuição de dados for

introduzida no banco de dados ou quando os dados forem


redistribuídos.

▪ REGRA 12 - Regra de Não Subversão


✓ Bloquear as intervenções diretas nos dados através de interfaces de

baixo nível, de forma a preservar as regras relacionais do SGBD.


Próxima Aula
❑ As Propriedades ACID.
Introd. a Banco de Dados Relacional
Capítulo 4

Aula 4.3. As Propriedades ACID


Prof. Gustavo Aguilar
Nesta Aula
❑ Transação
❑ Propriedades ACID
❑ Atomicidade
❑ Consistência
❑ Isolamento
❑ Durabilidade
Transação
▪ Uma sequência de instruções executadas no SGBD.

Transação 2
Transação3

Transação 1
Propriedades ACID
▪ Propriedades das transações em bancos de dados relacionais;
▪ Garantem a integridade e consistência dos dados.
Atomicidade
▪ A transação será executada totalmente ou não será executada;
✓ Transação atômica.

▪ Requer que as transações sejam “tudo ou nada” (“all or nothing”);


✓ Se uma parte da transação falhar, a transação inteira deve falhar;

✓ O estado do banco de dados permanecer inalterado.


Consistência
▪ Qualquer transação levará o banco de dados de um estado válido a
outro;

▪ Em caso de sucesso, a transação cria


um novo estado válido dos dados;

▪ Em caso de falha, retorna todos os


dados ao estado imediatamente
anterior ao início da transação.
Isolamento
▪ Execuções concorrentes (em paralelo) de transações resultam em
um estado do banco de dados que seria obtido caso as transações
fossem executadas serialmente;

▪ Uma transação em andamento,


mas ainda não validada,
permanece isolada de qualquer
outra operação, garantindo que a
transação não sofra interferência
de nenhuma outra transação
concorrente.
Durabilidade
▪ Uma vez que uma transação tenha sido confirmada, ela
permanecerá assim, mesmo no caso de um reinício do sistema,
crash, falta de energia ou erros posteriores.
Próxima Aula
❑ A Linguagem SQL.
Introd. a Banco de Dados Relacional
Capítulo 4

Aula 4.4. A Linguagem SQL


Prof. Gustavo Aguilar
Nesta Aula
❑ Surgimento da Linguagem SQL
❑ Características da Linguagem SQL
Surgimento da Linguagem SQL
1975

1970 1971 1972/73 1974 Final 1974


Codd publica a Codd procura IBM “forçada” a Subprojeto System R Donald Chamberlin e
Teoria de Banco de grandes clientes da incluir, no projeto foi incluído no Ray Boyce
Dados Relacional IBM para mostrar- Future Systems (FS), projeto Future desenvolveram e
(enquanto lhes o potencial e a criação de um System lançaram a
pesquisador da IBM) benefícios do banco de dados linguagem de
modelo relacional experimental para programação
demonstrar a SEQUEL (Structured
usabilidade do English Query
modelo relacional Language)
Características da Linguagem SQL
▪ Linguagem Declarativa;
✓ Mais simples e com curva de aprendizado menor;

✓ Linguagens procedurais da época requeriam que o usuário especificasse

o caminho (navegação, posição etc.) para se chegar ao resultado;

Repita para cada linha de dados:


Se a cidade for São Paulo, retorne a linha; caso contrário, não faça nada.
Mova para a próxima linha.
Final do Loop.

✓ Especificar a forma (conteúdo desejado) do resultado e não o caminho

para se chegar a ele.


Retorne todos os clientes cuja cidade é São Paulo
Características da Linguagem SQL
▪ Baseada na Álgebra Relacional e Teoria de Conjuntos;
✓ Codd utilizou as já conhecidas operações da Álgebra Relacional, e as

operações da Teoria de Conjuntos para sustentar sua fundamentação


teórica.
Características da Linguagem SQL
▪ Usando-se dos operadores da Álgebra Relacional, Codd conseguiu
fundamentar a viabilidade e usabilidade do modelo relacional e seu
armazenamento de dados no formato tabular, em tuplas;
Características da Linguagem SQL
▪ Operação de Restrição (σ): retornar somente as tuplas que
satisfaçam à uma condição.
Características da Linguagem SQL
▪ Operação de Projeção (π): retornar um ou mais atributos desejados.
Características da Linguagem SQL
▪ Operação de Interseção (∩): retornar tuplas comuns entre duas
tabelas.

➢ Exemplo: retornar o nome e o CPF dos funcionários que estão

internados como pacientes.

π nome,CPF (FUNCIONARIO) ∩ π nome,CPF (PACIENTE)

▪ Operação de União (υ): retornar a união das tuplas de duas tabelas.


➢ Exemplo: retornar o nome e o CPF dos médicos e pacientes cadastrados

no hospital.

π nome,CPF (MEDICO) υ π nome,CPF (PACIENTE)


Próxima Aula
❑ Padronização da Linguagem SQL, Classes de Instruções SQL
e Dialetos.
Introd. a Banco de Dados Relacional
Capítulo 4

Aula 4.5. Padronização da Linguagem SQL, Classes de


Instruções SQL e Dialetos

Prof. Gustavo Aguilar


Nesta Aula
❑ Padronização da Linguagem SQL
❑ Dialetos
❑ Classes de Instruções SQL
Padronização da Linguagem SQL
▪ Linguagem SQL originalmente criada pela IBM;
▪ Após a sua publicação, rapidamente surgiram várias linguagens
desenvolvidas pelos fornecedores de SGBDs relacionais, cada uma
com suas adaptações à Linguagem SQL original;

✓ Ex.: PL/SQL da Oracle.

▪ Gerou necessidade da criação de um padrão para a Linguagem SQL;

▪ Publicação do padrão ANSI X3.135-1986 pelo American National


Standards Institute, em 1986.
Padronização da Linguagem SQL
▪ Após alguns meses ao lançamento do ANSI X3.135-1986, a
International Organization for Standardization (ISO) publicou um
padrão tecnicamente idêntico, o ISO 9075-1987;
✓ Para o cenário internacional.

▪ Esses padrões foram revisados em conjunto:


✓ Primeiramente em 1989: ANSI X3.135-1989 e ISO / IEC 9075: 1989;

✓ Novamente em 1992: ANSI X3.135-1992 e ISO / IEC 9075: 1992.

▪ Essas edições se tornaram conhecidas como SQL-86, SQL-89 e SQL-


92.
Padronização da Linguagem SQL
▪ O padrão foi revisado novamente em 1999 (SQL3), 2003, 2008, 2011
e 2016 (edição atual ISO / IEC 9075: 2016);

▪ A norma internacional ISO / IEC 9075 para SQL é desenvolvida pelo


ISO/IEC Joint Technical Committee (JTC) for Information Technology;

▪ Desde a edição de 2003 foi subdividida em 9 partes, cada uma


cobrindo um aspecto do padrão geral, sob o título Tecnologia da
Informação – Linguagens de Banco de Dados – SQL.
Dialetos
▪ Fornecedores de SGBDs continuaram fazendo suas próprias
implementações da Linguagem SQL;

▪ Grande parte da implementação era baseada nos padrões da


Linguagem SQL, mas com pequenas adaptações ou personalizações:

✓ PL/SQL da Oracle

✓ T-SQL da Microsoft (usada no SQL Server)

✓ SQL PL da IBM
Dialetos
▪ Resultado: pequenas diferenças na sintaxe de implementação para
um mesmo tipo de comando SQL entre os diversos dialetos (SGBDs).

➢ Ex: retornar os N registros de uma tabela.

✓ Sintaxe de uso no dialeto SQL Server:

SELECT TOP [QTDE DE REGISTROS] [COLUNA(S)] FROM [TABELA]

✓ Sintaxe de uso nos dialetos MySQL e PostgreSQL:

SELECT [COLUNA(S)] FROM [TABELA] LIMIT [QTDE DE REGISTROS]

✓ Sintaxe de uso no dialeto Oracle:

SELECT [COLUNA(S)] FROM [TABELA]


WHERE ROWNUM < [QTDE REGISTROS]
Classes de Instruções SQL
▪ Dentro do padrão ISO SQL: quatro classes de comandos da
Linguagem SQL.

DDL DML DCL TCL


Linguagem de Linguagem de Linguagem de Controle Linguagem de Controle
Definição de Dados Manipulação de Dados de Dados de Transação
Comandos para a criação Comandos para
do banco de dados e dos gerenciar permissões de
objetos no banco de acesso para usuários e Comandos para realizar
Comandos para inserir,
dados, como tabelas, objetos controle das transações
atualizar, deletar e
índices, constraints etc de dados no banco de
consultar dados Permissões para dados
Comandos para alteração executar comandos DDL,
e exclusão de objetos DML, DCL e TCL

Data
Data Definition
Definition Language Data Manipulation Language Data Control Language Transaction Control Language
Classes de Instruções SQL
Comandos
SQL
Próxima Aula
❑ Uma “Sopa de Letrinhas”.
Introd. a Banco de Dados Relacional
Capítulo 4

Aula 4.6. Uma “Sopa de Letrinhas”


Prof. Gustavo Aguilar
Nesta Aula
❑ A SQL x O SQL
❑ T-SQL
❑ NoSQL x NOSQL
❑ UnQL
❑ NewSQL
A SQL x O SQL
▪ A SQL ➔ a Linguagem SQL.
▪ O SQL ➔ menção ao SQL Server, sistema gerenciador de banco de
dados relacional desenvolvido pela Microsoft.

▪ Encontramos também o nome de outros SGBDs fazendo menção à


Linguagem SQL, de forma a indicar que são relacionais:
✓ MySQL fornecido pela Oracle (www.mysql.com);

✓ PostgreSQL desenvolvido pela PostgreSQL Global Development Group e

de código aberto (www.postgresql.org);

✓ SQLite: banco de dados portátil e de código aberto (www.sqlite.org).


T-SQL
▪ Transact SQL / T-SQL: implementação da Microsoft, no SQL Server,
para a Linguagem SQL (padrão ISO / IEC 9075);

▪ Linguagem declarativa;
▪ Possui todas as opções e instruções existentes no padrão ISO;
▪ Variáveis, loop, controle de fluxo e decisões, funções, etc.;
▪ Possui opções e instruções que não estão no padrão;

▪ Algumas instruções com sintaxe diferente do padrão e/ou de outros


SGBDs.
NoSQL x NOSQL
▪ “NOSQL” pode se referenciar à duas tecnologias diferentes, mas
nenhuma delas relacionadas diretamente à Linguagem SQL;

▪ A diferença entre essas duas tecnologias é feita na grafia:


✓ NoSQL versus NOSQL

▪ O termo NoSQL surgiu em 1998, quando Carlo Strozzi batizou seu


novo produto de NoSQL:
✓ Um banco de dados relacional;

✓ Não fornecia nenhum tipo de linguagem SQL para consulta;

✓ Era pronunciado como noseequel (No + SQL).


NoSQL x NOSQL
▪ Os dados do NoSQL eram armazenados em arquivos ASCII UNIX:
✓ Manipulados por utilitários UNIX comuns: ls, mv, cp e editores como o

'vi’.

▪ Manipulação dos dados sem a linguagem SQL ➔ “non SQL”;


✓ No sentido de realmente não ser um banco de dados SQL (relacional).

▪ Formato dos arquivos: baseado em relação (tabela, linhas e colunas)


✓ Família de SGBD relacional.

▪ Logo:
NoSQL x NOSQL
▪ Strozzi afirmava categoricamente que seu produto “nada tinha a ver
com o recém-nascido Movimento NOSQL”:

➢ “...é um banco de dados relacional para todos os efeitos e apenas

intencionalmente não usa SQL como uma linguagem de consulta...”;

➢ “...o recém-chegado é principalmente um conceito ...., que se afasta do

modelo relacional...”;

➢ “....deveria ter sido chamado de ‘NoREL’, .... , já que não ser baseado em

SQL é apenas uma consequência óbvia de não ser relacional, e não o


contrário”.
NoSQL x NOSQL
▪ No início de 2009 ➔ termo NOSQL voltou à tona;
▪ Johan Oskarsson, desenvolvedor na Last.fm, organizou um evento
para discutir "bancos de dados distribuídos, não relacionais e de
código aberto“;

▪ Termo tentava rotular o surgimento de um número crescente de


repositórios de dados distribuídos, não relacionais;
✓ Clones de código aberto do Google Bigtable/MapReduce e do

DynamoDB da Amazon.
NoSQL x NOSQL
▪ Desde então, termo NOSQL tem sido atribuído aos SGBDs não
relacionais (e não somente mais aos “não SQL”):

▪ Mecanismo de armazenamento de dados que não é baseado no


formato tabular (linhas x colunas);

▪ Termo NoSQL passou a ser escrito como NOSQL;


✓ SGBDs “Não Apenas SQL” ➔ Not Only SQL;

▪ Enfatizar que suportavam outras


linguagens de consulta, que não a SQL.
UnQL
▪ Em 29 de julho de 2011:
Fundador da Couchbase e inventor do CouchDB, Damien Katz
+
Richard Hipp, inventor do SQLite
✓ ‘UNQL QUERY LANGUAGE UNVEILED BY COUCHBASE AND SQLITE’;

✓ Linguagem de consulta padrão NOSQL;

✓ Unstructured Query Language (UnQL): pronúncia “Uncle”;

✓ Tentar se popularizar da mesmo forma como o SQL do movimento

relacional se popularizou;

✓ Site do projeto: http://unql.sqlite.org/index.html/wiki?name=UnQL.


NewSQL
▪ Não é uma nova versão da Linguagem SQL;
▪ Trata-se de uma nova geração de SGBDs relacionais distribuídos;
▪ Novos players:
➢ Amazon Aurora, VoltDB;

➢ CockroachDB, CosmosDB;

➢ Google Spanner;

▪ SGBDRs já conhecidos com a engine reformulada: MySQL Cluster,


SQL Server Column Store.
Próxima Aula
❑ Capítulo 5 - Introdução ao Microsoft SQL Server.
Introdução ao Microsoft SQL Server
Capítulo 5

Aula 5.1. Introdução ao SQL Server


Prof. Gustavo Aguilar
Nesta Aula
❑ Introdução ao SQL Server
❑ Produtos da Família SQL Server
❑ Edições da Família SQL Server
Introdução ao SQL Server
▪ Microsoft SQL Server é um sistema gerenciador de banco de dados
relacional, desenvolvido pela Microsoft;
Versão Ano de Lançamento
2019 2019
✓ Será usado para aplicarmos na prática os 2017 2017
conceitos e instruções da Linguagem SQL. 2016 2016
2014 2014
2012 2012
▪ Primeira versão (1.0), lançada em 1989; 2008 R2 2010
2008 2008
✓ Para sistema operacional OS/2. 2005 2005
2000 2000
▪ Suporte para Windows: a partir da 4.2.1; 7.0 1998
6.5 1996
▪ Suporte para Linux desde a versão 2017; 6.0
4.2.1
1995
1994
4.2 1992
▪ Versão atual: 2019 (2022 em preview). 1.1 1991
1.0 1989
Quadrante Mágico de
Gartner para SGBDs
Produtos da Família SQL Server

Database
Database Engine
Engine Analytical Engine
Analytical Engine Report Engine
Report Engine ETL Engine
ETL Engine

Bancos OLTP
Bancos OLTP Bancos OLAP
Bancos OLAP Pastas
Pastas Catálogos
Catálogos
Cluster
Cluster Failover
Failover Cubos
Cubos Relatórios
Relatórios Pacotes
Pacotes
Snapshot
Snapshot Tabelas Fato
Tabelas Fato // Dashboards
Dashboards Extração
Extração
Database
Database Mirror
Mirror Dimensão
Dimensão Assinaturas
Assinaturas Transformação
Transformação
Replicação
Replicação Carga de
Carga de Dados
Dados
Always
Always On
On

SQL
SQL SSAS
SSAS SSRS
SSRS SSIS
SSIS
Produtos da Família SQL Server

https://learn.microsoft.com/pt-br/sql/relational-databases/polybase/polybase-guide?view=sql-server-ver16
Edições da Família SQL Server

https://learn.microsoft.com/pt-br/sql/sql-server/editions-and-components-of-sql-server-2019?view=sql-server-ver16
Próxima Aula
❑ Conceitos Básicos do SQL Server.
Introdução ao Microsoft SQL Server
Capítulo 5

Aula 5.2. Conceitos Básicos do SQL Server


Prof. Gustavo Aguilar
Nesta Aula
❑ Macroarquitetura
❑ Conceitos Básicos
Macroarquitetura

Servidor
Instância
Banco de Dados / Pasta / Catálogo
Conceitos Básicos
▪ Um servidor pode conter 1 ou mais Instâncias SQL/SSAS/SSRS;
✓ Da mesma versão ou não;

✓ SSIS não é multi-instância, apenas multiversão.

▪ As instâncias são diferentes entre si;


✓ Conjunto próprio de bancos/pastas/catálogos.

▪ Uma Instância pode conter vários BDs;


✓ Até 32.767 bancos de dados.

▪ Os bancos são diferentes entre si;


✓ Cada um possui seu conjunto de tabelas e usuários.
Próxima Aula
❑ Instalação do SQL Server.
Introdução ao Microsoft SQL Server
Capítulo 5

Aula 5.3. Instalação do SQL Server


Prof. Gustavo Aguilar
Nesta Aula
❑ Instalação do SQL Server
Instalação do SQL Server

https://go.microsoft.com/fwlink/?linkid=866662
Próxima Aula
❑ Capítulo 6 - Ferramentas Client.
Ferramentas Client
Capítulo 6

Aula 6.1. Ferramentas Client


Prof. Gustavo Aguilar
Nesta Aula
❑ Ferramenta Client
❑ SQL Server Management Studio
❑ Scripts, Projetos e Soluções no SSMS
❑ Azure Data Studio
Ferramenta Client
▪ Interface gráfica (GUI - Graphical User Interface);
▪ Para se conectar no banco de dados;
▪ Realizar atividades como criar bancos de dados,
tabelas, usuários, bem como manipular dados e
realizar tarefas administrativas.
SQL Server Management Studio
▪ Interface gráfica (client) oficial da Microsoft para se conectar e
interagir com o SQL Server;

✓ https://docs.microsoft.com/en-us/sql/ssms/sql-server-management-

studio-ssms?view=sql-server-2019

▪ Também chamado de SSMS;

▪ Possui editor de queries e vários Wizards;


▪ Construtor de modelos de dados (diagramas) ➔ integrado ao BD;
▪ Relatórios padrões pré-definidos / customizados.
SQL Server Management Studio
Scripts, Projetos e Soluções
▪ Comandos T-SQL podem ser salvos em um arquivo texto ➔ script;

▪ Normalmente com a extensão “.sql”;

▪ No SSMS, menu File ou nos botões de salvar da barra de ferramentas;


▪ Scripts podem ser abertos de
dentro do SSMS;
▪ Scripts podem ser organizados
em Projetos e Soluções;
▪ Uma solução pode conter vários
projetos, scripts e conexões.
Azure Data Studio
▪ Interface gráfica (client) da Microsoft para se conectar e interagir
com o SQL Server e outras plataformas de dados;

▪ Também chamado de ADS;


▪ Permite também administrar o SQL Server e os bancos de dados;
▪ Possui editor de queries, mas bem menos Wizards que o SSMS;
▪ Não possui construtor de modelos de dados (diagramas);

▪ Trabalha com o conceito de Jupyter Notebooks.


Azure Data Studio
Próxima Aula
❑ Instalação e Overview do SQL Server Management Studio.
Ferramentas Client
Capítulo 6

Aula 6.2. Instalação e Overview do SQL Server


Management Studio

Prof. Gustavo Aguilar


Nesta Aula
❑ Instalação do SQL Server Management Studio
❑ Overview da Utilização do SSMS
Instalação do Management Studio

https://aka.ms/ssmsfullsetup
Próxima Aula
❑ Instalação e Overview do Azure Data Studio.
Ferramentas Client
Capítulo 6

Aula 6.3. Instalação e Overview do Azure Data Studio


Prof. Gustavo Aguilar
Nesta Aula
❑ Instalação do Azure Data Studio
❑ Overview da Utilização do Azure Data Studio
Instalação do Azure Data Studio

https://go.microsoft.com/fwlink/?linkid=2135512
Próxima Aula
❑ Instalação e Overview do Banco de Dados de Exemplo
AdventureWorks.
Ferramentas Client
Capítulo 6

Aula 6.4. Instalação e Overview do Banco de Dados de


Exemplo AdventureWorks

Prof. Gustavo Aguilar


Nesta Aula
❑ Banco de Dados de Exemplo AdventureWorks
❑ Restore do AdventureWorks2019
AdventureWorks
▪ Banco de dados de exemplo disponibilizado pela Microsoft;
https://github.com/Microsoft/sql-server-samples/releases/tag/adventureworks

▪ Empresa de produção e venda de produtos para aventuras;

▪ Já populado com dados fictícios;

▪ O modelo de dados deste banco de dados pode ser encontrado em


https://improveandrepeat.com/2019/02/use-the-adventureworks-
sample-database-for-your-examples.
Restore do AdventureWorks
Próxima Aula
❑ Capítulo 7 - Utilização Básica do SQL Server.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.1. Criação de Estruturas de Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ Linguagem de Definição de Dados (DDL)
❑ Script DDL
❑ Criação de Estruturas de Dados
❑ Criação de Outros Tipos de Objetos
Linguagem de Definição de Dados
▪ Data Definition Language (DDL);
▪ Classe da Linguagem SQL com comandos que permitem criar,
alterar e excluir objetos de banco de dados;

▪ Em um Projeto de Banco de Dados, é usada na etapa de geração do


esquema físico no banco de dados.
Linguagem de Definição de Dados

1 2

3 Modelo Lógico Relacional

4 Modelo Físico Relacional

5
SGBDR
?
Script DDL
▪ Conjunto de várias instruções DDL.
Script DDL

1 2

3 Modelo Lógico Relacional

4 Modelo Físico Relacional

5
SGBDR
Script
\DDL
Script DDL
▪ A maioria dos SGBDs fornece interface gráfica para implementação
do modelo de dados físico;

▪ Usam scripts DDL em background.


Criação de Estruturas de Dados
▪ Através da instrução SQL CREATE ;
▪ Criação de banco de dados:
➢ CREATE DATABASE <Nome_do_Banco_de_Dados>

➢ Cada SGBD implementa os parâmetros adicionais necessários e

específicos da sua plataforma.


Criação de Estruturas de Dados
▪ Criação de tabelas:
CREATE TABLE <Nome_da_Tabela>

column1 datatype [ NULL | NOT NULL ],

column2 datatype [ NULL | NOT NULL ], …..

);

▪ Cada SGBD implementa os parâmetros adicionais necessários e


específicos para a criação de tabelas no seu banco de dados.
Criação de Outro Tipos de Objetos
▪ Também através da instrução SQL CREATE:
✓ Usuários

✓ Índices

✓ Visões

✓ Chaves estrangeiras

✓ Constraints

✓ Sequences

✓ Sinônimos, etc.

CREATE SYNONYM <Nome_do_Sinônimo> FOR <Nome_do_Objeto>;


Próxima Aula
❑ Demonstração: Criação de Estruturas de Dados.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.2. Demonstração: Criação de Estruturas de Dados


Prof. Gustavo Aguilar
Criação de Estrutura de Dados
Próxima Aula
❑ Alteração de Estruturas de Dados.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.3. Alteração de Estruturas de Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ Alteração de Estruturas de Dados
❑ Demonstração
Alteração de Estruturas de Dados
▪ Comando DDL ALTER ;
▪ Evitar recriação das estruturas: bancos de dados, tabelas, etc.;
▪ Alterar as estruturas de dados que já estejam criadas;
✓ Desde que não viole as regras do SGBD / modelo de dados.

▪ Regras de unicidade: alterar campo para NULL / NOT NULL;


▪ Regras de integridade referencial: setar para NULL / CASCADE /
RESTRICT as constraints das chaves estrangeiras;
Alteração de Estruturas de Dados
▪ Adicionar coluna (NULL / NOT NULL) em uma tabela já populada;
▪ Alterar tipo de dados de uma coluna para um tipo de dados
compatível;

▪ Reduzir / aumentar o tamanho de uma coluna;


▪ Etc.
Alteração de Estruturas de Dados
▪ SGBDs também fornecem interfaces gráficas para fazer alterações.
Alteração de Estruturas de Dados
Próxima Aula
❑ Remoção de Estruturas de Dados.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.4. Remoção de Estruturas de Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ Remoção de Estruturas de Dados
❑ Demonstração
Remoção de Estruturas de Dados
▪ Comando DDL DROP ;
▪ Excluir estruturas de dados e outros objetos do banco de dados;
▪ Deve ser usado com muita cautela, para não remover objetos por
engano (e todos os dados deles por consequência);

▪ Para ocorrer a remoção, não pode haver violação das regras do


SGBD / modelo de dados;
➢ Excluir um banco de dados / tabela que esteja sendo usada;

➢ Regras de integridade referencial: excluir uma coluna que seja

referenciada por uma chave estrangeira com constraint FK, etc.


Remoção de Estruturas de Dados
▪ SGBDs também fornecem interfaces gráficas para fazer remoções.
Remoção de Estruturas de Dados
Próxima Aula
❑ Selecionando Dados.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.5. Selecionando Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ Introdução à Linguagem de Manipulação de Dados (DML)
❑ A Instrução SELECT
❑ Alias de Coluna
❑ Alias de Tabela
❑ Expressão CASE
Introdução à Linguagem de
Manipulação de Dados
▪ Data Manipulation Language (DML)
▪ Classe da Linguagem SQL com comandos que permitem:
✓ Inserir dados (novas linhas / tuplas);

✓ Atualizar dados (linhas / tuplas existentes);

✓ Excluir dados: remover linhas / tuplas existentes;

✓ Selecionar dados: recuperar dados armazenados para exibição e/ou

processamento.
A Instrução SELECT
▪ Pertencente à classe DML da Linguagem SQL;
▪ No padrão ODMG (SGBDO): classe DQL (Data Query Language);
▪ Utilizada para retornar (consultar) os dados armazenados no banco;
▪ Baseada na operação de Projeção da Álgebra Relacional;

▪ Em sua forma mínima, é composta de 2 cláusulas:


SELECT <relação de colunas ou * >

FROM <tabela>
Alias de Coluna
▪ Nome alternativo (apelido) para colunas;
▪ Existentes apenas em tempo de execução (não é persistido);
▪ Criado usando-se a cláusula AS (ou espaço) após o nome da coluna ,
colocando-se o alias desejado em seguida.

SELECT Name AS Nome_do_Produto, ProductNumber AS Número_Produto

FROM Production.Product;
Alias de Coluna
▪ Efeito prático: modificar o cabeçalho (label) da coluna que é exibido
no resultado da query.
Alias de Tabela
▪ Nome alternativo (apelido) para tabelas;
▪ Existentes apenas em tempo de execução (não é persistido);
✓ Diferente do sinônimo que é persistido (criado como objeto);

▪ Uso bem mais amplo que o alias de colunas: usado em outras


cláusulas da instrução SELECT, como por exemplo, nas cláusulas
WHERE, ORDER BY etc., que serão vistas mais à frente.
Alias de Tabela
▪ Criado usando-se a cláusula AS (ou espaço) após o nome da tabela
na cláusula FROM, colocando-se o alias desejado em seguida:

--Alias de Tabela Criado com a Cláusula AS

SELECT Name, ProductNumber FROM Production.Product AS P;

--Alias de Tabela Criado sem a Cláusula AS

SELECT Name, ProductNumber FROM Production.Product P;


Alias de Tabela
▪ Uma vez definido o alias para uma tabela, ele pode ser referenciado
na relação de colunas da cláusula SELECT:

SELECT P.Name, P.ProductNumber FROM Production.Product P;

▪ Ao se definir alias de tabelas, não é obrigatório usá-los na relação de


colunas, desde que não haja ambiguidade nos nomes delas.

▪ Alias de tabela pode ser usado em conjunto com alias de colunas:


SELECT P.Name AS Nome_Produto, P.ProductNumber AS Número_Produto

FROM Production.Product P;
Expressão CASE
▪ Pode ser utilizada na instrução SELECT para “tratamento” dos dados;
✓ Não altera os dados persistidos no BD, apenas na exibição da query.

▪ Compara um valor de entrada a uma lista de possíveis valores:


✓ Se uma correspondência for encontrada, o primeiro valor
correspondente será retornado como resultado da expressão CASE
(múltiplas correspondências não são permitidas);

✓ Se nenhuma correspondência for encontrada, a expressão CASE retorna

o valor encontrado em uma cláusula ELSE, se existir;

✓ Se nenhuma correspondência for encontrada e nenhuma cláusula ELSE

existir, a expressão CASE retornará NULL.


Expressão CASE
▪ Sintaxe:

– Expressão CASE Simples:

CASE Expressão_de_Entrada
WHEN expressão_de_comparação THEN expressão_resultado [ ...n ]
[ ELSE expressão_resultado_else]
END

– Expressão CASE com Pesquisa Booleana:

CASE
WHEN Expressão_BooleanaTHEN expressão_resultado [ ...n ]
[ ELSE expressão_resultado_else]
END
Próxima Aula
❑ Demonstração: Selecionando Dados.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.6. Demonstração: Selecionando Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ Demonstrações:
– Instrução SELECT
– Alias de Coluna
– Alias de Tabela
– Expressão CASE
Selecionando Dados
Próxima Aula
❑ Ordenando Dados.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.7. Ordenando Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ A Cláusula ORDER BY
❑ Tipos de Ordenação
❑ ORDER BY Composto
❑ Alias de Coluna no ORDER BY
A Cláusula ORDER BY
▪ Além das cláusulas SELECT e FROM, uma instrução SELECT pode ter

também a cláusula ORDER BY;

▪ Utilizada para ordenar os dados retornados pela instrução SELECT;

▪ Coluna(s) na cláusula ORDER BY não necessariamente precisa(m)

estar na cláusula SELECT;

▪ Sintaxe: a última cláusula em uma instrução SELECT:

SELECT FirstName, MiddleName, LastName

FROM Person.Person

ORDER BY FirstName
Tipos de Ordenação
▪ Default: ordenação feita de forma ascendente (A à Z, 0 à 9);

▪ DESC: cláusula para fazer ordenação descendente (Z à A, 9 à 0);

▪ ASC: cláusula para explicitar a ordenação ascendente;

▪ Exemplo: classificando descendentemente pelo primeiro nome


SELECT FirstName, MiddleName, LastName

FROM Person.Person

ORDER BY FirstName DESC;

ORDER BY FirstName ASC


ORDER BY Composto
▪ Pode-se usar mais de uma coluna na cláusula ORDER BY;

▪ Cada campo com o tipo de ordenação (ASC / DESC) desejada;

▪ Exemplo: classificando ascendentemente pelo primeiro nome e

descendentemente pelo último nome


SELECT FirstName, MiddleName, LastName

FROM Person.Person
ORDER BY FirstName ASC, LastName DESC

Ordenação descendente pela


coluna LastName
Alias de Coluna no ORDER BY
▪ Pode-se usar o alias da(s) coluna(s) na cláusula ORDER BY, ao invés

de usar o nome das colunas;

--Usando Alias de Coluna no ORDER BY

SELECT Name AS Nome_do_Produto, ProductNumber AS Número_do_Produto

FROM Production.Product

ORDER BY Nome_do_Produto ASC;

▪ Possível devido à ordem 5. SELECT <select list>


1. FROM <table source>
de execução de 2. WHERE <search condition>
3. GROUP BY <group by list>
comandos no SQL Server. 4. HAVING <search condition>
6. ORDER BY <order by list>
Próxima Aula
❑ Demonstração: Ordenando Dados.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.8. Demonstração: Ordenando Dados


Prof. Gustavo Aguilar
Ordenando Dados
Próxima Aula
❑ Filtrando Dados.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.9. Filtrando Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ A Cláusula WHERE
❑ A Cláusula TOP
❑ A Cláusula DISTINCT
❑ Operadores de Comparação
❑ Operadores Lógicos
❑ Ordem de Avaliação dos Operadores
❑ Alias de Coluna no WHERE
A Cláusula WHERE
▪ Cláusula usada para realizar operações de seleção (restrições);

▪ Restringir as tuplas (linhas/dados) retornados pela

operação de projeção (cláusula SELECT);

▪ Sintaxe: usada após a cláusula FROM;

▪ Utiliza-se de operadores lógicos ou de comparação para filtrar os

resultados retornados. --Listar Produtos da Cor Preta (Black)

SELECT Name, Color

FROM Production.Product

WHERE Color = 'Black'

ORDER BY Name;
A Cláusula TOP
▪ Usada em conjunto com a cláusula SELECT para limitar a quantidade

de linhas retornadas;

▪ Sintaxe T-SQL (SQL Server):

✓ SELECT TOP (N): retorna as N primeiras linhas encontradas;

✓ A cláusula ORDER BY impacta diretamente no resultado retornado.

▪ Exemplo: retornar os 5 primeiros produtos (na ordem alfabética)

SELECT TOP (5) Name AS Nome_Produto

FROM Production.Product
ORDER BY Nome_Produto;
A Cláusula DISTINCT
▪ Elimina os resultados repetidos retornados (tuplas / linhas

repetidas) pela instrução SELECT;

▪ Atua em todas as colunas da cláusula SELECT;

▪ Sintaxe T-SQL: SELECT DISTINCT Coluna1, Coluna2, etc;

▪ Exemplo: cores existentes de produtos

SELECT DISTINCT Color AS Cores_de_Produtos


FROM Production.Product

WHERE Color IS NOT NULL

ORDER BY Cores_de_Produtos;
Operadores de Comparação
▪ Usados para comparar colunas ou expressões nas cláusulas de filtro

da Linguagem SQL;

▪ Cada SGBD procura manter o caractere indicado no padrão ISO;

▪ Nada impede que existam Operador de Comparação Significado


= Igual a
outros operadores ou > Maior que
< Menor que

operadores representados >= Maior que ou igual a


<= Menor que ou igual a

por caracteres diferentes <> Diferente de


!= Diferente de (não é padrão ISO)
!> Não é maior que (não é padrão ISO)
em alguns SGBDs.
!< Não é menor que (não é padrão ISO)

Operadores de Comparação do SQL Server


Operadores Lógicos
▪ Testam a verdade de alguma condição, retornando um tipo de dados

booleano com o valor TRUE, FALSE ou UNKNOWN;

▪ Permitem que mais de uma condição (filtro) possa ser feita na

operação de restrição; Operador Significado


ALL TRUE se todas as comparações forem verdadeiras

AND TRUE se ambas as expressões booleanas forem verdadeiras


▪ Podem ser usados em ANY TRUE se qualquer um de um conjunto de comparações for verdadeiro

BETWEEN TRUE se o operando/expressão estiver dentro de um intervalo


conjunto com os EXISTS TRUE se uma subconsulta contiver quaisquer linhas

operadores de IN TRUE se o operando for igual a um de uma lista de valores/expressões

LIKE TRUE se o operando corresponder a um padrão

comparação. NOT Inverte o valor de qualquer outro operador booleano

OR TRUE se qualquer expressão booleana for TRUE

SOME TRUE se algumas das comparações forem verdadeiras

Operadores Lógicos do SQL Server


Operadores Lógicos
▪ Exemplo: Listar Produtos da Cor Preta (Black) ou Prata (Silver)

SELECT Name, Color


FROM Production.Product

WHERE Color = 'Black'

OR Color = 'Silver'
ORDER BY Name;
Ordem de Avaliação dos Operadores
▪ Da mesma forma que as cláusulas da Linguagem SQL e os operadores

aritméticos / de comparação possuem uma ordem pré-definida de


processamento, os operadores lógicos e de comparação também a
tem;

▪ Operadores lógicos e de comparação são avaliados após os


operadores aritméticos e de concatenação;

▪ Entre si, os operadores lógicos e de


1º ➔ =, >, <, <=, <, !=, !, !<, !> (operadores de comparação)
comparação são avaliados na 2º ➔ NOT

3º ➔AND
seguinte ordem (sequência) ➔ 4º ➔ ALL, ANY, BETWEEN, IN, LIKE, OR, SOME
Operadores de Comparação
▪ Pode-usar parênteses para determinar a ordem desejada de

avaliação dos operadores lógicos ou de comparação;

▪ Exemplo: operador OR sendo avaliado antes do operador AND

-- Produtos com Nome que Iniciam com 'Chain' e que Sejam da Cor Preta ou Prata

SELECT Name,Color

FROM Production.Product

WHERE Name LIKE 'Chain%'


AND (Color = 'Black' OR Color = 'Silver')

ORDER BY Name;
Alias de Coluna no WHERE
▪ Não é possível usar alias de coluna na cláusula WHERE;

➢ Cláusula WHERE é processada antes da cláusula SELECT.

5. SELECT <select list>


1. FROM <table source>
2. WHERE <search condition>
3. GROUP BY <group by list>
4. HAVING <search condition>
6. ORDER BY <order by list>

▪ O alias de coluna ainda não está definido quando o filtro é aplicado;

➢ Será definido para o contexto de execução da query, após a cláusula


SELECT ser processada.
Próxima Aula
❑ Demonstração: Filtrando Dados.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.10. Demonstração: Filtrando Dados


Prof. Gustavo Aguilar
Filtrando Dados
Próxima Aula
❑ Inserindo Dados.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.11. Inserindo Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ INSERT INTO
❑ SELECT INTO
❑ Demonstração: Inserindo Dados
INSERT INTO
▪ Comando da classe Data Manipulation Language (DML) para persistir

dados em uma tabela previamente criada;


❖ Existem outros comandos para inserir dados: mais usado é o INSERT.

▪ Sintaxe básica: INSERT [INTO] <Tabela ou visão> [lista_de_colunas]

VALUES (Valor | Expressão | NULL | DEFAULT)

▪ Lista de colunas e cláusula INTO são opcionais:

❖ Ao não informar a lista de colunas, é preciso inserir os valores para

todas as colunas, na ordem em que as colunas estão criadas na tabela.


INSERT INTO
▪ Possível inserir múltiplas linhas com apenas um INSERT INTO:

INSERT INTO TAB1 (COL1, COL2)

VALUES (100, ‘Valor não numérico’) ,


(200, ‘Valor não numérico 2’),

(300, ‘Valor não numérico 3’);

▪ Possível utilizar uma consulta SELECT em outra tabela ou conjunto de tabelas para

retornar os valores a serem inseridos na tabela em questão:

INSERT INTO TAB1 (COL1, COL2)

SELECT COL4, COL5 FROM TAB2;


SELECT INTO
▪ Outra possibilidade para inserir dados em uma tabela;

▪ Sintaxe: SELECT coluna1, coluna2, …


INTO Nova_Tabela FROM Tabela_Origem;

▪ Tabela destino dos dados não pode estar criada;

▪ A cláusula SELECT INTO criará a tabela em tempo de execução;

▪ Estrutura física definida pela lista de colunas na cláusula SELECT:

✓ Cada coluna na nova tabela terá o mesmo nome, tipo de dados e a

nulabilidade da coluna correspondente (ou expressão) da lista de colunas


na cláusula SELECT;

✓ Índices e constraints não são criados na nova tabela.


Inserindo Dados
Próxima Aula
❑ Atualizando Dados.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.12. Atualizando Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ A Cláusula UPDATE
❑ A Cláusula MERGE
❑ Demonstração: Atualizando Dados
A Cláusula UPDATE
▪ Cláusula da Linguagem SQL usada para alterar os dados de uma ou

mais colunas existentes em uma tabela;

▪ Pode operar em um conjunto de linhas definido por uma condição

em uma cláusula WHERE ou de JOIN;

▪ É usada a cláusula SET para atribuir o novo valor à coluna;

✓ Permite atualização dos valores de uma ou mais colunas no mesmo


comando UPDATE;

✓ Sem o filtro (WHERE / JOIN), serão atualizadas todas as colunas


existentes na cláusula SET, para todas as linhas da tabela.
A Cláusula UPDATE
▪ Sintaxe:
UPDATE <Nome_Tabela>
SET <Coluna1> = { valor | expressão | DEFAULT | NULL },
<Coluna2> = { valor | expressão | DEFAULT | NULL },
<ColunaN> {…n}
WHERE <Condição>;

UPDATE TAB2

SET COL3 = 500

WHERE COL1 = 10;


A Cláusula MERGE
▪ Usada quando é preciso atualizar, inserir ou excluir linhas de uma

tabela, no mesmo comando;

▪ MERGE atua com base em uma ou mais condições de decisão, com

as quais será decidida qual operação (INSERT/UPDATE/DELETE) executar:


✓ Quando os dados de origem correspondem aos dados no destino,
ocorre a atualização dos dados;
✓ Quando não há correspondência no destino, ocorre a inserção dos
dados;

✓ Quando os dados de destino não têm correspondência no conjunto de


dados de origem, ocorre a exclusão dos dados na tabela de destino.
A Cláusula MERGE
▪ Exemplo: atualizar os campos Data_Venda e Valor quando a venda já

existir na tabela, e inserir a linha quando a venda ainda não existir.


MERGE Tab_Venda_Destino AS Destino
USING Tab_Venda_Origem AS Origem ON (Origem.Cod_Venda = Destino.Cod_Venda)
WHEN MATCHED THEN -- Registro existe nas 2 tabelas
UPDATE SET
Destino.Data_Venda = Origem.Data_Venda,
Destino.Valor = Origem.Valor
-- Registro não existe na origem, apenas no destino. Vamos apagar o dado da origem.
WHEN NOT MATCHED BY SOURCE THEN
DELETE
-- Registro não existe no destino. Vamos inserir.
WHEN NOT MATCHED BY TARGET THEN
INSERT
VALUES(Origem.Cod_Venda, Origem.Data_Venda, Origem.Cod_Produto, Origem.Qtde, Origem.Valor);
Atualizando Dados
Próxima Aula
❑ Excluindo Dados.
Utilização Básica do SQL Server
Capítulo 7

Aula 7.13. Excluindo Dados


Prof. Gustavo Aguilar
Nesta Aula
❑ A Cláusula DELETE
❑ Demonstração: Excluindo Dados
A Cláusula DELETE
▪ Cláusula da Linguagem SQL usada para excluir (“deletar”)
dados(linhas) de uma tabela;

▪ Pode operar em um conjunto de linhas definido por uma condição

em uma cláusula WHERE ou de JOIN;

▪ Sintaxe: DELETE FROM <Nome_Tabela>


WHERE <Condição>;

DELETE FROM TAB2


WHERE COL1 = 10;
A Cláusula DELETE
▪ Sem filtro (WHERE / JOIN), são excluídas todas as linhas da tabela;

DELETE FROM TAB2;

▪ Nas situações onde deseja-se excluir todos os dados de uma tabela,

por questões de performance é preferível usar o comando


TRUNCATE da classe DDL da Linguagem SQL.

TRUNCATE TABLE TAB2;


Excluindo Dados
Próxima Aula
❑ Capítulo 8 - Segurança no SQL Server.
Segurança no SQL Server
Capítulo 8

Aula 8.1. Introdução à Segurança no SQL Server


Prof. Gustavo Aguilar
Nesta Aula
❑ Segurança em Bancos Relacionais
❑ Principais Componentes de Segurança do SQL Server
❑ Segurança de Autenticação no SQL Server
Segurança em Bancos Relacionais
▪ Valor crescente, seja financeiro ou estratégico, dos dados
armazenados ➔ geração de informação / conhecimento / sabedoria
como vantagem competitiva no mercado;

▪ Lei Geral de Proteção de Dados (LGPD);

▪ Aumento da preocupação com a proteção dos dados armazenados:

✓ Proteção externa ao SGBD: firewall, antivírus, etc.;


✓ Proteção interna do SGBD: autenticação, autorização, criptografia, etc.

▪ Autorização / permissão de acesso no SGBD ➔ através da DCL (Data

Control Language), Linguagem de Controle de Acesso a Dados.


Segurança em Bancos Relacionais
▪ Processo de Concessão das Permissões de Acesso;

▪ Processo de Revogação das Permissões de Acesso;

▪ Criptografia, Mascaramento de Dados, etc.


Componentes de Segurança
▪ Cada SGBD disponibiliza sua gama de recursos e comandos para

habilitar, configurar e gerenciar seu framework de segurança;


✓ Objetos que podem ser protegidos, os mecanismos e a granularidade de
proteção.

▪ PERMISSION (Privilégio): permissão que pode ser concedida para

executar alguma ação, ou seja, executar algum comando SQL.

▪ ROLE (Papel): conjunto de privilégios que pode ser concedido a

usuários ou a outras roles.


✓ Criadas com o comando CREATE ROLE da classe DDL da Linguagem SQL.
Componentes de Segurança
▪ PRINCIPALS: são entidades com acesso concedido à uma instância do

SQL Server, no nível do servidor, da instância ou do banco de dados,


para os quais podem ser concedidos privilégios ou roles;
✓ Criados com o comando CREATE da classe DDL;

✓ Exemplo: criação de um PRINCIPAL do tipo logn:

CREATE LOGIN UsrIGTI

WITH PASSWORD = 'Pa55w.rd’,

DEFAULT_DATABASE = [BDIGTI];
Componentes de Segurança
▪ SECURABLES: objetos do SQL Server, no nível do servidor ou do

banco de dados, nos quais são concedidas as permissões para os


principals.
Segurança de Autenticação
SQL Authentication Windows Authentication

Login interno do SQL Login externo ao SQL


Nome do login e senha Nome do login e senha
são armazenados no SQL. são armazenados no SO/AD.
Necessário informar login e Quando já autenticado no SO,
senha para fazer o logon. necessário informar somente
login para fazer o logon.

*Não disponível para SSAS SSRS.


Próxima Aula
❑ Concessão e Revogação de Privilégios.
Segurança no SQL Server
Capítulo 8

Aula 8.2. Concessão e Revogação de Privilégios


Prof. Gustavo Aguilar
Nesta Aula
❑ Concessão de Privilégios
❑ Revogação de Privilégios
Concessão de Privilégios
▪ Feita através do comando GRANT da classe DCL;

▪ Privilégios para poder executar comandos DML / DDL / DCL;

▪ Sintaxe p/ DML: GRANT [Privilégio(s)] ON [Objeto] TO [Usuário];

▪ Exemplos de Concessão de Privilégio DML:

GRANT SELECT ON [Person].[Address] TO UsrAdventureSystem;

GRANT INSERT,UPDATE ON [Person].[Person] TO Role_App;


GRANT SELECT, INSERT, DELETE, UPDATE ON [Person].[Address] TO UsrApp;
Concessão de Privilégios
▪ Sintaxe p/ DDL: GRANT [Privilégio(s)] TO [Usuário];

▪ Exemplos de Concessão de Privilégio DDL:

GRANT CREATE TABLE TO Role_App;

GRANT CREATE USER TO UsrSystem;

▪ Opção WITH GRANT OPTION: permite que o usuário que recebeu


uma permissão, possa concedê-la para outro usuário.
GRANT DELETE ON DatabaseLog

TO UsrAdventureSystem WITH GRANT OPTION;


Concessão de Privilégios
▪ Permissões de acesso são verificadas em tempo de execução das

queries;

▪ Caso o usuário não tenha permissão em qualquer objeto contido da

query, toda a execução da query falha.


Concessão de Privilégios
▪ Boa prática: usar roles, representando papéis / funções / perfis.
Concessão de Privilégios
▪ “Mix” de Opções: roles + roles com roles + privilégios diretamente.
Revogação de Privilégios
▪ Feita através do comando REVOKE da classe DCL;

▪ Revogação de privilégios para execução de comandos DML/DDL/DCL;

▪ Sintaxe p/ DML: REVOKE [Privilégio(s)] ON [Objeto] FROM [Usuário];

▪ Opção CASCADE: remove permissões concedidas por um usuário que

possuía a opção WITH GRANT OPTION;

▪ Exemplos de Revogação de Privilégio DML:

REVOKE DELETE ON DatabaseLog FROM UsrAdventureSystem;

▪ Comando DENY: para negar privilégios em objetos, sobrescrevendo


privilégios recebidos com GRANT.
Próxima Aula
❑ Capítulo 9 - Backup no SQL Server.
Backup no SQL Server
Capítulo 9

Aula 9.1. Conceitos Básicos de Backup


Prof. Gustavo Aguilar
Nesta Aula
❑ Periodicidade
❑ Retenção
❑ Tipos de Backup
❑ RPO
❑ RTO
❑ Política de Backup
Periodicidade
▪ Qual a frequência que o backup é feito?

✓ Diária ✓ Mensal

✓ De hora em hora ✓ Anual

✓ Semanal ✓ Etc.
Retenção
▪ Por quanto tempo cada backup que foi realizado é guardado, ou

seja, durante quanto tempo estará disponível?

✓ Uma semana ✓ Cinco anos

✓ Um mês ✓ Indeterminadamente

✓ Um ano ✓ Etc.
Tipos de Backup
▪ FULL: backup completo do banco de dados (estruturas, dados,

código, usuários, privilégios no banco de dados etc.).

▪ DIFERENCIAL (DIFF): backup das alterações ocorridas desde o último

backup full executado.


Tipos de Backup
▪ LOG: 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.
➢ Banco de dados precisa estar no recovery model full;

➢ Possibilita recovery-point-in-time.
RTO
▪ Recovery Time Objective;

▪ Tempo dentro do qual um processo de negócios deve ser restaurado, após um


desastre, para evitar consequências inaceitáveis associadas a uma interrupção
na continuidade do serviço;

▪ Quanto tempo se leva para restaurar o banco de dados?


RPO
▪ Recovery Point Objective;

▪ Quantidade máxima aceitável de perda de dados após um incidente de perda


de dados não planejado, expresso como uma quantidade de tempo.
Política de Backup
➢ Conjunto de regras e procedimentos que descrevem a estratégia da

empresa ao fazer cópias de segurança dos dados para fins de


segurança.

Periodicidade + Retenção + Tipo(s) de Backup(s)


+ RTO + RPO + Ferramenta + Infraestrutura +
Processos
Próxima Aula
❑ Fazendo Backup no SQL Server.
Backup no SQL Server
Capítulo 9

Aula 9.2. Fazendo Backup no SQL Server


Prof. Gustavo Aguilar
Nesta Aula
❑ Comando para Fazer Backup
❑ Demonstração: Fazendo Backup no SQL Server
Comando para Fazer Backup
--Backup FULL / DIFF
BACKUP DATABASE { database_name }
TO <backup_device>

[ WITH { DIFFERENTIAL | <general_WITH_options> [ ,...n ] } ]

--Backup de LOG
BACKUP LOG { database_name}

TO <backup_device>

[ WITH { <general_WITH_options> | \<log-specific_optionspec> } [ ,...n ] ]


Fazendo Backup no SQL Server

Você também pode gostar