You are on page 1of 28

12/3/2011

1
BANCO DE DADOS
RELACIONAL
riko Moreira
Conceitos Bsicos SGBD
Projeto de Banco de Dados
Banco de Dados e Aplicaes
2
12/3/2011
2
Sistema de Gerenciamento de Banco
de Dados
Sistema de Gerenciamento de Banco de Dados
Pacote de software
Facilita o gerenciamento dos dados
Indispensvel para um grande volume de dados
3
SGBD
Vantagens
Independncia dos dados
Acesso eficiente aos dados
Integridade e segurana de dados
Administrao de dados
Concorrncia e recuperao de falhas
Reduo da complexidade de aplicaes
Existe motivos para no se utilizar um SGBD
relacional?
4
12/3/2011
3
Modelo Relacional
Unidade bsica uma relao
Conjunto de registros
Esquema de uma relao
Nome
Nome dos campo (atributo ou coluna)
Tipo de cada campo
Restries de integridade
5
Aluno (id: inteiro, nome: string, usuario: string, sexo: char)
id nome usuario sexo
1 Antonio Matos ant_mat M
2 Cludia Dias ccdias F
3 Fernanda Siqueira fsiqueira F
Nveis de Abtrao
6
12/3/2011
4
Nveis de Abtrao
Esquema fsico
Detalhes de armazenamento
Estrutura de arquivos e ndices
Esquema conceitual (lgico)
Manipulao das relaes da base
Informaes de entidades e relacionamentos
Projeto conceitual
Esquema externo
Vises sobre o modelo conceitual
7
Arquitetura
8
12/3/2011
5
Projeto de Banco de Dados
Etapas
Anlise de requisitos
Quais dados devem ser armazenados
Quais operaes de consulta so mais frequentes
Projeto Conceitual
Dados a armazenar
Restries
Modelo de Entidade-Relacionamento (ER)
Projeto Lgico
Escolha do SGBD
Criao do esquema relacional
9
Refinamento do Projeto
Refinamento do esquema
Analisar a coleo de relaes definidas
Identificar problemas em potencial e refin-los
Normalizao
Refinamento do esquema fsico
Analisar a carga fsica dos dados
Satisfazer critrios de desempenho
Criao de ndices, agrupamento de tabelas ou reprojeto
Sintonia fina (tunning)
Projeto de aplicativos e segurana
10
12/3/2011
6
Projeto Conceitual
Entidade
Objeto do mundo real
Funcionrio
Todos os objetos de uma mesma entidade possuem os
mesmos atributos
Atributo
Caracterstica de um objeto
Possui um domnio com possveis valores
Ex: Nota do funcionrio, de 1 a 10

11
Projeto Conceitual
Chave
Conjunto mnimo de atributos que identificam um valor
especfico de uma entidade
Pode haver mais de uma chave, a qual denominamos
cada uma delas por chave candidata
Chave candidata com a menor quantidade de
atributos
Chave primria
12
12/3/2011
7
Projeto Conceitual
Relacionamento
Associao entre duas ou mais entidades
Funcionrio alocado em um departamento
Pode possuir atributos descritivos
Restringir informaes sobre o relacionamento
Duas entidades podem possuir mais de um
relacionamento
Identificado unicamente pelas entidades participantes,
sem necessidade de envolver os atributos descritivos
13
Projeto Conceitual
Relacionamento
Define um papel que uma instncia de uma entidade
realiza para uma ou mais instncias da outra entidade
A quantidade de elementos que se relacionam entre as
instncias das entidades definem a cardinalidade do
relacionamento
Um para um
Um para muitos
Muitos para muitos
14
12/3/2011
8
Projeto Conceitual
Instncia do relacionamento
Conjunto de valores da entidade envolvida em uma
relao especfica
Um relacionamento pode envolver uma mesma
entidade duas ou mais vezes
Cada entidade do relacionamento exerce um
papel
15
Projeto Conceitual
Relao Terciria
16
12/3/2011
9
Projeto Conceitual
Autorelacionamento e papis
17
Projeto Conceitual
Cardinalidade do relacionamento
Um para um
Um para muitos
Muitos para muitos
18
12/3/2011
10
Projeto Conceitual
Entidade fraca
19
Projeto Conceitual
Hierarquia de classes
20
12/3/2011
11
Projeto Lgico
Entidade
21
Projeto Lgico
Relacionamento
Um para muitos
22
12/3/2011
12
Projeto Lgico
Relacionamento
Muitos para muitos
23
Projeto Lgico
Autorelacionamento
24
12/3/2011
13
Projeto Lgico
Hierarquia de classes
25
Projeto Lgico
Hierarquia de Classes
Um nica tabela
26
12/3/2011
14
Projeto Lgico
Hierarquia de Classes
Relaes distintas para cada entidade especializada
27
Projeto Lgico
Hierarquia de Classes
Relaes distintas para cada entidade
28
12/3/2011
15
Exerccio 1
Utilize a ferramenta DBDesigner para criar o
projeto da base de dados da empresa ACNE SA,
cuja definio est descrita na Lista de Exerccios




