Buscar

Silberschatz

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Banco de Dados I/AlgebraRelacional_BOM.pdf
MC536
Linguagens de 
Manipulação de Dados
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Linguagens de 
consulta/manipulação
� Linguagens de Consulta (Query Languages):
� Possibilitam a manipulação e recuperação de dados do 
banco de dados.
� Linguagens de Consulta matemáticas formam as 
bases para linguagens “reais” (ex. SQL):
� Álgebra Relacional: operacional, usuário descreve o que 
quer fazer.
� Cálculo Relacional: não operacional, declarativo. Usuário 
descreve o que ele quer, ao invés de como deve ser 
computado o que ele quer.
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Exemplo – cliente usa táxi
Cliente TaxiCorrida1 N N 1
CliId
Nome
CPF
Cliente
Particular
Cliente
Empresa
CGC
d
data Placa
Marca
Modelo
Ano
Exemplo - Tabelas
CliId Nome
0101 Nina
0202 Miúcha
0303 Bóris
Cliente Particular (CP)
Cliente Empresa (CE)
CliId Nome
0102 Lulu
0202 Miúcha
0203 Bidu
0304 Scooby
Exemplo - Tabelas
Placa Marca Modelo Ano
AAA0101 Ma1 Mo1 2000
BBB0202 Ma2 Mo2 2001
CCC0303 Ma3 Mo3 2002
DDD0404 Ma4 Mo4 2003
EEE0505 Ma5 Mo5 2004
CliId Placa Data
0101 AAA0101 10/01/2001
0203 DDD0404 20/02/2002
Táxi (TX)
Corrida (C)
Exemplo de consultas
� Qual a marca de carro mais requisitada 
pelos clientes?
� Em que mês do ano mais corridas são 
feitas?
� Qual o nome dos clientes que trabalham 
na empresa que mais se utiliza do serviço 
de táxi?
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Álgebra Relacional
� Linguagem operacional
� Entrada e saída das operações são relações
� Operações
� Operações da teoria de conjunto matemática
� União, intersecção, diferença de conjuntos, produto 
cartesiano
� Operações desenvolvidas p/ BDs relacionais:
� Seleção, projeção, junção e renomeação
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Operação de Seleção
� Seleciona um conjunto de tuplas que satisfaçam 
um dado predicado (uma condição lógica) nos 
valores dos atributos
� Notação: σ p(R)
� P: predicado de seleção
� Constituído por termos ligados por: ∧ (e), ∨ (ou), ¬
(não)
� Termo:
�<atributo> op <atributo> 
�<atributo> op <constante>
� op pode ser: =, ≠, >, ≥, < ou ≤
Seleção - Exemplo
σAno>2001(TX)
Placa Marca Modelo Ano
AAA0101 Ma1 Mo1 2000
BBB0202 Ma2 Mo2 2001
CCC0303 Ma3 Mo3 2002
DDD0404 Ma4 Mo4 2003
EEE0505 Ma5 Mo5 2004
Seleção - Exemplo
σAno>2001(TX)
Placa Marca Modelo Ano
CCC0303 Ma3 Mo3 2002
DDD0404 Ma4 Mo4 2003
EEE0505 Ma5 Mo5 2004
Seleção - Propriedades
� A operação de seleção é unária
� A operação σσσσ <condição de seleção>(R) produz relação 
com mesmo esquema R 
� O grau (número de atributos) de uma relação resultante 
de uma seleção é o mesmo grau de R
� O número de tuplas resultante da seleção é: 
| σ p(R) | ≤ | R |
� É comutativa:
σσσσ <condição 1>(σσσσ< condição 2>( R)) = σσσσ <condição 2 (σσσσ< condição 1>(R))
� Cascatas de seleções = uma seleção com 
conjunção de condições:
 σσσσ <condição 1>(σσσσ < condição 2> (σσσσ <condição 3> (R))) 
 = σσσσ <condição 1> AND < condição 2> AND < condição 3> (R)
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Operação de Projeção
� Seleciona certas colunas da tabela, 
deixando alguns atributos de lado.
� Notação:
�piA1, A2, …, Ak (R)
� A1, ..., Ak : atributos da relação R 
� Resultado: relação com as k colunas 
selecionadas
� Duplicatas são removidas
Projeção - Exemplo
piMarca,Modelo(TX)
Placa Marca Modelo Ano
AAA0101 Ma1 Mo1 2000
BBB0202 Ma2 Mo2 2001
CCC0303 Ma3 Mo3 2002
DDD0404 Ma1 Mo1 2003
EEE0505 Ma5 Mo5 2004
Projeção - Exemplo
piMarca,Modelo(TX)
Placa Marca Modelo Ano
AAA0101 Ma1 Mo1 2000
BBB0202 Ma2 Mo2 2001
CCC0303 Ma3 Mo3 2002
DDD0404 Ma1 Mo1 2003
EEE0505 Ma5 Mo5 2004
Projeção - Exemplo
piMarca,Modelo(TX)
Marca Modelo
Ma1 Mo1
Ma2 Mo2
Ma3 Mo3
Ma1 Mo1
Ma5 Mo5
Projeção - Exemplo
piMarca,Modelo(TX)
Marca Modelo
Ma1 Mo1
Ma2 Mo2
Ma3 Mo3
Ma5 Mo5
Projeção - Propriedades 
� O número de tuplas na relação resultado 
| pi <lista> (R) | ≤ | R |
� Não é comutativa
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Renomeação
� Dada R(A1, A2, ... An)
� ρ D1 (A1, A2, ... An) (D)
� D1 (A1, A2, ... An) ← D
Renomeação
ρ(TY,σMarca=‘Ma1’TX)TX
Placa Marca Modelo Ano
AAA0101 Ma1 Mo1 2000
BBB0202 Ma2 Mo2 2001
CCC0303 Ma3 Mo3 2002
DDD0404 Ma1 Mo1 2003
EEE0505 Ma5 Mo5 2004
Placa Marca Modelo Ano
AAA0101 Ma1 Mo1 2000
FFF0606 Ma1 Mo2 2004
TY
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Operações de Conjuntos - União
� R ∪ S:
� Relação que contém as tuplas que estão em R, 
S ou ambas
R ∪ S = {t | t ∈ R ou t ∈ S}
� Para R ∪ S ser válida:
� R, S devem ter igual número de atributos
� Os domínios dos atributos têm de ser 
compatíveis
Operações de Conjuntos - União
CliId Nome
0101 Nina
0202 Miúcha
0303 Bóris
Cliente Particular (CP)
Cliente Empresa (CE)
CliId Nome
0102 Lulu
0202 Miúcha
0203 Bidu
0304 Scooby
CliId Nome
0102 Lulu
0202 Miúcha
0203 Bidu
0304 Scooby
0101 Nina
0303 Bóris
CP ∪∪∪∪ CE
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Operações de Conjuntos - Intersecção
� R ∩ S:
� Relação que contém as tuplas que estão em 
ambas R e S
Operações de Conjuntos - Intersecção
CliId Nome
0101 Nina
0202 Miúcha
0303 Bóris
Cliente Particular (CP) 
Cliente Empresa (CE)
CliId Nome
0102 Lulu
0202 Miúcha
0203 Bidu
0304 Scooby
CliId Nome
0202 Miúcha
CP ∩∩∩∩ CE
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Operações de Conjuntos - Diferença
� R - S:
� Relação que contém as tuplas que estão em R 
e que não estão em S
Operações de Conjuntos - Diferença
CliId Nome
0101 Nina
0202 Miúcha
0303 Bóris
Cliente Particular (CP) 
Cliente Empresa (CE)
CliId Nome
0102 Lulu
0202 Miúcha
0203 Bidu
0304 Scooby
CliId Nome
0101 Nina
0303 Bóris
CP - CE
Operações de Conjuntos - Propriedades
� União e interseção são comutativas:
� R ∪ S = S ∪ R
� R ∩ S = S ∩ R
� E associativas:
� R ∪ (S ∪ T) = (R ∪ S) ∪ T
� (R ∩ S) ∩ T = R ∩ (S ∩ T)
� Diferença não é comutativa
R - S ≠ S – R
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Operações de Conjunto - Produto 
Cartesiano
� Permite combinar informações de duas 
relações
� R(A1, A2, ..., An) x S(B1, B2, ..., Bm) é
uma relação Q(A1, A2, ..., An, B1, B2, ..., 
Bm )
�| R x S | = | R | * | S |
Operações de Conjunto - Produto 
Cartesiano
CliId Nome
0101 Nina
0202 Miúcha
0303 Bóris
CP
CliId Placa Data
0101 AAA0101 10/01/2001
0203 DDD0404 20/02/2002
Corrida (C)
CP x C 
CliId Nome CliId Placa Data
0101 Nina 0101 AAA0101 10/01/2001
0101 Nina 0203 DDD0404 20/02/2002
0202 Miúcha 0101 AAA0101 10/01/2001
0202 Miúcha 0203 DDD0404 20/02/2002
0303 Bóris 0101 AAA0101 10/01/2001
0303 Bóris 0203 DDD0404 20/02/2002
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Junção
� Combina as tuplas relacionadas em duas 
relações R e S dentro de uma tupla única.
� Dadas as relações:
� R(A1, A2, ..., An) 
� S(B1, B2, ..., Bm) 
� R <condição da junção> S contém todas as 
tuplas do produto cartesiano que 
satisfazem a condição.
Junção - exemplo
CP CP.CliId<C.CliIdC
CliId Nome CliId Placa Data
0101 Nina 0101 AAA0101 10/01/2001
0101 Nina 0203 DDD0404 20/02/2002
0202 Miúcha 0101 AAA0101 10/01/2001
0202 Miúcha 0203 DDD0404 20/02/2002
0303 Bóris 0101 AAA0101 10/01/2001
0303 Bóris 0203 DDD0404 20/02/2002
Produto
cartesiano
Tuplas que
satisfazem 
a condição
Junção - exemplo
CP CP.CliId<C.CliIdC
CliId Nome CliId Placa Data
0101 Nina 0203 DDD0404 20/02/2002
0202 Miúcha 0203 DDD0404 20/02/2002
Junção
� R S é uma relação Q(A1, A2, ..., An, 
B1, B2, ..., Bm )
� Número de tuplas na junção:
0 ≤| R S | ≤ | R | * | S |
Equi-Junção
� Um caso especial de junção condicional 
em que a condição contém somente 
igualdades.
Equi-Junção - exemplo
CP CliIdC
CliId Nome CliId Placa Data
0101 Nina 0101 AAA0101 10/01/2001
0101 Nina 0203 DDD0404 20/02/2002
0202 Miúcha 0101 AAA0101 10/01/2001
0202 Miúcha 0203 DDD0404 20/02/2002
0303 Bóris 0101 AAA0101 10/01/2001
0303 Bóris 0203 DDD0404 20/02/2002
Produto
cartesiano
Tuplas que
satisfazem 
equi-junção
em CliId
Equi-Junção - exemplo
CP CliIdC
CliId Nome CliId Placa Data
0101 Nina 0101 AAA0101 10/01/2001
Conjunto Completo de Operadores
� {pi, σσσσ , ∪∪∪∪, -, X}
� Qualquer outro operador pode ser expresso 
através dos operadores deste conjunto
� R ∩∩∩∩ S = (R ∪∪∪∪ S) - ((R-S) ∪∪∪∪ (S-R))
� R |X|<condição>S = σσσσ<condição>(R X S) 
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Divisão
� Não é tem um operador primitivo
� É útil para expressar consultas como:
� Encontre clientes que tenham andado em táxis 
de uma certa marca
Divisão
� x e y podem ser quaisquer listas de campos
� x ∪∪∪∪ y é a lista de campos na relação A
� y é a lista de campos na relação B
� A/B
� A/B = { <x> | ∃ <x,y> ∈ A ∀ <y> ∈ B}
� A/B contém todas tuplas x (clientes) tal que para cada 
tupla y (táxi de marca MA1) em B, há uma tupla xy em 
A.
� Ou: Se o conjunto de valores y (marca do táxi) 
associados com valores x (clientes) em A contiverem 
todos os valores y em B, o valor x está em A/B.
Divisão - exemplo
X Y
x1 y1
X1 y2
X1 y3
X1 y4
x2 y1
x2 y2
x3 y2
X4 y2
x4 y4
Y
y2
Y
y2
y4
Y
y1
y2
y4
X
x1
x2
x3
x4
X
x1
x4
X
x1
A
B3
B2
B1
A/B1 A/B2 A/B3
Divisão
CliId Placa Data
0101 AAA0101 10/01/2001
0101 FFF0606
0202 FFF0606
0202 BBB0202
0303 DDD0404
0404 AAA0101
0404 FFF0606 19/02/2002
0404 DDD0404 20/02/2002
TY
Corrida (C)
Placa Marca Modelo Ano
AAA0101 Ma1 Mo1 2000
FFF0606 Ma1 Mo2 2004
Consulta:
Encontrar clientes que tenham
andado em táxis da marca Ma1
Divisão
CliId Placa
0101 AAA0101
0101 FFF0606
0202 FFF0606
0202 BBB0202
0303 DDD0404
0404 AAA0101
0404 FFF0606
0404 DDD0404
Corrida2
Placa
AAA0101
FFF0606
ρρρρ(Corrida2,pipipipiClId,Placa(Corrida))
ρρρρ(Taxi2,pipipipiPlaca(TY)) Taxi2
Divisão
CliId Placa
0101 AAA0101
0101 FFF0606
0202 FFF0606
0202 BBB0202
0303 DDD0404
0404 AAA0101
0404 FFF0606
0404 DDD0404
Corrida2
Placa
AAA0101
FFF0606
Taxi2
Corrida2/Taxi2
CliId
0101
0404
Sumário
� Linguagens de consulta
� Exemplo
� Álgebra Relacional
� Seleção
� Projeção
� Renomeação
� União
� Intersecção
� Diferença
� Produto Cartesiano
� Junção
� Divisão
� Exemplos
Exercícios – Funcionários e 
Dependentes
� F(numfd,nomef)
� D(numfd,nomed,par)
D
numfd nomed par
01 Alice filha
02 Alice esposa
02 Clara filha
03 José filho
F
numfd nomef
01 F1
02 F2
03 F3
04 F4
Exercícios
� Quais os nomes e parentescos de todos os 
dependentes?
Exercícios
� Quais os nomes e parentescos de todos os 
dependentes?
�pinomed,par (D)
Exercícios
� Quais funcionários possuem dependentes 
filhas?
Exercícios
� Quais funcionários possuem dependentes 
filhas?
�pinumfd (σpar=‘filha’ (D))
Exercícios
� Quais funcionários não possuem 
dependentes?
Exercícios
� Quais funcionários não possuem 
dependentes?
�pinumfd (F) - pinumfd (D)
Exercícios
� Dê os nomes dos funcionários que 
possuem algum dependente.
� Dê o nome de cada funcionário que 
possui uma dependente chamada Alice.
� Quais funcionários não têm Alice como 
dependente?
Exercícios
� Dê os nomes dos funcionários que 
possuem algum dependente.
�pinomef (F |X| D)
Exercícios
� Dê o nome de cada funcionário que 
possui uma dependente chamada Alice.
�pinomef (F |X|(σnomed=‘Alice’ (D)))
Exercícios
� Quais funcionários não têm Alice como 
dependente?
� pinumfd (D) - pinumfd (σnomed=‘Alice’ (D))
Exercícios
Banco
branch (branch-name, branch-city, assets)
customer (customer-name, customer-street, 
customer-only)
account (account-number, branch-name, balance)
loan (loan-number, branch-name, amount)
depositor (customer-name, account-number)
borrower (customer-name, loan-number)
Banco - consultas
� Determinar todos os empréstimos superiores a $1200
� Encontrar os números dos empréstimos de montante 
superior a $1200
� Listar os nomes de todos os clientes que têm um 
empréstimo, uma conta, ou ambas as coisas
� Encontrar os clientes que têm um empréstimo e uma conta 
no banco.
� Determinar todos os clientes que têm um empréstimo na 
agência de Perryridge.
� Listar os nomes dos clientes que possuem um empréstimo 
na agência de Perryridge mas que não tem nenhuma conta 
no banco.
� Determinar todos os clientes que têm um empréstimo na 
agência de Perryridge.
� Determinar o saldo mais elevado entre todas as contas
Clínica
médicos(nEmpr,nomeM,especialidade)
pacientes(nBI,nomeP,telefone,morada,idade)
fármacos(codF,nomeF)
consultas(nConsulta,data,nBI,nEmpr)
receitas(codF,nConsulta,quantidade)
Clínica - consultas
� Quais os pacientes com mais de 50 anos de idade?
� Quais os nomes dos pacientes com mais de 50 anos de 
idade?
� Quais os fármacos que já foram receitados em consultas da
clínica?
� Quais os fármacos que nunca foram receitados?
� Qual a idade do paciente mais velho?
� E quais os (nomes dos) pacientes com essa idade?
Banco de Dados I/Cap�tulo 1.ppt
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Capítulo 1: Introdução 
Finalidade dos sistemas de banco de dados
Visão dos dados
Linguagens de banco de dados
Bancos de dados relacionais
Projeto de banco de dados
Bancos de dados semiestruturados e baseados em objeto
Armazenamento e consulta de dados
Gerenciamento de transação
Arquitetura do banco de dados
Usuários e administradores de banco de dados
Estrutura geral
História dos sistemas de banco de dados
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Sistema de gerenciamento de banco
de dados (DBMS)
Um DBMS contém informações sobre uma determinada empresa.
		Coleção de dados inter-relacionados
		Conjunto dos programas para acessar os dados 
		Um ambiente que é conveniente e eficiente de usar
