SlideShare uma empresa Scribd logo
1 de 35
Baixar para ler offline
Miguel B. Gonçalves © 2003
SGBD – Oracle 1
SGBD – Oracle
Licenciatura em Engenharia Informática e Computação
Bases de Dados
2003/04
Miguel B. Gonçalves © 2003
SGBD – Oracle 2
Introdução aos SGBD
• Base de Dados
– Colecção de dados que descrevem alguma realidade
• Sistema de Gestão de Bases de Dados
– Pacote de software cujo objectivo é ajudar a manipular grandes
volumes de dados
• Porque não sistemas de ficheiros?
– Pouca eficiência no acesso ao disco
– Identificação ineficiente dos dados
– Problemas de segurança
– Processamento de perguntas
– Controlo de concorrência
– Integridade
(...)
Miguel B. Gonçalves © 2003
SGBD – Oracle 3
Introdução aos SGBD
• Níveis de abstracção
– Esquema externo: vistas
– Esquema conceptual: descrição dos dados
– Esquema físico: armazenamento e acesso
• Independência dos dados
– Os programas encontram-se isolados dos dados
lógica e fisicamente.
Miguel B. Gonçalves © 2003
SGBD – Oracle 4
Outras Funcionalidades
• Perguntas
– Pedidos do utilizador para definição e manipulação
dos dados.
– DDL (data definition language)
• CREATE TABLE
• CREATE INDEX
– DML (data manipulation language)
• SELECT
• INSERT
• UPDATE
(...)
Miguel B. Gonçalves © 2003
SGBD – Oracle 5
Outras Funcionalidades
• Concorrência e Recuperação de Falhas
– Transacção (explícita ou implícita)
• Atomicidade (ou tudo ou nada)
• Consistência (alteração de um valor de uma instância é consistente
com os outros valores)
• Isolamento (as transacções concorrentes são executadas sem que
haja conflitos)
• Durabilidade (se ocorre uma falha após a conclusão de uma
transacção, a base de dados encontra-se válida até ao momento
após a execução da transacção)
– Mecanismos de bloqueio (garantem o isolamento)
• Bloqueio partilhado
• Bloqueio (exclusivo)
– Registo de transacções
(...)
Miguel B. Gonçalves © 2003
SGBD – Oracle 6
Outras Funcionalidades
• Vantagens de um SGBD
– Independência dos dados
– Acesso eficiente aos dados
– Integridade dos dados e segurança
– Administração facilitada
– Concorrência e recuperação de falhas
– Menor tempo de desenvolvimento necessário
Miguel B. Gonçalves © 2003
SGBD – Oracle 7
Cliente/Servidor e Bases de Dados
Distribuídas
• BD distribuída por vários servidores na rede local
– Armazenamento de dados
– Bloqueio de registos
• SGBD em cada cliente
– Integridade dos dados
– Segurança dos dados
– Pesquisa de tabelas
• Aplicações em cada cliente
– Formulários (ecrãs)
– Relatórios
– Perguntas
Miguel B. Gonçalves © 2003
SGBD – Oracle 8
C/S e BD Distribuídas: Modo de
Funcionamento
• O cliente envia o pedido para o(s) servidor(es).
• O servidor envia ficheiros de dados e o estado
de bloqueio para o cliente.
• Há algumas limitações:
– Tráfego de rede considerável.
– Cada cliente executa uma cópia integral do SGBD.
– Integridade dos dados e bloqueio de registos é feito
pelo cliente (impraticável).
Miguel B. Gonçalves © 2003
SGBD – Oracle 9
Arquitectura Cliente/Servidor
• É uma arquitectura versátil, modular e baseada
em mensagens cujos objectivos são:
– Melhorar a usabilidade.
– Aumentar a flexibilidade.
– Facilitar a interoperabilidade.
– Aumentar a escalabilidade.
Miguel B. Gonçalves © 2003
SGBD – Oracle 10
Um Melhoramento...
• Em vez de enviar ficheiros de dados enviar apenas o
resultado da pergunta.
• Cliente (interface para apresentar os resultados)
– Envia perguntas, pela rede, para o servidor.
– Executa quaisquer aplicações que sejam necessárias.
– Mostra os resultados das perguntas ao utilizador.
• Servidor (contém a BD e o SGBD)
– Processa perguntas.
– Devolve os resultados para os clientes.
(...)
Miguel B. Gonçalves © 2003
SGBD – Oracle 11
Um Melhoramento...
• Benefícios
– Cliente e servidor estão fracamente ligados e podem estar em
plataformas diferentes.
– O tráfego de rede é substancialmente reduzido.
– Há uma separação de capacidade de processamento entre o
servidor e o cliente.
• Inconvenientes
– O servidor precisa de ter grande capacidade de processamento:
• Necessita tratar de cópias de segurança (backup), recuperação
(recovery) e segurança.
• Requer ferramentas especializadas como servidores de bases de
dados e API.
• São necessários padrões para distribuição de dados/programas,
protocolos de transferência de dados e suporte dos dados por
múltiplos servidores.
Miguel B. Gonçalves © 2003
SGBD – Oracle 12
Oracle: Alguns Números
• O maior armazém de dados (data warehouse)
conhecido (30 TB de dados) funciona em
Oracle.
• O maior sistema operacional conhecido (5 TB
de dados) funciona em Oracle.
• Uma máquina pode processar 1 milhão de
transacções por minuto.
Miguel B. Gonçalves © 2003
SGBD – Oracle 13
Manipulação Interactiva da BD
Miguel B. Gonçalves © 2003
SGBD – Oracle 14
Criação da Ligação ao SGBD
• Criar uma nova ligação usando o menu de contexto do item
Database do System – Navigator.
• Passo 1
– Connection Name: aulasdb
– Connection Type: Oracle (JDBC)
• Passo 2
– Username: bd03x
– Password: bd03x
• Passo 3
– Host name: oraaulas.fe.up.pt
– SID: AULAS
• Passo 4
– Testar a ligação pressionando Test Connection.
Miguel B. Gonçalves © 2003
SGBD – Oracle 15
Criação de uma Tabela
Miguel B. Gonçalves © 2003
SGBD – Oracle 16
Criação de uma Tabela (1)
Miguel B. Gonçalves © 2003
SGBD – Oracle 17
Criação de uma Tabela (2)
Datatype: NUMBER
Size: 9
Scale: 2
Cannot be NULL
Datatype: NUMBER
Size: 6
Scale: 0
Cannot be NULL
Miguel B. Gonçalves © 2003
SGBD – Oracle 18
Criação de uma Tabela (3)
Miguel B. Gonçalves © 2003
SGBD – Oracle 19
Criação de uma Tabela (4)
Miguel B. Gonçalves © 2003
SGBD – Oracle 20
Criação de uma Tabela
Miguel B. Gonçalves © 2003
SGBD – Oracle 21
O Interpretador de SQL
• Opção SQL Worksheet do menu de contexto da ligação
à BD.
Miguel B. Gonçalves © 2003
SGBD – Oracle 22
Criação das Outras Tabelas
• Criar a tabela CLIENTES recorrendo à seguinte instrução:
CREATE TABLE "CLIENTES"
("CLIENTE" NUMBER(9, 0) NOT NULL,
"TITULO" VARCHAR2(20) NOT NULL,
"NOME" VARCHAR2(200) NOT NULL,
"MORADA" VARCHAR2(200) NOT NULL,
"CODIGOPOSTAL" NUMBER(7, 0) NOT NULL,
"LOCALIDADE" VARCHAR2(50) NOT NULL,
"TELEFONE" NUMBER(9, 0) NOT NULL,
PRIMARY KEY ("CLIENTE") ENABLE)
;
• A definição das tabelas TITULARES e MOVIMENTOS encontra-se em
http://www.fe.up.pt/~miguelg/bd/oracle/tabelas.sql.
Miguel B. Gonçalves © 2003
SGBD – Oracle 23
Inserção de Dados
INSERT INTO contas (conta, tipoconta,
saldo) VALUES (937261, 8, 1497.10)
INSERT INTO clientes (cliente, titulo,
nome, morada, codigopostal, localidade,
telefone) VALUES (765076486, 'Sr.',
'Joaquim Silva', 'Av. dos Aliados, 125',
4000125, 'Porto', 222042132)
INSERT INTO titulares (conta, cliente,
titular) VALUES (937261, 765076486, 1)
Miguel B. Gonçalves © 2003
SGBD – Oracle 24
Inserção e Actualização
INSERT INTO movimentos (movimento, conta,
data, tipomovimento, montante) VALUES
(654327658, 937261, TO_DATE(SYSDATE), 3,
1000)
UPDATE contas SET saldo = saldo + 1000
WHERE conta = 937261
Miguel B. Gonçalves © 2003
SGBD – Oracle 25
Consulta de Dados
SELECT * FROM tabelaA, tabelaB
Ana
2
João
1
nome
id
Lisboa
2
Porto
1
cidade
id
Porto
1
Ana
2
Lisboa
2
Ana
2
Lisboa
2
João
1
Porto
1
João
1
tabelaB.cidade
tabelaB.id
tabelaA.nome
tabelaA.id
tabelaA tabelaB
Miguel B. Gonçalves © 2003
SGBD – Oracle 26
Consulta de Dados
SELECT tabelaA.nome,
tabelaB.cidade FROM
tabelaA, tabelaB WHERE
tabelaA.id = tabelaB.id
Porto
1
Ana
2
Lisboa
2
Ana
2
Lisboa
2
João
1
Porto
1
João
1
tabelaB.cidade
tabelaB.id
tabelaA.nome
tabelaA.id
Lisboa
Ana
Porto
João
tabelaB.cidade
tabelaA.nome
Miguel B. Gonçalves © 2003
SGBD – Oracle 27
Consulta de Dados
SELECT conta, saldo FROM contas WHERE conta =
937261
SELECT c.titulo, c.nome FROM clientes c,
titulares t WHERE t.conta = 937261 AND
c.cliente = t.cliente ORDER BY c.nome
SELECT UNIQUE c.titulo, c.nome FROM clientes
c, titulares t, contas ct WHERE c.cliente =
t.cliente AND ct.saldo > 1000 ORDER BY c.nome
Miguel B. Gonçalves © 2003
SGBD – Oracle 28
Consulta de Dados
SELECT tipoconta, MAX(saldo) FROM
contas GROUP BY tipoconta HAVING
MAX(saldo) > 2000
SELECT t.cliente, COUNT(t.conta) AS
contas FROM titulares t, contas c
WHERE c.saldo > 2000 AND t.conta =
c.conta GROUP BY t.cliente HAVING
COUNT(t.conta) > 1
Miguel B. Gonçalves © 2003
SGBD – Oracle 29
Eliminação de Dados
DELETE FROM movimentos
DELETE FROM movimentos WHERE conta =
937261
Miguel B. Gonçalves © 2003
SGBD – Oracle 30
Vistas
CREATE VIEW ordem AS SELECT conta FROM contas
WHERE tipoconta = 8
Miguel B. Gonçalves © 2003
SGBD – Oracle 31
Índices
• Há vários tipos de índices em Oracle:
– Normal (B-tree)
CREATE INDEX contas_tipo_idx ON contas(tipoconta)
– Bitmap (utilizados em Data Warehousing)
– Particionados
– Baseados em funções
CREATE INDEX clientes_nome_idx ON
clientes(UPPER(nome))
Miguel B. Gonçalves © 2003
SGBD – Oracle 32
Restrições
ALTER TABLE contas ADD CONSTRAINT contas_tipoconta_ck CHECK
(tipoconta > 0 AND tipoconta < 50) ENABLE
Miguel B. Gonçalves © 2003
SGBD – Oracle 33
Gatilhos
CREATE OR REPLACE TRIGGER actualiza_saldo
BEFORE INSERT ON movimentos FOR EACH ROW
UPDATE contas SET saldo = saldo +
:new.montante WHERE conta = :new.conta
CREATE OR REPLACE TRIGGER
actualiza_movimentos BEFORE UPDATE OR
DELETE ON movimentos BEGIN
RAISE_APPLICATION_ERROR (num => -20000,
msg => 'Não pode actualizar nem eliminar
itens da tabela MOVIMENTOS!'); END;
Miguel B. Gonçalves © 2003
SGBD – Oracle 34
Disparo de um gatilho
Miguel B. Gonçalves © 2003
SGBD – Oracle 35
Referências
• Introduction to DBS
http://research.umbc.edu/~gangopad/420/lect1spring99/sld001.htm
• The ACID Criteria for Database Reliability
http://cegt201.bradley.edu/projects/proj2003/equiprd/acid.html
• Client/Server Software Architectures – An Overview
http://www.sei.cmu.edu/str/descriptions/clientserver_body.html
• The Winter TopTen Program
http://www.wintercorp.com/VLDB/2003_TopTen_Survey/TopTenProgram.html
• Oracle9i Database Release 2 Documentation
http://otn.oracle.com/documentation/oracle9i.html

Mais conteúdo relacionado

Semelhante a SGBD - ORACLE - JAVA

Carreira do profissional de dados
Carreira do profissional de dadosCarreira do profissional de dados
Carreira do profissional de dadosEdvaldo Castro
 
Big Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoBig Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoRicardo Longa
 
Bancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagemBancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagemJoão Gabriel Lima
 
2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados
2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados
2019-2 - BD I - Aula 01 C - Introdução a Banco de DadosRodrigo Kiyoshi Saito
 
Material Modelagem - Prof. Marcos Alexandruk
Material Modelagem - Prof. Marcos AlexandrukMaterial Modelagem - Prof. Marcos Alexandruk
Material Modelagem - Prof. Marcos AlexandrukHebert Alquimim
 
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosBanco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosNatanael Simões
 
2019-2 - BD I - Aula 02 - Camadas de aplicação a Banco de Dados e Introd MER
2019-2 - BD I - Aula 02 - Camadas de aplicação a Banco de Dados e Introd MER2019-2 - BD I - Aula 02 - Camadas de aplicação a Banco de Dados e Introd MER
2019-2 - BD I - Aula 02 - Camadas de aplicação a Banco de Dados e Introd MERRodrigo Kiyoshi Saito
 
Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01Osny Pereira Filho
 
Banco de Dados - conceitos, usuários, características
Banco de Dados - conceitos, usuários, característicasBanco de Dados - conceitos, usuários, características
Banco de Dados - conceitos, usuários, característicasFernandaNascimento276697
 
Data center MCSBRC2010-slides.pdf
Data center MCSBRC2010-slides.pdfData center MCSBRC2010-slides.pdf
Data center MCSBRC2010-slides.pdfssuser1198af
 
Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Wagner Bianchi
 
Aula 2 arquitecturas de sgbd, utilizadores, perfis
Aula 2   arquitecturas de sgbd, utilizadores, perfisAula 2   arquitecturas de sgbd, utilizadores, perfis
Aula 2 arquitecturas de sgbd, utilizadores, perfisHélio Martins
 
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...Denodo
 
Funcionalidades de Acesso a Dados no 'Mango'
Funcionalidades de Acesso a Dados no 'Mango'Funcionalidades de Acesso a Dados no 'Mango'
Funcionalidades de Acesso a Dados no 'Mango'C. Augusto Proiete
 
modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4spawally
 

Semelhante a SGBD - ORACLE - JAVA (20)

Carreira do profissional de dados
Carreira do profissional de dadosCarreira do profissional de dados
Carreira do profissional de dados
 
Big Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenhoBig Data como Serviço: da captura à visualização de dados com alto desempenho
Big Data como Serviço: da captura à visualização de dados com alto desempenho
 
Bancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagemBancos de dados no sql – uma nova abordagem
Bancos de dados no sql – uma nova abordagem
 
SQL Oracle
SQL OracleSQL Oracle
SQL Oracle
 
2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados
2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados
2019-2 - BD I - Aula 01 C - Introdução a Banco de Dados
 
Material Modelagem - Prof. Marcos Alexandruk
Material Modelagem - Prof. Marcos AlexandrukMaterial Modelagem - Prof. Marcos Alexandruk
Material Modelagem - Prof. Marcos Alexandruk
 
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosBanco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
 
2019-2 - BD I - Aula 02 - Camadas de aplicação a Banco de Dados e Introd MER
2019-2 - BD I - Aula 02 - Camadas de aplicação a Banco de Dados e Introd MER2019-2 - BD I - Aula 02 - Camadas de aplicação a Banco de Dados e Introd MER
2019-2 - BD I - Aula 02 - Camadas de aplicação a Banco de Dados e Introd MER
 
Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01
 
Banco de Dados - conceitos, usuários, características
Banco de Dados - conceitos, usuários, característicasBanco de Dados - conceitos, usuários, características
Banco de Dados - conceitos, usuários, características
 
Sql Server
Sql ServerSql Server
Sql Server
 
Protheus V12
Protheus V12Protheus V12
Protheus V12
 
Data center MCSBRC2010-slides.pdf
Data center MCSBRC2010-slides.pdfData center MCSBRC2010-slides.pdf
Data center MCSBRC2010-slides.pdf
 
Introdução ao MySQL 5.6
Introdução ao MySQL 5.6Introdução ao MySQL 5.6
Introdução ao MySQL 5.6
 
Aula 2 arquitecturas de sgbd, utilizadores, perfis
Aula 2   arquitecturas de sgbd, utilizadores, perfisAula 2   arquitecturas de sgbd, utilizadores, perfis
Aula 2 arquitecturas de sgbd, utilizadores, perfis
 
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
Caçadores de Mitos: A virtualização dos dados pode sustentar o desempenho com...
 
FLISOL 2017 - SQL Server no Linux
FLISOL 2017 - SQL Server no LinuxFLISOL 2017 - SQL Server no Linux
FLISOL 2017 - SQL Server no Linux
 
Funcionalidades de Acesso a Dados no 'Mango'
Funcionalidades de Acesso a Dados no 'Mango'Funcionalidades de Acesso a Dados no 'Mango'
Funcionalidades de Acesso a Dados no 'Mango'
 
modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4modelagem sistema da informação Unid 4
modelagem sistema da informação Unid 4
 
Bd rel
Bd relBd rel
Bd rel
 

SGBD - ORACLE - JAVA

  • 1. Miguel B. Gonçalves © 2003 SGBD – Oracle 1 SGBD – Oracle Licenciatura em Engenharia Informática e Computação Bases de Dados 2003/04
  • 2. Miguel B. Gonçalves © 2003 SGBD – Oracle 2 Introdução aos SGBD • Base de Dados – Colecção de dados que descrevem alguma realidade • Sistema de Gestão de Bases de Dados – Pacote de software cujo objectivo é ajudar a manipular grandes volumes de dados • Porque não sistemas de ficheiros? – Pouca eficiência no acesso ao disco – Identificação ineficiente dos dados – Problemas de segurança – Processamento de perguntas – Controlo de concorrência – Integridade (...)
  • 3. Miguel B. Gonçalves © 2003 SGBD – Oracle 3 Introdução aos SGBD • Níveis de abstracção – Esquema externo: vistas – Esquema conceptual: descrição dos dados – Esquema físico: armazenamento e acesso • Independência dos dados – Os programas encontram-se isolados dos dados lógica e fisicamente.
  • 4. Miguel B. Gonçalves © 2003 SGBD – Oracle 4 Outras Funcionalidades • Perguntas – Pedidos do utilizador para definição e manipulação dos dados. – DDL (data definition language) • CREATE TABLE • CREATE INDEX – DML (data manipulation language) • SELECT • INSERT • UPDATE (...)
  • 5. Miguel B. Gonçalves © 2003 SGBD – Oracle 5 Outras Funcionalidades • Concorrência e Recuperação de Falhas – Transacção (explícita ou implícita) • Atomicidade (ou tudo ou nada) • Consistência (alteração de um valor de uma instância é consistente com os outros valores) • Isolamento (as transacções concorrentes são executadas sem que haja conflitos) • Durabilidade (se ocorre uma falha após a conclusão de uma transacção, a base de dados encontra-se válida até ao momento após a execução da transacção) – Mecanismos de bloqueio (garantem o isolamento) • Bloqueio partilhado • Bloqueio (exclusivo) – Registo de transacções (...)
  • 6. Miguel B. Gonçalves © 2003 SGBD – Oracle 6 Outras Funcionalidades • Vantagens de um SGBD – Independência dos dados – Acesso eficiente aos dados – Integridade dos dados e segurança – Administração facilitada – Concorrência e recuperação de falhas – Menor tempo de desenvolvimento necessário
  • 7. Miguel B. Gonçalves © 2003 SGBD – Oracle 7 Cliente/Servidor e Bases de Dados Distribuídas • BD distribuída por vários servidores na rede local – Armazenamento de dados – Bloqueio de registos • SGBD em cada cliente – Integridade dos dados – Segurança dos dados – Pesquisa de tabelas • Aplicações em cada cliente – Formulários (ecrãs) – Relatórios – Perguntas
  • 8. Miguel B. Gonçalves © 2003 SGBD – Oracle 8 C/S e BD Distribuídas: Modo de Funcionamento • O cliente envia o pedido para o(s) servidor(es). • O servidor envia ficheiros de dados e o estado de bloqueio para o cliente. • Há algumas limitações: – Tráfego de rede considerável. – Cada cliente executa uma cópia integral do SGBD. – Integridade dos dados e bloqueio de registos é feito pelo cliente (impraticável).
  • 9. Miguel B. Gonçalves © 2003 SGBD – Oracle 9 Arquitectura Cliente/Servidor • É uma arquitectura versátil, modular e baseada em mensagens cujos objectivos são: – Melhorar a usabilidade. – Aumentar a flexibilidade. – Facilitar a interoperabilidade. – Aumentar a escalabilidade.
  • 10. Miguel B. Gonçalves © 2003 SGBD – Oracle 10 Um Melhoramento... • Em vez de enviar ficheiros de dados enviar apenas o resultado da pergunta. • Cliente (interface para apresentar os resultados) – Envia perguntas, pela rede, para o servidor. – Executa quaisquer aplicações que sejam necessárias. – Mostra os resultados das perguntas ao utilizador. • Servidor (contém a BD e o SGBD) – Processa perguntas. – Devolve os resultados para os clientes. (...)
  • 11. Miguel B. Gonçalves © 2003 SGBD – Oracle 11 Um Melhoramento... • Benefícios – Cliente e servidor estão fracamente ligados e podem estar em plataformas diferentes. – O tráfego de rede é substancialmente reduzido. – Há uma separação de capacidade de processamento entre o servidor e o cliente. • Inconvenientes – O servidor precisa de ter grande capacidade de processamento: • Necessita tratar de cópias de segurança (backup), recuperação (recovery) e segurança. • Requer ferramentas especializadas como servidores de bases de dados e API. • São necessários padrões para distribuição de dados/programas, protocolos de transferência de dados e suporte dos dados por múltiplos servidores.
  • 12. Miguel B. Gonçalves © 2003 SGBD – Oracle 12 Oracle: Alguns Números • O maior armazém de dados (data warehouse) conhecido (30 TB de dados) funciona em Oracle. • O maior sistema operacional conhecido (5 TB de dados) funciona em Oracle. • Uma máquina pode processar 1 milhão de transacções por minuto.
  • 13. Miguel B. Gonçalves © 2003 SGBD – Oracle 13 Manipulação Interactiva da BD
  • 14. Miguel B. Gonçalves © 2003 SGBD – Oracle 14 Criação da Ligação ao SGBD • Criar uma nova ligação usando o menu de contexto do item Database do System – Navigator. • Passo 1 – Connection Name: aulasdb – Connection Type: Oracle (JDBC) • Passo 2 – Username: bd03x – Password: bd03x • Passo 3 – Host name: oraaulas.fe.up.pt – SID: AULAS • Passo 4 – Testar a ligação pressionando Test Connection.
  • 15. Miguel B. Gonçalves © 2003 SGBD – Oracle 15 Criação de uma Tabela
  • 16. Miguel B. Gonçalves © 2003 SGBD – Oracle 16 Criação de uma Tabela (1)
  • 17. Miguel B. Gonçalves © 2003 SGBD – Oracle 17 Criação de uma Tabela (2) Datatype: NUMBER Size: 9 Scale: 2 Cannot be NULL Datatype: NUMBER Size: 6 Scale: 0 Cannot be NULL
  • 18. Miguel B. Gonçalves © 2003 SGBD – Oracle 18 Criação de uma Tabela (3)
  • 19. Miguel B. Gonçalves © 2003 SGBD – Oracle 19 Criação de uma Tabela (4)
  • 20. Miguel B. Gonçalves © 2003 SGBD – Oracle 20 Criação de uma Tabela
  • 21. Miguel B. Gonçalves © 2003 SGBD – Oracle 21 O Interpretador de SQL • Opção SQL Worksheet do menu de contexto da ligação à BD.
  • 22. Miguel B. Gonçalves © 2003 SGBD – Oracle 22 Criação das Outras Tabelas • Criar a tabela CLIENTES recorrendo à seguinte instrução: CREATE TABLE "CLIENTES" ("CLIENTE" NUMBER(9, 0) NOT NULL, "TITULO" VARCHAR2(20) NOT NULL, "NOME" VARCHAR2(200) NOT NULL, "MORADA" VARCHAR2(200) NOT NULL, "CODIGOPOSTAL" NUMBER(7, 0) NOT NULL, "LOCALIDADE" VARCHAR2(50) NOT NULL, "TELEFONE" NUMBER(9, 0) NOT NULL, PRIMARY KEY ("CLIENTE") ENABLE) ; • A definição das tabelas TITULARES e MOVIMENTOS encontra-se em http://www.fe.up.pt/~miguelg/bd/oracle/tabelas.sql.
  • 23. Miguel B. Gonçalves © 2003 SGBD – Oracle 23 Inserção de Dados INSERT INTO contas (conta, tipoconta, saldo) VALUES (937261, 8, 1497.10) INSERT INTO clientes (cliente, titulo, nome, morada, codigopostal, localidade, telefone) VALUES (765076486, 'Sr.', 'Joaquim Silva', 'Av. dos Aliados, 125', 4000125, 'Porto', 222042132) INSERT INTO titulares (conta, cliente, titular) VALUES (937261, 765076486, 1)
  • 24. Miguel B. Gonçalves © 2003 SGBD – Oracle 24 Inserção e Actualização INSERT INTO movimentos (movimento, conta, data, tipomovimento, montante) VALUES (654327658, 937261, TO_DATE(SYSDATE), 3, 1000) UPDATE contas SET saldo = saldo + 1000 WHERE conta = 937261
  • 25. Miguel B. Gonçalves © 2003 SGBD – Oracle 25 Consulta de Dados SELECT * FROM tabelaA, tabelaB Ana 2 João 1 nome id Lisboa 2 Porto 1 cidade id Porto 1 Ana 2 Lisboa 2 Ana 2 Lisboa 2 João 1 Porto 1 João 1 tabelaB.cidade tabelaB.id tabelaA.nome tabelaA.id tabelaA tabelaB
  • 26. Miguel B. Gonçalves © 2003 SGBD – Oracle 26 Consulta de Dados SELECT tabelaA.nome, tabelaB.cidade FROM tabelaA, tabelaB WHERE tabelaA.id = tabelaB.id Porto 1 Ana 2 Lisboa 2 Ana 2 Lisboa 2 João 1 Porto 1 João 1 tabelaB.cidade tabelaB.id tabelaA.nome tabelaA.id Lisboa Ana Porto João tabelaB.cidade tabelaA.nome
  • 27. Miguel B. Gonçalves © 2003 SGBD – Oracle 27 Consulta de Dados SELECT conta, saldo FROM contas WHERE conta = 937261 SELECT c.titulo, c.nome FROM clientes c, titulares t WHERE t.conta = 937261 AND c.cliente = t.cliente ORDER BY c.nome SELECT UNIQUE c.titulo, c.nome FROM clientes c, titulares t, contas ct WHERE c.cliente = t.cliente AND ct.saldo > 1000 ORDER BY c.nome
  • 28. Miguel B. Gonçalves © 2003 SGBD – Oracle 28 Consulta de Dados SELECT tipoconta, MAX(saldo) FROM contas GROUP BY tipoconta HAVING MAX(saldo) > 2000 SELECT t.cliente, COUNT(t.conta) AS contas FROM titulares t, contas c WHERE c.saldo > 2000 AND t.conta = c.conta GROUP BY t.cliente HAVING COUNT(t.conta) > 1
  • 29. Miguel B. Gonçalves © 2003 SGBD – Oracle 29 Eliminação de Dados DELETE FROM movimentos DELETE FROM movimentos WHERE conta = 937261
  • 30. Miguel B. Gonçalves © 2003 SGBD – Oracle 30 Vistas CREATE VIEW ordem AS SELECT conta FROM contas WHERE tipoconta = 8
  • 31. Miguel B. Gonçalves © 2003 SGBD – Oracle 31 Índices • Há vários tipos de índices em Oracle: – Normal (B-tree) CREATE INDEX contas_tipo_idx ON contas(tipoconta) – Bitmap (utilizados em Data Warehousing) – Particionados – Baseados em funções CREATE INDEX clientes_nome_idx ON clientes(UPPER(nome))
  • 32. Miguel B. Gonçalves © 2003 SGBD – Oracle 32 Restrições ALTER TABLE contas ADD CONSTRAINT contas_tipoconta_ck CHECK (tipoconta > 0 AND tipoconta < 50) ENABLE
  • 33. Miguel B. Gonçalves © 2003 SGBD – Oracle 33 Gatilhos CREATE OR REPLACE TRIGGER actualiza_saldo BEFORE INSERT ON movimentos FOR EACH ROW UPDATE contas SET saldo = saldo + :new.montante WHERE conta = :new.conta CREATE OR REPLACE TRIGGER actualiza_movimentos BEFORE UPDATE OR DELETE ON movimentos BEGIN RAISE_APPLICATION_ERROR (num => -20000, msg => 'Não pode actualizar nem eliminar itens da tabela MOVIMENTOS!'); END;
  • 34. Miguel B. Gonçalves © 2003 SGBD – Oracle 34 Disparo de um gatilho
  • 35. Miguel B. Gonçalves © 2003 SGBD – Oracle 35 Referências • Introduction to DBS http://research.umbc.edu/~gangopad/420/lect1spring99/sld001.htm • The ACID Criteria for Database Reliability http://cegt201.bradley.edu/projects/proj2003/equiprd/acid.html • Client/Server Software Architectures – An Overview http://www.sei.cmu.edu/str/descriptions/clientserver_body.html • The Winter TopTen Program http://www.wintercorp.com/VLDB/2003_TopTen_Survey/TopTenProgram.html • Oracle9i Database Release 2 Documentation http://otn.oracle.com/documentation/oracle9i.html