Tempo: 15-30 minutos
29
Exerccio 1 Soluo
Perguntas
O que mudaria no projeto se o sistema devesse
armazenar o histrio de lotaes do empregado?
O que poderia mudar no projeto se o empregado
pudesse possuir apenas um endereo?
Qual a diferena entre os relacionamentos lotao e
endereo?

30
12/3/2011
16
Exerccio 2
Utilize a ferramenta DBDesigner para criar o
projeto para o novo mdulo de controle acadmico
de uma universidade, cuja definio est descrita
na Lista de Exerccios
Este exerccio ir compor a nota final
Criar uma pasta com o nome do representante da
equipe e copiar o arquivo do DBDesigner ou
imagem que represente o trabalho
Tempo: 30-45 minutos
31
Exerccio 2 Soluo
Perguntas
Porque a entidade aluno possui uma chave composta e
a entidade professor possui uma chave simples?
Porque aluno e professor se relacionam com pessoa?
A entidade documento est bem representada? Se
no, porqu?
32
12/3/2011
17
JDBC
Uma API que permite o acesso virtual a qualquer
fonte de dados no formato de tabelas a partir de
um porgrama Java
33
Arquitetura JDBC
Aplicao java faz chamada a biblioteca JDBC (interfaces)
JDBC carrega um driver especfico
Driver estabelece a conexo com o SGBD
Vantagens
Podemos ter mais de um driver
Podemos acessar mais de um SGBD
Podemos mudar o SGBD sem ser preciso mudar a aplicao

34
Aplicao JDBC Driver
SGBD
12/3/2011
18
Tipos de Drivers JDBC
Tipo 1: JDBC-ODBC bridge mais ODBC driver
JDBC acessa banco de dados via ponte ODBC
Tipo 2: Driver implementado com API nativa
parcialmente escrita em Java
Chamadas JDBC convertidas em cdigo especfico do
banco de dados
Tipo 3: Driver Java puro usando protocolo JDBC-Net
JDBC usa protocolo de rede independente to BD
Tipo 4: Driver Java puro usando protocolo nativo:
JDBC usa protocolo de rede usado pelo BD
35
Classes e Interfaces Pacote JDBC
36



CallableStatement
<<Interface>>
Statement
<<Interface>>
DriverManager
<<Singleton>>
PreparedStatement
<<Interface>>
Connection
<<Interface>>
ResultSet
<<Interface>>
ResultSetMetaData
<<Interface>>
DatabaseMetaData
<<Interface>>
12/3/2011
19
Passos para Utilizao
Carregar o driver
Definir URL de conexo
Estabelecer conexo
Criar objeto do tipo Statement
Executar instrues SQL
Processar resultados
Fechar conexo
37
Carregar o Driver
Carregamento implcito
Criao de instncia do driver
Registro do driver no DriverManager