Aplicações de banco de dados:
		Banco: todas as transações
		Linhas aéreas: reservas, horários
		Universidades: matrículas, registros, notas
		Vendas: clientes, produtos, compras
		Revendedores on-line: acompanhamento de pedidos, 		recomendações personalizadas
		Indústria: produção, estoque, pedidos, cadeia de suprimento
		Recursos humanos: registros de empregados, salários, 	deduções de impostos
Os bancos de dados tocam todos os aspectos das nossas vidas 
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Finalidade dos sistemas de banco
de dados
Antigamente, as aplicações de banco de dados eram construídas diretamente sobre os sistemas de arquivo.
Desvantagens de usar sistemas de arquivo para armazenar dados:
Redundância e inconsistência de dados
Múltiplos formatos de arquivo, duplicação de informações em diferentes arquivos
Dificuldade de acessar os dados 
Necessidade de escrever um novo programa para realizar cada nova tarefa
Isolamento dos dados — vários arquivos e formatos
Problemas de integridade
Restrições de integridade (por exemplo, saldo de conta > 0) se tornam “enterrados” no código do programa em vez de serem declarados explicitamente
Difícil de acrescentar novas restrições ou modificar as existentes
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Finalidade dos sistemas de banco
de dados (cont.) 
Desvantagens de usar sistemas de arquivo (cont.) 
Atomicidade das atualizações
Falhas podem deixar o banco de dados em um estado inconsistente com atualizações parciais realizadas
Exemplo: A transferência de fundos de uma conta para outra deve ser completa ou não deve ocorrer
Acesso concorrente por vários usuários
Acesso concorrente necessário para o desempenho
Acessos concorrentes não controlados podem levar a inconsistências
Exemplo: Duas pessoas lendo um saldo e atualizando-o ao mesmo tempo
Problemas de segurança 
Difícil de fornecer ao usuário o acesso a alguns, mas nem todos, os dados
Os sistemas de banco de dados oferecem soluções para todos os problemas acima
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Níveis de abstração
Nível físico: descreve como um registro (por exemplo, cliente) é armazenado.
Nível lógico: descreve os dados armazenados no banco de dados e as relações entre eles.
type cliente = registro id_cliente : string; nome_cliente : string; rua_cliente : string; cidade_cliente : string; end;
Nível de view: os programas de aplicação ocultam detalhes dos tipos de dados. As views também podem ocultar informações (como o salário de um funcionário) por motivos de segurança.
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Visão dos dados
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Instâncias e esquemas
Semelhantes aos tipos e variáveis nas linguagens de programação
Esquema – a estrutura lógica do banco de dados 
Exemplo: O banco de dados consiste nas informações sobre um conjunto de clientes e contas e na relação entre eles
Análogo às informações de tipo de uma variável em um programa
Esquema físico: projeto de banco de dados no nível físico
Esquema lógico: projeto de banco de dados no nível lógico
Instância – o conteúdo real do banco de dados em um determinado ponto no tempo 
Análogo ao valor de uma variável
Independência de dados física – a capacidade de modificar o esquema físico sem mudar o esquema lógico
Aplicações dependem do esquema lógico
Em geral, as interfaces entre os vários níveis e componentes devem ser bem-definidas de modo que as mudanças em algumas partes não influenciem seriamente outras.
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Modelos de dados
Uma coleção de ferramentas conceituais para descrever
Dados
Relacionamentos de dados 
Semântica de dados 
Restrições de dados 
Modelo relacional
Modelo de relação de entidade (principalmente para projeto de banco de dados) 
Modelo de dados baseado em objeto (orientado a objeto e relacional de objeto)
Modelo de dados semiestruturado (XML)
Outros modelos mais antigos:
Modelo de rede 
Modelo hierárquico 
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Linguagens de manipulação
de dados (DML)
Linguagem para acessar e manipular os dados organizados pelo modelo de dados apropriado
A DML também é conhecida como linguagem de consulta
Duas classes de linguagem
Procedurais – usuário especifica que dados são necessários e como obter esses dados
Declarativas (não procedurais) – usuário especifica que dados são necessários sem especificar como obter esses dados
SQL é a linguagem de consulta mais utilizada
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Linguagem de definição de dados (DDL)
Notação de especificação para definir o esquema de banco de dados 
Exemplo:
create table conta ( número_conta char(10), saldo integer)
O compilador DDL gera um conjunto de tabelas armazenado em um dicionário de dados
O dicionário de dados contém metadados (ou seja, dados sobre os dados)
Esquema de banco de dados 
Linguagem de armazenamento e definição de dados 
Especifica a estrutura de armazenamento e os métodos de acesso usados
Restrições de integridade
Registros de domínio 
Integridade referencial (restrição de referências na SQL)
Afirmações
Autorização
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Modelo relacional
Exemplo de dados tabulares no modelo relacional 
Atributos
	
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Exemplo de banco de dados relacional
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Exemplo de banco de dados relacional (Cont.)
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
SQL
SQL: linguagem não procedural amplamente usada
Exemplo: encontre o nome do cliente com id_cliente 192-83-7465 select cliente.nome_cliente from cliente where cliente.id_cliente = ‘192-83-7465’
Exemplo: encontre os saldos de todas as contas pertencentes ao cliente com id_cliente 192-83-7465 select conta.saldo from depositante, conta where depositante.id_cliente = ‘192-83-7465’ and depositante.número_conta = conta.número_conta
Os programas de aplicação geralmente acessam banco de dados através de
Extensões de linguagem para permitir SQL embutida
Interface de programa de aplicação (por exemplo, ODBC/JDBC), que permite que consultas SQL sejam enviadas a um banco de dados.
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Projeto de banco de dados
O processo de projetar a estrutura geral do banco de dados.
Projeto lógico – Decidir sobre o esquema de banco de dados. O projeto de banco de dados exige encontrar uma “boa” coleção de esquemas de relação.
Decisão empresarial – Que atributos devemos registrar no banco de dados?
Decisão de ciência da computação – Que esquemas de relação devemos ter e como os atributos devem ser distribuídos entre os vários esquemas de relação?
Projeto físico – Decidir sobre o layout físico do banco de dados.
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
O modelo entidade-relacionamento
Modela uma empresa como uma coleção de entidades e relacionamentos 
Entidade: uma “coisa” ou “objeto” na empresa que é distinguível dos outros objetos 
Descrito por um conjunto de atributos 
Relacionamento: uma associação entre várias entidades 
Representado graficamente por um diagrama entidade-relacionamento:
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Modelos de dados relacionais de objeto
Estendem o modelo de dados relacional incluindo orientação a objeto e construções para lidar com tipos de dados inseridos.
Permitem que atributos de tuplas tenham tipos complexos, incluindo valores não atômicos como relações aninhadas.
Preservam as fundações relacionais, em especial o acesso declarativo aos dados, enquanto estendem a capacidade de modelagem.
Fornecem compatibilidade com linguagens relacionais posteriores existentes.
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
XML: Extensible Markup Language
Definida pelo WWW Consortium (W3C)
Originalmente criada como uma linguagem de marcação de documento, não como uma linguagem de banco de dados 
A capacidade de especificar novas tags e criar estruturas de tag aninhadas tornaram a XML uma excelente maneira de trocar dados, não apenas documentos.
A XML se tornou a base para todos os formatos de intercâmbio de dados da nova geração.
Uma ampla variedade de ferramentas está disponível para análise, navegação e consulta de dados/documentos XML.
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Gerenciamento de armazenamento
Gerenciador de armazenamento é um módulo de programa que fornece a interface entre os dados de baixo nível armazenados no banco de dados e os programas de aplicação e consultas submetidos ao sistema.
O gerenciador de armazenamento é responsável pelas seguintes tarefas: 
Interagir com o gerenciador de arquivos
Armazenar, recuperar e atualizar dados eficientemente.
Problemas:
Acesso ao armazenamento
Organização de arquivos
Indexação e hashing
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Processamento de consulta 
1.	Análise e tradução
2.	Otimização 
3.	Avaliação 
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Processamento de consulta (cont.)
Maneiras alternativas de avaliar uma consulta dada
Expressões equivalentes
Diferentes algoritmos para cada operação
A diferença de custo entre um bom e um mau método de avaliar uma consulta pode ser enorme
Necessidade de estimar o custo das operações
Depende profundamente das informações sobre relações que o banco de dados precisa manter
Necessidade de estimar estatísticas para resultados intermediários para calcular custo de expressões complexas
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Gerenciamento de transação
Uma transação é um conjunto de operações que realiza uma única função lógica em uma aplicação de banco de dados.
O componente de gerenciamento de transação garante que o banco de dados permanece em um estado consistente (correto) apesar de falhas do sistema (por exemplo, interrupções de energia e falhas do sistema operacional) e falhas de transação.
O gerenciador de controle de concorrência controla a interação entre as transações concorrentes para assegurar a consistência do banco de dados.
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Arquitetura do banco de dados
A arquitetura de um sistema de banco de dados é bastante
influenciada pelo sistema de computador subjacente em que o
sistema de banco de dados é executado:
Centralizado
Cliente-servidor 
Paralelo (multiprocessador)
Distribuído
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Usuários de banco de dados
Os usuários são diferenciados pela forma como esperam interagir com o
Sistema
Programadores de aplicação – interagem com o sistema através de chamadas de DML 
Usuários avançados — interagem com o sistema formulando suas requisições em uma linguagem de consulta de banco de dados
Usuários especializados — interagem com o sistema escrevendo aplicações de banco de dados especializadas que não se encaixam na estrutura de processamento de dados tradicional
Usuários leigos — interagem com o sistema chamando um dos programas de aplicação previamente escritos
			Exemplos, pessoas acessando bancos de dados através da 			Web, caixas bancários, equipe de contabilidade
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Administrador de banco de dados
Coordena todas as atividades do sistema de banco de dados; o administrador de banco de dados tem um bom conhecimento dos recursos e necessidades de informação da empresa.
As responsabilidades do administrador de banco de dados incluem:
Definição de esquema
Estrutura de armazenamento e definição de método de acesso
Modificação de esquema e de organização física
Concessão de autorização para acesso ao banco de dados
Especificar restrições de integridade
Agir como ligação com os usuários
Monitorar o desempenho e responder a mudanças em requisições
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Estrutura geral do sistema
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
História dos sistemas de banco de dados 
Década de 1950 e início da década de 1960:
Processamento de dados usando fitas magnéticas para armazenamento 
Fitas fornecem apenas acesso seqüencial 
Cartões perfurados para entrada
Final da década de 1960 e década de 1970:
Discos rígidos permitem acesso direto aos dados
Modelos de dados de rede e hierárquico em largo uso
Ted Codd define o modelo de dados relacional
Ganharia o ACM Turing Award por este trabalho
IBM Research inicia o protótipo do System
UC Berkeley inicia o protótipo do Ingres
Processamento de transação de alto desempenho (para a época)
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
História (cont.)
Década de 1980:
Protótipos relacionais de pesquisa evoluem para sistemas comerciais
SQL se torna o padrão do setor
Sistemas de banco de dados paralelos e distribuídos 
Sistemas de banco de dados orientados a objeto 
Década de 1990:
Grandes aplicações de suporte a decisão e exploração de dados 
Grandes data warehouses de vários terabytes
Surgimento do comércio Web 
Década de 2000:
Padrões XML e XQuery
Administração de banco de dados automatizada
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Final do Capítulo 1
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Figura 1.4
© Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Figura 1.7
Banco de Dados I/Cap�tulo 10.ppt
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Capítulo 10: XML 
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Introdução
XML: Extensible Markup Language
Definida pelo WWW Consortium (W3C)
Idealizada originalmente como uma linguagem de marcação de documentos, e não como uma linguagem de banco de dados
Documentos possuem tags dando informações extras sobre seções do documento
Por exemplo: <title> XML </title> <slide> Introdução …</slide>
Derivada da SGML (Standard Generalized Markup Language), porém mais simples de usar do que a SGML
Extensível, diferente da HTML
Os usuários podem acrescentar novas tags, e separadamente especificar como a tag deverá ser enviada para exibição
O objetivo foi (é?) substituir a HTML como linguagem para a publicação de documentos na Web
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Introdução (cont.) 
A capacidade de especificar novas tags e criar estruturas de tag aninhadas tornou a XML uma ótima maneira de trocar dados, não apenas documentos.
Grande parte do uso dsa XML foi nas aplicações de troca de dados, não como substituição da HTML
Tags tornam os dados (relativamente) auto-documentáveis
Por exemplo:
 <banco>
 <conta> 
 <número-conta> A-101 </número-conta>
 <nome-agência> Downtown </nome-agência>
 <saldo> 500 </saldo>
 </conta>
 <depositante>
 <número-conta> A-101 </número-conta>
 <nome-cliente> Johnson </nome-cliente>
 </depositante>
 </banco>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
XML: Motivação 
O intercâmbio de dados é crítico no mundo interligado de hoje
Exemplos:
Banco: transferência de fundos
Processamento de pedidos (especialmente pedidos entre empresas)
Dados científicos
Química: ChemML, …
Genética: BSML (Bio-Sequence Markup Language), …
O fluxo de informações de papel entre organizações está sendo substituído pelo fluxo eletrônico de informações
Cada área de aplicação tem seu próprio conjunto de padrões para representar informações
XML tornou-se a base para todos os formatos de intercâmbio de dados da nova geração
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
XML: Motivação (cont.) 
Os formatos da geração anterior eram baseados em texto puro, com cabeçalhos de linha indicando o significado dos campos
Semelhante em conceito aos cabeçalhos de e-mail
Não considera estruturas aninhadas, nenhuma linguagem de “tipo” padrão
Bastante ligada à estrutura de baixo nível do documento (linhas, espaços etc.)
Cada padrão baseado em XML define quais são elementos válidos, usando
Linguagens de especificação de tipo XML para especificar a sintaxe
DTD (Document Type Descriptors)
XML Schema
Mais descrições textuais da semântica
XML permite que tags novas sejam definidas conforme a necessidade
Porém, isso pode ser restrito por DTDs
Uma grande variedade de ferramentas está disponível para análise, navegação e consulta de documentos/dados XML
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Estrutura de dados XML 
Tag: rótulo para uma seção de dados
Elemento: seção de dados começando com <nometag> e terminando com </nometag> correspondente
Elementos precisam ser devidamente aninhados
Aninhamento apropriado
 <conta> … <saldo> …. </saldo> </conta> 