Class.forName(oracle.jdbc.driver.OracleDriver");

Carregamento explcito

Driver driver = new
oracle.jdbc.driver.OracleDriver();

DriverManager.registerDriver(driver);

38
12/3/2011
20
Carregar o Driver
Exemplo

Class.forName(com.sybase.jdbc.SybDriver);

Class.forName(oracle.jdbc.driver.OracleDriver);

Class.forName(sun.jdbc.odbc.JdbcOdbcDriver);
39
Definir URL de Conexo
String OracleURL =
jdbc:oracle:thin@servidor.com:1
521:meuBD;

String SybaseURL =
jdbc:sybase:tds:servidor.com:12
34:?SERVICENAME=meuBD;

String OdbcURL =
jdbc:odbc:nomeFonteDados;
40
12/3/2011
21
Estabelecer Conexo
Class.forName(oracle.jdbc.driver.
OracleDriver");

String url =
jdbc:oracle:thin@servidor.com:15
21:meuBD;

Connection con =
DriverManager.getConnection(url);
41
Estabelecer Conexo (Alternativa)
Class.forName(oracle.jdbc.driver.OracleDrive
r");

String url =
jdbc:oracle:thin@servidor.com:1521:meuBD;

String login = aluno;
String senha = 123456;

Connection con =
DriverManager.getConnection(url, login,
senha );
42
12/3/2011
22
Criao de Statements
Statement createStatement()
Retorna um novo objeto Statement

PreparedStatement
prepareStatement(String sql)
Retorna um novo objeto PreparedStatement

CallableStatement prepareCall(String
sql)
Retorna um novo objeto CallableStatement
43
Executar Instrues SQL - Consulta
String queryStr =
"SELECT * FROM Member " +
"WHERE Lower(Name) = 'harry potter'";

Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(queryStr);



Statements so utilizados para executar consultas que no so
recorrentes
O mtodo executeQuery retorna um objeto do tipo ResultSet,
o qual armazena o resultado da consulta
44
12/3/2011
23
Executar Instrues SQL - Alterao
String deleteStr = DELETE FROM Member "
+ "WHERE Lower(Name) = lord
voldemort";

Statement stmt = con.createStatement();
int delnum =
stmt.executeUpdate(deleteStr);

O mtodo executeUpdate usado para alterao de dados:
insert, delete, update, create table, etc.
Este mtodo retorna um inteiro que representa o nmero de
linhas afetadas pela alterao.
45
PreparedStatement
Os objetos do tipo PreparedStatements so
indicados para serem utilizados em consultas
recorrentes
Eles so interpretados somente uma vez, sendo pr-
compilados de incio
Utiliza mtodos especficos para atribuir valor s
variveis presentes na consulta, tais como
setString(i, value)
setInt(i, value)
i representa a i-sima varivel definida na consulta

46
12/3/2011
24
PreparedStatement Consulta
String queryStr = "SELECT * FROM Program
WHERE Name = ? and Cost < ?;

PreparedStatement pstmt =
con.prepareStatement(queryStr);

pstmt.setString(1, Unfogging the
Future);
pstmt.setInt(2, 1000);

ResultSet rs = pstmt.executeQuery();

47
PreparedStatement Atualizao
String deleteStr = DELETE FROM Program
WHERE Name = ? and Cost < ?;

PreparedStatement pstmt =
con.prepareStatement(deleteStr);

pstmt.setString(1, Unfogging the
Future);
pstmt.setInt(2, 1000);

int delnum = pstmt.executeUpdate();
48
12/3/2011
25
ResultSet
Objetos do tipo ResultSet so compostos pelo resultado
de uma consulta especfica
Somente um ResultSet por statement pode ser aberto a
cada vez
Os registros da tabela so recuperados na seqncia em
que so retornadas pelo SGBD
Um objeto do tipo ResultSet mantm uma estrutura de
cursor, que aponta para o registro corrente
O mtodo next() move o apontamento do cursor
para o prximo registro, se houver

49
Mtodos da Interface ResultSet
boolean next()
Altera o apontamento do cursor para o prximo registro
Inicialmente, o ponteiro do cursor se referencia posio de
memria imediatamente anterior ao primeiro registro, se houver
Retorna falso se o prximo registro no existir
void close()
fecha ResultSet
Permite que voce reuse o objeto statement
Chamado automaticamente pela maioria dos mtodos do Statement
50
12/3/2011
26
Mtodos da Interface ResultSet
Type getType(int columnIndex)
Retorna o tipo da coluna posicionada no ndice passado como
parmetro
Colunas so indexadas comeando por 1
Type getType(String columnName)
Retorna o tipo da coluna com o nome passado por parmetro
Menos eficiente
int findColumn(String columnName)
Retorna o ndice de uma determinada coluna dado seu nome

51
String getString(int columnIndex)
boolean getBoolean(int columnIndex)
byte getByte(int columnIndex)
short getShort(int columnIndex)
int getInt(int columnIndex)
long getLong(int columnIndex)
float getFloat(int columnIndex)
double getDouble(int columnIndex)
Date getDate(int columnIndex)
Time getTime(int columnIndex)
Timestamp getTimestamp(int columnIndex)
52
12/3/2011
27
Mapeamento de tipos SQL/Java
SQL type Java Type
CHAR, VARCHAR, LONGVARCHAR String
NUMERIC, DECIMAL java.math.BigDecimal
BIT boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT, DOUBLE double
BINARY, VARBINARY, LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
53
Fechando Conexo
Lembre-se de fechar Connections, Statements,
PreparedStatements e ResultSets

con.close();
stmt.close();
pstmt.close();
rs.close();
54
12/3/2011
28
Exerccio 3
Criao da base de dados ACNE SA (Exerccio 1)
consiserando apenas as tabelas EMPREGADO e
DEPARTAMENTO
Escreva um programa Java que implemente as seguintes
operaes
Inclua um departamento e trs empregados
Realize uma operao de alterao sob a data de nascimento
de um dos empregados
Realize uma consulta que retorne o nome e o departamento de
todos os empregados
Realize uma operao que exclua um dos empregados

Tempo: 45-60 min.
55
Exerccio 4
Criao da base de dados MCA (Exerccio 2) consiserando
apenas as tabelas ALUNO, TURMA e MATRICULA
Escreva um programa Java que implemente as seguintes
operaes
Inclua duas turmas e quatro empregados
Realize uma operao de alterao, aumentando a quantidade
de vagas de uma turma
Realize uma consulta que retorne o nome e a quantidade de
turmas matriculadas para cada aluno
Realize uma operao que exclua uma das matrculas de um
determinado aluno

Tempo: 45-60 min.
56

You might also like