Aninhamento impróprio
 <conta> … <saldo> …. </conta> </saldo> 
Formalmente: cada tag de início precisa ter uma tag de fim correspondente, que está no contexto do mesmo elemento pai.
Cada documento precisa ter um único elemento de alto nível
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Exemplo de elementos aninhados 
	 <banco-1> <cliente>
	 <nome-cliente> Hayes </nome-cliente>
	 <rua-cliente> Main </rua-cliente>
	 <cidade-cliente> Harrison </cidade-cliente>
	 <conta>
	 <número-conta> A-102 </número-conta>
	 <nome-agência> Perryridge </nome-agência>
	 <saldo> 400 </saldo>
	 </conta>
 <conta>
 …
 </conta>
 </cliente> . .
 </banco-1>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Motivação para aninhamento 
O aninhamento de dados é útil na transferência de dados
Exemplo: elementos representando id-cliente, nome de cliente e endereço aninhados dentro de um elemento pedido
O aninhamento não é aceito, ou é desencorajado, nos bancos de dados relacionais
Com múltiplos pedidos, nome e endereço de cliente são armazenados de forma redundante
A normalização substitui estruturas aninhadas em cada pedido por chave estrangeira na tabela armazenando dados de nome e endereço do cliente
O aninhamento é aceito em bancos de dados objeto-relacional
Mas o aninhamento é impróprio na transferência de dados
A aplicação externa não tem acesso direto aos dados referenciados por uma chave estrangeira
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Estrutura de dados XML (cont.) 
Mistura de texto com sub-elementos é válida em XML.
Exemplo:
 <conta>
	 Esta conta é pouco usada atualmente.
	 <número-conta> A-102</número-conta>
	 <nome-agência> Perryridge</nome-agência>
	 <saldo>400 </saldo> </conta>
Útil para marcação de documento, mas desencorajado para representação de dados
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Atributos 
Elementos podem ter atributos
 <conta tipo-conta = “corrente” >
	 <número-conta> A-102 </número-conta>
	 <nome-agência> Perryridge </nome-agência>
	 <saldo> 400 </saldo>
	 </conta>
Os atributos são especificados por pares nome=valor dentro da tag de início de um elemento
Um elemento pode ter vários atributos, mas cada nome de atributo só pode ocorrer uma vez
<conta tipo-conta = “corrente” taxa-mensal=“5”>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Atributos e sub-elementos 
Distinção entre sub-elemento e atributo
No contexto dos documentos, atributos fazem parte da marcação, enquanto o conteúdo de sub-elemento faz parte do conteúdo básico do documento
No contexto da representação de dados, a diferente não é clara
A mesma informação pode ser representada de duas maneiras:
<conta número-conta = “A-101”> …. </conta>
<conta> <número-conta>A-101</número-conta> … </conta>
Sugestão: use atributos para identificadores de elementos, e use sub-elementos para o conteúdo
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Mais sobre sintaxe XML 
Elementos sem
sub-elementos ou conteúdo de texto podem ser abreviados terminando a tag de fim com um /> e excluindo a tag de fim
<conta número=“A-101” agência=“Perryridge” saldo=“200 />
Para armazenar dados de string que possam conter tags, sem que as tags sejam interpretadas como sub-elementos, use CDATA, como a seguir
<![CDATA[<conta> … </conta>]]>
Aqui, <conta> e </conta> são tratados como simples strings
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Namespaces 
Dados XML precisam ser trocados entre as organizações
O mesmo nome de tag pode ter um significado diferente em organizações diferentes, causando confusão na troca de documentos
Especificar uma string exclusiva como nome de elemento evita confusão
Solução melhor: use nome-exclusivo:nome-elemento
Evite usar nomes exclusivos longos em todo o documento usando Namespaces XML
 <banco Xmlns:FB=‘http://www.FirstBank.com’> …
	 <FB:agência>
		 <FB:nome-agência>Downtown</FB:nome-agência>
	 <FB:cidade-agência> Brooklyn </FB:cidade-agência>
	 </FB:agência> …
	</banco>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Esquema de documento XML 
Os esquemas (schemas) de banco de dados restringem quais informações podem ser armazenadas e os tipos de dados dos valores armazenados
Documentos XML não precisam ter um esquema associado
Porém, os esquemas são muito importantes para a troca de dados XML
Caso contrário, um site não pode interpretar automaticamente dados recebidos de outros site
Dois mecanismos para especificar um esquema XML
Document Type Definition (DTD)
Mais usado
XML Schema 
Mais novo, uso cada vez maior
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Document Type Definition (DTD) 
O tipo de um documento XML pode ser especificado com uma DTD
Estrutura de restrições DTD dos dados XML
Quais elementos podem ocorrer
Que atributos um elemento pode/deve ter
Que sub-elementos podem/devem ocorrer dentro de cada elemento, e quantas vezes.
DTD não restringe tipos de dados
Todos os valores são representados como strings em XML
Sintaxe da DTD
<!ELEMENT elemento (especificação-sub-elementos) >
<!ATTLIST elemento (atributos) >
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Especificação de elemento em DTD 
Sub-elementos podem ser especificados como
nomes de elementos, ou
#PCDATA (parsed character data), isto é, strings de caracteres
EMPTY (nenhum sub-elemento) ou ANY (qualquer coisa pode ser um sub-elemento)
Exemplo
	<! ELEMENT depositante (nome-cliente número-conta)>
 	<! ELEMENT nome-cliente (#PCDATA)>
	<! ELEMENT número-conta (#PCDATA)>
Especificação de sub-elemento pode ter expressões regulares
 <!ELEMENT banco ( ( conta | cliente | depositante)+)>
Notação: 
 “|” - alternativas
 “+” - 1 ou mais ocorrência
 “*” - 0 ou mais ocorrências
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
DTD banco 
	<!DOCTYPE banco [
	<!ELEMENT banco ( ( conta | cliente | depositante)+)>
	<!ELEMENT conta (número-conta nome-agência saldo)>
	<! ELEMENT cliente(nome-cliente rua-cliente cidade-cliente)>
	<! ELEMENT depositante (nome-cliente número-conta)>
	<! ELEMENT número-conta (#PCDATA)>
	<! ELEMENT nome-agência (#PCDATA)>
	<! ELEMENT saldo(#PCDATA)>
	<! ELEMENT nome-cliente(#PCDATA)>
	<! ELEMENT rua-cliente(#PCDATA)>
	<! ELEMENT cidade-cliente(#PCDATA)>
	]>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Especificação de atributo na DTD 
Especificação de atributo: para cada atributo
Nome
Tipo do atributo
CDATA
ID (identificador) ou IDREF (referência de ID) ou IDREFS (múltiplos IDREFs)
 mais sobre isso adiante
Se é
obrigatório (#REQUIRED)
tem um valor padrão (value), 
ou nenhum destes (#IMPLIED)
Exemplos
<!ATTLIST conta tipo-conta CDATA “corrente”>
<!ATTLIST cliente
	id-cliente ID # REQUIRED
	contas IDREFS # REQUIRED >
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
IDs e IDREFs 
Um elemento pode ter no máximo um atributo do tipo ID
O valor do atributo ID de cada elemento em um documento XML precisa ser distinto
Assim, o valor do atributo ID é um identificador de objeto
Um atributo do tipo IDREF precisa conter o valor de ID de um elemento no mesmo documento
Um atributo do tipo IDREFS contém um conjunto de (0 ou mais) valores
de ID. Cada valor de ID precisa conter o valor de ID de um elemento no
mesmo documento
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
DTD banco com atributos 
DTD banco com tipos de atributo ID e IDREF.
	 <!DOCTYPE banco-2[
	 <!ELEMENT conta (agência, saldo)>
	 <!ATTLIST conta
 número-conta ID # REQUIRED
	 proprietários IDREFS # REQUIRED>
	 <!ELEMENT cliente(nome-cliente, rua-cliente, 
 cidade-cliente)>
	 <!ATTLIST cliente
	 id-cliente ID # REQUIRED
	 contas IDREFS # REQUIRED>
 … declarações para agência, saldo, nome-cliente, rua-cliente e cidade-cliente ]>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Dados XML com atributos ID e IDREF 
	<banco-2>
		<conta número-conta=“A-401” proprietários=“C100 C102”>
		 <nome-agência> Downtown </nome-agência>
		 <saldo> 500 </saldo>
		</conta>
		<cliente id-cliente=“C100” contas=“A-401”>
		 <nome-cliente>Joe </nome-cliente>
		 <rua-cliente> Monroe </rua-cliente>
		 <cidade-cliente> Madison</cidade-cliente>
		</cliente>
		<cliente id-cliente=“C102” contas=“A-401 A-402”>
		 <nome-cliente> Mary </nome-cliente>
		 <rua-cliente> Erin </rua-cliente>
		 <cidade-cliente> Newark </cidade-cliente>
		</cliente>
	</banco-2>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Limitações das DTDs 
Sem definição de tipo para elementos de texto e atributos
Todos os valores são strings, e não integer, real etc.
Difícil de especificar conjuntos não ordenados de sub-elementos
A ordem normalmente é irrelevante nos bancos de dados
(A | B)* permite a especificação de um conjunto não ordenado, mas
Não pode garantir que cada um de A e B ocorre apenas uma vez
IDs e IDREFs não definem tipo
O atributo proprietários de uma conta pode conter uma referência a outra conta, o que não tem significado
O ideal é que o atributo proprietários se refira a elementos cliente
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
XML Schema 
XML Schema é uma linguagem de esquema mais sofisticada, que resolve as desvantagens das DTD. Ela admite
Tipos dos valores
Por exemplo, integer, string etc
Além disso, restringe valores mínimo/máximo
Tipos definidos pelo usuário
É especificada na sintaxe XML, ao contrário das DTDs
Representação mais padronizada, porém com mais texto
É integrada aos namespaces
Muito mais recursos
Tipos de lista, exclusividade e restrições de chave estrangeira, herança...
MAS: muito mais complicada do que as DTDs, ainda não muito usada.
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Versão XML Schema da DTD banco 
<xsd:schema xmlns:xsd=http://www.w3.org/2001/XMLSchema>
<xsd:element name=“banco” type=“TipoBanco”/>
<xsd:element name=“conta”> <xsd:complexType> <xsd:sequence> <xsd:element name=“número-conta” type=“xsd:string”/> <xsd:element name=“nome-agência” type=“xsd:string”/>
<xsd:element name=“saldo” type=“xsd:decimal”/> </xsd:squence> </xsd:complexType>
</xsd:element>
….. definições de cliente e depositante ….
<xsd:complexType name=“TipoBanco”> <xsd:squence>
<xsd:element ref=“conta” minOccurs=“0” maxOccurs=“unbounded”/>
<xsd:element ref=“cliente” minOccurs=“0” maxOccurs=“unbounded”/>
<xsd:element ref=“depositante” minOccurs=“0” maxOccurs=“unbounded”/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Consulta e transformação de dados XML 
Tradução de informações de um esquema XML para outro
Consulta de dados XML
Os dois anteriores estão muito relacionados e são tratados pelas mesmas ferramentas
Linguagens padrão para consulta/tradução de XML
XPath
Linguagem simples, consistindo em expressões de caminho
XSLT
Linguagem simples, projetada para a tradução de dados XML para XML, e XML para HTML
XQuery
Uma linguagem de consulta XML com um rico conjunto de recursos
Muitas outras linguagens foram propostas, e algumas serviram como base para o padrão Xquery
XML-QL, Quilt, XQL, …
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Modelo de árvore dos dados XML 
Linguagens de consulta e transformação são baseadas em um modelo de árvore dos dados XML
Um documento XML é modelado como uma árvore, com nós correspondentes a elementos e atributos
Nós de elemento possuem nós filhos, que podem ser atributos ou sub-elementos
O texto em um elemento é modelado como um filho de nó de texto do elemento
Os filhos de um nó são ordenados de acordo com sua ordem no documento XML
Nós de elemento e atributo (exceto pelo nó raiz) possuem um único pai, que é um nó de elemento
O nó raiz tem um único filho, que é o elemento raiz do documento
Usamos a terminologia de nós, filhos, pai, irmãos, ancestral, descendente etc., que devem ser interpretados nesse modelo de árvore dos dados XML.
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
XPath 
XPath é usada para endereçar (selecionar) partes dos documentos usando expressões de caminho
Uma expressão de caminho é uma seqüência de etapas separadas por “/”
Pense nos nomes de arquivo em uma hierarquia de diretórios
Resultado da expressão de caminho: conjunto de valores que, junto com seus elementos/atributos de contenção, combinam com o caminho especificado
Por exemplo: /banco-2/cliente/nome-cliente avaliado nos dados de banco-2 que vimos anteriormente, retorna
<nome-cliente>Joe</nome-cliente>
<nome-cliente>Mary</nome-cliente>
Por exemplo: /banco-2/cliente/nome-cliente/text( ) retorna os mesmos nomes, mas sem as tags delimitadoras
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
XPath (cont.) 
A “/” inicial indica a raiz do documento (acima da tag de nível superior)
Expressões de caminho são avaliadas da esquerda para a direita
Cada etapa opera sobre o conjunto de ocorrências produzidas pela etapa anterior
Predicados de seleção podem vir após qualquer etapa em um caminho, em [ ]
Por exemplo: /banco-2/conta[saldo > 400] 
retorna elementos conta com valor de saldo maior que 400
/banco-2/conta[saldo] retorna elementos conta contendo um sub-elemento saldo
Atributos são acessados com “@”
Por exemplo: /banco-2/conta[saldo > 400]/@número-conta
retorna os números de conta das contas com saldo > 400
Atributos IDREF não são desreferenciados automaticamente (veja mais obre isso adiante)
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Funções em XPath 
XPath oferece várias funções
A função count() no final de um caminho conta a quantidade de elementos no conjunto gerados pelo caminho
Por exemplo: /banco-2/conta[cliente/count() > 2] 
Retorna contas com mais de 2 clientes
Também funciona para testar a posição (1, 2, ..) dos irmãos do nó
Os conectivos Booleanos and e or e a função not() podem ser usados nos predicados
IDREFs podem ser referenciados por meio da função id()
id() também pode ser aplicado a conjuntos de referências como IDREFS e até mesmo a strings contendo várias referências separadas por espaços
Por exemplo: /banco-2/conta/id(@proprietário)
retorna todos os clientes referenciados pelo atributo proprietário dos elementos conta.
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Mais recursos da XPath 
Operador “|” usado para implementar união
Por exemplo: /banco-2/conta/id(@proprietário) | /banco-2/empréstimo/id(@tomador)
indica clientes com contas ou empréstimos
Porém, “|” não pode estar aninhado dentro de outros operadores.
“//” pode ser usado para pular vários níveis de nós
Por exemplo: /banco-2//nome-cliente 
encontra qualquer elemento nome-cliente em qualquer lugar sob o elemento /banco-2, independente do elemento em que está contido.
Uma etapa no caminho pode seguir para:
pais, irmãos, ancestrais e descendentes
dos nós gerados pela etapa anterior, não apenas aos filhos
“//”, descrito acima, é uma abreviação para indicar “todos os descendentes”
“..” especifica o pai
Omitimos outros detalhes.
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
XSLT 
Uma folha de estilo (stylesheet) armazena opções de formatação para um documento, normalmente separadas do documento
Por exemplo: a folha de estilo HTML pode especificar cores de fonte e tamanhos para cabeçalhos, etc.
A XML Stylesheet Language (XSL) foi criada originalmente para gerar HTML a partir da XML
A XSLT é uma linguagem de transformação de uso geral
Pode traduzir XML para XML, e XML para HTML
Transformações XSLT são expressas por meio de regras, denominadas templates
Templates combinam a seleção usando XPath com a construção de resultados
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Templates XSLT 
Exemplo de template XSLT com parte match e select
 <xsl:template match=“/banco-2/cliente”>
 <xsl:value-of select=“nome-cliente”/>
 </xsl:template>
 <xsl:template match=“*”/>
O atributo match de xsl:template especifica um padrão em XPath
Elementos no documento XML que combinam com o padrão são processados pelas ações dentro do elemento xsl:template
xsl:value-of seleciona (gera) valores especificados (aqui, nome-cliente)
Para os elementos que não combinam com uma template
Atributos e conteúdo de texto são gerados literalmente
Templates são aplicadas recursivamente aos sub-elementos
A template <xsl:template match=“*”/> combina com todos os elementos que não combinam com qualquer outra template
Usada para garantir que seu conteúdo não será gerado.
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Templates XSLT (cont.) 
Se um elemento combinar com diversas templates, apenas uma é usada
Aquela que será usada depende de um complexo esquema de prioridades e prioridades definidas pelo usuário
Consideramos que apenas uma template combina com qualquer elemento
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Criando saída XML 
Qualquer texto ou tag na folha de estilo XSL que não esteja no namespace xsl é gerado literalmente
Por exemplo: para quebrar resultados em novos elementos XML.
 <xsl:template match=“/banco-2/cliente”>
 <cliente>
 <xsl:value-of select=“nome-cliente”/>
 </cliente>
 </xsl:template>
 <xsl:template match=“*”/>
Exemplo de saída: <cliente> Joe </cliente> <cliente> Mary </cliente>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Criando saída XML (cont.) 
Nota: Não podemos inserir diretamente uma tag xsl:value-of dentro de outra tag
Por exemplo, não se pode criar um atributo para <cliente> no exemplo anterior usando xsl:value-of
diretamente
XSLT oferece uma construção xsl:attribute para cuidar dessa situação
xsl:attribute acrescenta atributo ao elemento anterior
Por exemplo: <cliente> 
 <xsl:attribute name=“id-cliente”>
 <xsl:value-of select = “id-cliente”/> 
 </xsl:attribute>
		 </cliente>
	resulta em uma saída no formato
	 <cliente id-cliente=“….”> ….
xsl:element é usado para criar elementos de saída com nomes calculados
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Recursão estrutural 
A ação de uma template pode ser aplicar templates recursivamente ao conteúdo de um elemento combinado
Por exemplo:
 <xsl:template match=“/banco”>
	 <clientes>
	 <xsl:template apply-templates/>
	 </clientes>
 </xsl:template>
	 <xsl:template match=“/cliente”>
 <cliente>
	 <xsl:value-of select=“nome-cliente”/>
 </cliente>
	 </xsl:template>
	 <xsl:template match=“*”/>
Exemplo de saída:
 <clientes> <cliente> John </cliente> <cliente> Mary </cliente> </clientes>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Junções em XSLT 
Chaves (keys) XSLT permitem que elementos sejam pesquisados (indexados) por valores de sub-elementos ou atributos
As chaves precisam ser declaradas (com um nome) e a função key() pode ser usada para a pesquisa. Por exemplo:
<xsl:key name=“numconta” match=“conta” use=“número-conta”/>
<xsl:value-of select=key(“numconta”, “A-101”)
Chaves permitem que (algumas) junções sejam expressas em XSLT
<xsl:key name=“numconta” match=“account” use=“número-conta”/>
<xsl:key name=“numcli” match=“cliente” use=“nome-cliente”/>
	<xsl:template match=“depositante”>
	<conta-cli>
	<xsl:value-of select=key(“numcli”, “nome-cliente”)/>
	<xsl:value-of select=key(“numconta”, “número-conta”)/>
	</conta-cli>
	</xsl:template>
	<xsl:template match=“*”/>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Classificação em XSLT 
O uso de uma diretiva xsl:sort dentro de uma template faz com que todos os elementos que combinam com a template sejam classificados
A classificação é feita antes de se aplicar outras templates
Por exemplo: <xsl:template match=“/banco”> 	<xsl:apply-templates select=“cliente”> 	<xsl:sort select=“nome-cliente”/> 	</xsl:apply-templates> </xsl:template> <xsl:template match=“cliente”> 	<cliente> 		<xsl:value-of select=“nome-cliente”/> 		<xsl:value-of select=“rua-cliente”/> 		<xsl:value-of select=“cidade-cliente”/> 	 	</cliente> <xsl:template> <xsl:template match=“*”/>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
XQuery 
XQuery é uma linguagem de consulta de uso geral para dados XML
Atualmente, está sendo padronizada pelo World Wide Web Consortium (W3C)
A descrição do livro-texto é baseada no rascunho do padrão datado de março de 2001. A versão final pode diferir, mas os principais recursos provavelmente se manterão.
Versão alfa do mecanismo XQuery disponível pela Microsoft
XQuery é derivada da linguagem de consulta Quilt, que vem da SQL, XQL e XML-QL
XQuery usa uma sintaxe do tipo for … let … where .. result … com as seguintes correspondências: for  SQL from where  SQL where result  SQL select let permite variáveis temporárias, e não possui equivalente em SQL
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Sintaxe FLWR na XQuery 
A cláusula for usa expressões XPath, e variável in percorre valores no conjunto retornado por XPath
Expressão FLWE simples na XQuery
encontre todas as contas com saldo > 400, com cada resultado delimitado em uma tag <número-conta> .. </número-conta> for $x in /banco-2/conta let $numconta := $x/@número-conta where $x/saldo > 400 return <número-conta> $numconta </número-conta>
Cláusula let não é realmente necessária nessa consulta, e a seleção pode ser feita na XPath. A consulta pode ser escrita como:
			for $x in /banco-2/conta[saldo>400] 	return <número-conta> $x/@número-conta </número-conta>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Expressões e funções de caminho 
Expressões de caminho (path) são usadas para vincular variáveis na cláusula for, mas também podem ser usadas em outros lugares
Por exemplo, expressões de caminho podem ser usadas na cláusula let, para vincular variáveis a resultados de expressões de caminho
A função distinct( ) pode ser usada para remover duplicatas nos resultados de expressão de caminho
A função document(nome) retorrna a raiz do documento indicado
Por exemplo: document(“banco-2.xml”)/banco-2/conta
Funções de agregação como sum( ) e count( ) podem ser aplicadas a resultados de expressão de caminho
XQuery não admite group by, mas o mesmo efeito pode ser obtido por consultas aninhadas, com expressões FLWR aninhadas dentro de uma cláusula result
Veja mais sobre consultas aninhadas adiante.
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Junções 
Junções são especificadas de uma maneira muito semelhante à SQL for $a in /banco/conta,
		 $c in /banco/cliente,
	 $d in /banco/depositante
	 where $a/número-conta = $d/número-conta and $c/nome-cliente = $d/nome-cliente
	 return <conta-cli> $c $a </conta-cli>
A mesma consulta pode ser expressa com as seleções especificadas como seleções XPath:
		 for $a in /banco/conta $c in /banco/cliente 	 $d in /banco/depositante[ número-conta = $a/número-conta and nome-cliente = $c/nome-cliente]
	 return <conta-cli> $c $a</conta-cli>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Alterando a estrutura aninhada 
A consulta a seguir converte dados da estrutura de arquivo com informações de banco para a estrutura aninhada usada em banco-1
 <banco-1>
 for $c in /banco/cliente
 return
 <cliente>
 $c/*
 for $d in /banco/depositante[nome-cliente = $c/nome-cliente],
 $a in /banco/conta[número-conta=$d/número-conta]
 return $a
 </cliente>
 </banco-1>
$c/* indica todos os filhos do nó aos quais $c está ligado, sem a tag delimitadora de nível superior
Exercício para o leitor: escreva uma consulta aninhada para achar a soma dos saldos de conta, agrupados por agência.
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Expressões de caminho da XQuery 
$c/text() indica o conteúdo de texto de um elemento sem quaisquer sub-elementos/tags
Expressões de caminho da XQuery admitem o operador “–>” para desreferenciar IDREFs
Equivalente à função id( ) da XPath, porém mais simples de usar
Pode ser aplicado a um conjunto de IDREFs para obter um conjunto de resultados
A versão de junho de 2001 do padrão mudou de “–>” para “=>”
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Classificação em XQuery 
A cláusula sortby pode ser usada no final de qualquer expressão. Por exemplo: para retornar clientes classificados por nome for $c in /banco/cliente return <cliente> $c/* </cliente> sortby(name)
Pode classificar em vários níveis de aninhamento (por nome-cliente e por número-conta dentro de cada cliente)
	 <banco-1> for $c in /banco/cliente return 	<cliente> 	 $c/* 	 for $d in /banco/depositante[nome-cliente=$c/nome-cliente], 	 $a in /banco/conta[número-conta=$d/número-conta] 	 return <conta> $a/* </conta> sortby(número-conta) 	</cliente> sortby(nome-cliente) </banco-1>
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Funções e outros recursos da XQuery 
Funções definidas pelo usuário com o sistema de tipo da XMLSchema function saldos(xsd:string $c) returns list(xsd:numeric) { for $d in /banco/depositante[nome-cliente = $c], $a in /banco/conta[número-conta=$d/número-conta] return $a/saldo }
Tipos são opcionais para parâmetros de função e valores de retorno
Quantificação universal e existencial em predicados de cláusula where
some $e in caminho satisfies P
every $e in caminho satisfies P
XQuery também admite cláusulas If-then-else
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Interface de programa de aplicação 
Existem duas interfaces de programa de aplicação padrão para dados XML:
SAX (Simple API for XML)
Baseada no modelo de parser, o usuário oferece manipuladores de evento para eventos de parsing
Por exemplo, início de elemento, fim de elemento
Não adequado para aplicações de banco de dados
DOM (Document Object Model)
Dados XML são analisados em uma representação de árvore
Variedade de funções fornecida para atravessar a árvore DOM
Por exemplo: Java DOM API oferece a classe Node com os métodos getParentNode( ), getFirstChild( ), getNextSibling( ) getAttribute( ), getData( ) (for text node) getElementsByTagName( ), …
Também oferece funções para atualizar árvore DOM
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Armazenamento de dados XML 
Dados XML podem ser armazenados em
Depósitos de dados não relacionais
Arquivos puros
Natural para armazenar XML
Mas tem todos os problemas discutidos no Capítulo 1 (sem concorrência, sem recuperação...)
Banco de dados XML
Banco de dados montado especificamente para armazenar dados XML, dando suporte ao modelo DOM e consulta declarativa
Atualmente, nenhum sistema de classe comercial
Bancos de dados relacionais
Os dados precisam ser traduzidos para a forma relacional
Vantagem: sistemas de banco de dados maduros
Desvantagens: sobrecarga de tradução de dados e consultas
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Armazenamento de XML em bancos
de dados relacionais 
Alternativas:
Representação de string
Representação de árvore
Mapa para relações
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Representação de string 
Armazene cada elemento de nível superior como um campo de string de uma tupla em um banco de dados relacional
Use uma única relação para armazenar todos os elementos, ou
Use uma relação separada para cada tipo de elemento de nível superior
Por exemplo: relações conta, cliente, depositante
Cada uma com um atributo com valor de string para armazenar o elemento
Indexação:
Armazene valores de sub-elementos/atributos a serem indexados como campos extras da relação, e monte índices sobre esses campos
Por exemplo: nome-cliente ou número-conta
Oracle 9 admite índices de função, que usam o resultado de uma função como valor de chave.
A função deve retornar o valor do sub-elemento/atributo exigido
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Representação de string (cont.) 
Benefícios: 
Pode armazenar qualquer dado XML, mesmo sem uma DTD
Desde que haja muitos elementos de nível superior em um documento, as strings são pequenas em comparação com o documento inteiro
Permite acesso rápido a elementos individuais.
Desvantagem: Precisa analisar strings para acessar valores dentro dos elementos
A análise é lenta.
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Representação em árvore 
Representação em árvore: modele os dados XML como árvore e armazene usando relações nós(id, tipo, label, valor) filho (id-filho, id-pai)
Cada elemento/atributo recebe um identificador exclusivo
Tipo indica elemento/atributo
Label especifica o nome de tag do elemento/nome do atributo
Valor é o valor de texto do elemento/atributo
A relação filho observa os relacionamentos pai-filho na árvore
Pode acrescentar um atributo extra a filho para registrar a classificação dos filhos
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Representação em árvore (cont.) 
Benefício: Pode armazenar qualquer dado XML, mesmo sem DTD
Desvantagens:
Os dados são desmembrados em muitas partes, aumentando as sobrecargas de espaço
Até mesmo consultas simples exigem uma grande quantidade de junções, o que pode ser lento
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Mapeando dados XML para relações 
Mapeando para relações
Se a DTD do documento for conhecida, pode mapear dados para relações
Uma relação é criada para cada tipo de elemento
Elementos (do tipo #PCDATA), e atributos são mapeados para atributos de relações
Outros detalhes no próximo slide …
Benefícios:
Armazenamento eficiente
Pode traduzir consultas XML para SQL, executar de forma eficiente, e depois traduzir resultados SQL de volta para XML
Desvantagens: precisa conhecer DTD, sobrecargas de tradução ainda presentes
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Mapeando dados XML para relações (cont.) 
Relação criada para cada tipo de elemento contém
Um atributo id para armazenar uma id exclusiva para cada elemento
Um atributo relation correspondente a cada atributo do elemento
Um atributo parent-id para registrar o elemento pai
Assim como na representação em árvore
A informação de posição (iº filho) também pode ser armazenada
Todos os sub-elementos que só ocorrem uma vez podem se tornar atributos de relação
Para sub-elementos com valor de texto, armazene o texto como valor de atributo
Para sub-elementos, pode armazenar id do sub-elemento
Sub-elementos que podem ocorrer várias vezes representadas em uma tabela separada
Semelhante ao tratamento de atributos com múltiplos valores quando converter diagramas ER para tabelas
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Mapeando dados XML para relações (cont.) 
Por exemplo: Para a DTD banco-1 com elementos conta aninhados em elementos cliente, crie relações
cliente(id, parent-id, nome-cliente, rua-cliente, cidade-cliente)
parent-id pode ser descartado aqui, pois o pai é o único elemento raiz
Todos os outros atributos foram sub-elementos do tipo #PCDATA, e ocorrem apenas uma vez
conta (id, parent-id, número-conta, nome-agência, saldo)
parent-id registra sob qual cliente ocorre uma conta
A mesma conta pode ser representada muitas vezes com diferentes pais
Banco de Dados I/Cap�tulo 11.ppt
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Capítulo 11:
 Armazenamento e estrutura de arquivos 
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Armazenamento e estrutura de arquivos 
Visão geral dos meios de armazenamento físicos
Discos magnéticos
RAID
Armazenamento terciário
Acesso ao armazenamento
Organização de arquivos
Organização de registros em arquivos
Armazenamento do dicionário de dados
Estruturas de armazenamento para bancos de dados orientados a objeto
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Classificação dos meios
de armazenamento físicos 
Velocidade com que os dados podem ser acessados
Custo por unidade de dados
Confiabilidade
perda de dados em falta de energia ou falha do sistema
falha física do dispositivo de armazenamento
Pode diferenciar o armazenamento em:
armazenamento volátil: perde o conteúdo quando a emergia é desligada
armazenamento não volátil:
Conteúdo persiste mesmo quando a energia é desligada.
Inclui armazenamento secundário e terciário, além de
memória principal alimentada com bateria.
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Meios de armazenamento físicos 
Cache – forma mais rápida e mais dispendiosa de armazenamento; volátil; controlado pelo hardware do sistema de computador.
Memória principal:
acesso rápido (décimos a centésimos de nanossegundos; 1 nanossegundo= 10–9 segundos)
geralmente muito pequena (ou muito cara) para armazenar o banco de dados inteiro
capacidades de até alguns gigabytes muito usadas atualmente
Capacidades aumentaram e os custos por byte diminuíram constante e rapidamente (fator aproximado de 2 a cada 2 ou 3 anos)
Volátil — conteúdo da memória principal normalmente é perdido se houver falta de energia ou falha do sistema.
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Meios de armazenamento físicos (cont.) 
Memória flash
Dados sobrevivem à falta de energia
Dados podem ser escritos em um local apenas uma vez, mas o local pode ser apagado e escrito novamente
Só pode aceitar uma quantidade limitada de ciclos de escrever/apagar
A memória precisa ser apagada como um banco de memória inteiro
As leituras são tão rápidas quanto a memória principal
Mas as escritas são lentas (alguns microssegundos), e o apagamento é mais lento
O custo por unidade de armazenamento é aproximadamente semelhante à memória principal
Muito usada em dispositivos embutidos, como câmeras digitais
Também conhecida como EEPROM (Electrically Erasable Programmable Read-Only Memory)
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Meios de armazenamento físicos (cont.) 
Disco magnético
Os dados são armazenados em disco giratório, e lidos/escritos magneticamente
O meio principal para armazenamento de dados a longo prazo; normalmente, armazena banco de dados inteiro
Os dados precisam ser movidos do disco para a memória principal para acesso, e escritos para armazenamento
Acesso muito mais lento do que a memória principal (veja mais sobre isso adiante)
acesso direto – possível ler dados no disco em qualquer ordem, diferente da fita magnética
Discos rígidos versus disquetes
Capacidades vão até cerca de 100GB atualmente
Capacidade e custo/byte muito maior do que a memória principal/memória flash
Crescendo constante e rapidamente com as melhorias da tecnologia (fator de 2 a 3 a cada 2 anos)
Sobrevive a faltas de energia e falhas do sistema
A falha de disco pode destruir dados, mas isso e muito raro
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Meios de armazenamento físicos (cont.) 
Armazenamento óptico
Não volátil, os dados são lidos opticamente de um disco giratório usando um laser
CD-ROM (640 MB) e DVD (4,7 a 17 GB) são as formas mais populares
Discos ópticos Write-One, Read-Many (WORM) usados para arquivamento (CD-R e DVD-R)
Múltiplas versões escritas também disponíveis (CD-RW, DVD-RW e DVD-RAM)
Leituras e escritas são mais lentas do que com disco magnético
Sistemas de jukebox, com grandes quantidades de discos removíveis, algumas unidades e um mecanismo para carregamento/descarregamento automático de discos disponíveis para armazenar grandes volumes de dados
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Meios de armazenamento físicos (cont.) 
Armazenamento de fita
Não volátil, usado principalmente para backup (para recuperar-se de falha de disco), e para dados de arquivamento
acesso seqüencial – muito mais lento que o disco
capacidade muito alta (fitas de 40 a 300GB disponíveis)
a fita pode ser removida da unidade  custos de armazenamento muito menores que o disco, mas as unidades são caras
jukeboxes de fita disponíveis para armazenar quantidades imensas de dados
Centenas de terabytes (1 terabyte = 109 bytes) até um petabyte (1 petabyte = 1012 bytes)
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Hierarquia de armazenamento 
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Hierarquia de armazenamento (cont.) 
armazenamento principal: Meio mais rápido, porém volátil (cache, memória principal).
armazenamento secundário: próximo nível na hierarquia, não volátil, tempo de acesso moderadamente rápido
também chamado armazenamento on-line 
Por exemplo: memória flash, discos magnéticos
armazenamento terciário: nível mais baixo na hierarquia, não volátil, tempo de acesso lento
também chamado armazenamento off-line
Por exemplo: fita magnética, armazenamento óptico
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Mecanismo de disco rígido magnético 
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Discos magnéticos 
Cabeça de leitura/escrita
Posicionada muito próxima da superfície da placa (quase tocando nela)
Lê ou escreve informações codificadas magneticamente.
Superfície da placa dividida em trilhas circulares
Mais de 16.000 trilhas por placa nos discos rígidos típicos
Cada trilha é dividida em setores
Um setor é a menor unidade de dados que pode ser lida ou escrita
O tamanho do setor normalmente é de 512 bytes
Setores por trilha típicos: 200 (nas trilhas internas) a 400 (nas trilhas externas)
Parra ler/escrever um setor
braço do disco move-se para posicionar a cabeça na trilha certa
placa gira continuamente, dados são lidos/escritos enquanto o setor passa sob a cabeça
Montagens de cabeça de disco
várias placas de disco em um único eixo (normalmente, de 2 a 4)
uma cabeça por placa, montada em um braço comum.
Cilindro i consiste na iª trilha de todas as placas
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Discos magnéticos (cont.) 
Discos da antiga geração eram suscetíveis a quebras de cabeça
A superfície dos discos da antiga geração tinham coberturas de óxido metálico, que poderiam desintegrar nas quebras de cabeça e danificar todos os dados no disco
Os discos da geração atual são menos suscetíveis a essas falhas desastrosas, embora os setores individuais possam ser adulterados
Controladora de disco – interface entre o sistema de computador e o hardware da unidade de disco.
aceita comandos de alto nível para ler ou escrever um setor
inicia ações como mover o braço do disco para a trilha correta e realmente ler ou escrever os dados
Calcula e acrescenta somas de verificação a cada setor para verificar se os dados são lidos corretamente de volta
Se os dados estiverem adulterados, com uma probabilidade muito alta, a soma de verificação armazenada não combinará com a soma de verificação recalculada
Garante a escrita bem sucedida lendo o setor de volta após sua escrita
Realiza remapeamento de setores defeituosos
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Subsistema de disco 
Vários discos conectados a um sistema de computador por meio de uma controladora
Funcionalidade das controladoras (soma de verificação, remapeamento de setor defeituoso) normalmente executada por discos individuais; reduz o trabalho do controlador
Famílias de padrões de interface de disco
Padrões ATA (AT Adaptor)
Padrões SCSI (Small Computer System Interconnect)
Diversas variantes de cada padrão (diferentes velocidades e capacidades)
Korth • Silberschatz • Sundarshan
*
Sistema de Banco de Dados, 5/E
Medidas de desempenho dos discos 
Tempo de acesso – o tempo gasto desde quando uma solicitação de leitura ou escrita é emitida até quando a transferência é iniciada. Consiste em:
Tempo de busca – tempo gasto para reposicionar o braço sobre a trilha correta.
O tempo de busca médio é 1/2 do tempo de busca no pior caso.
Seria 1/3 se todas as trilhas tivessem o mesmo número de setores, e ignorássemos o tempo para iniciar e parar o movimento

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando