Bancos de Dados Relacionais Relacionando - Erudito FEA-USP

Propaganda
Banco de Dados e
Acesso a Dados
Prof.Dr. Antonio Geraldo da Rocha Vidal
EAD-5881 - Tecnologia de Informática
FEA/USP
Bancos de Dados
Databases
 Virtualmente todos os aplicativos interessantes exigem
um armazenamento de dados estruturado e persistente.





E-Commerce: registrar um pedido, entregar um pedido etc.
Recursos Humanos: dados de pessoal, salários e benefícios.
Vendas: pedidos, produtos, cobranças e pagamentos.
CRM: dados de e sobre clientes.
Pesquisas: dados primários, dados secundários, resultados etc.
 As necessidades de armazenamento de dados variam
de acordo com o tipo de aplicativo:




Processamento de Transações (Transaction Processing - OLTP)
Processamento Analítico (Business Intelligence/Data Warehouse - OLAP
Web Sites e Enterprise Portals
Etc.
Bancos de Dados
Requisitos





Permitir armazenar, consultar e modificar dados
Permitir mover, copiar e transformar dados
Permitir executar backup e recuperação de dados
Garantir a integridade dos dados
Ser “escalável” e estar sempre disponível:



Atender a um grande número de usuários
Armazenar e processar enormes volumes de dados
Possuir alto desempenho com baixo tempo de resposta
 Ser seguro
 Permitir o desenvolvimento de aplicativos
Banco de Dados
Evolução da Tecnologia






Baseado em arquivos
Hierárquico
Rede
Relacional (RDBMS)
Orientado a Objetos
XML (eXtensible Markup Language)
Bancos de Dados Relacionais
Tabelas
 Tabela (relação, entidade)


ID
Uma coleção de dados sobre 1
2
uma coisa específica
Organizada em linhas e colunas
Nome
SobreNome
José
Silva
Maria
Santos
 Coluna (atributo, campo)



Descreve parte de uma entidade (p.ex. Nome)
Tem um tipo de dado (p.ex. integer, character, binary)
Pode ser nulo
 Linha (tupla, registro)


Uma única instância de dados em uma tabela
Cada linha é única
Bancos de Dados Relacionais
Relacionando Dados
 As tabelas podem ser relacionadas através de
dados chave: chave-primária x chaveestrangeira (p.ex. um livro possui um autor)

Chave-primária (primary-key ou PK)




Garante a unicidade de uma linha
Pode ser composta por uma ou mais colunas
Assegura a integridade da entidade
Chave-estrangeira (foreign-key ou FK)



Estabelece um relacionamento lógico entre tabelas
Uma ou mais colunas de uma tabela que coincidem com a
chave-primária de outra tabela
Integridade referencial
Bancos de Dados Relacionais
Relacionando Dados
 O diagrama, esquema ou modelo relacional mostra as
tabelas, colunas, chaves-primárias, chaves-estrangeiras
e relacionamentos de um Banco de Dados.
Livro
IDLivro
IDAutor
Título
Autor
1
∞
N
IDAutor
Nome
Sobrenome
Gênero
Modelo de Dados
Bancos de Dados Relacionais
Relacionando Dados
Tabela Livro
Chave-primária PK
IDLivro
IDAutor
Título
Gênero
1
2
Minha vida como DBA
Autobiografia
2
1
Database Handbook
Referência
PK/FK Relacionamento
Chave-estrangeira FK
IDAutor
Nome
Sobrenome
1
José
Silva
2
Maria
Santos
Tabela Autor
Bancos de Dados Relacionais
Tipos de Relacionamentos
 Um-para-Um (1:1)




1
Registro ISBN
Editora
1
M
Livro
Uma linha na tabela X casa com 0 ou + linhas na tabela Y
Uma Editora publica um ou mais Livros
 Muitos-para-Muitos (M:N)

1
Uma linha da tabela X casa com uma linha da tabela Y
Um Livro tem no máximo e no mínimo um Registro ISBN
 Um-para-Muitos (1:M)

Livro
M
N
Autor
Livro
1 ou + linhas na tabela X casam com 1 ou + linhas na tabela Y
Um Autor escreve um ou mais Livros;
Um Livro é escrito por um ou mais Autores.
Bancos de Dados Relacionais
Relacionamento M:N
 Mais complexo
 Resulta em tabelas muito grandes ( com dados
repetidos)
 Difícil de assegurar a integridade de dados
 Solução: criar uma terceira tabela


A terceira tabela contém a chave-primária das duas
tabelas originais em uma chave composta.
Os dados são repetidos na terceira tabela, mas não
nas duas tabelas originais.
Autor
1
M
Autoria
M
1
Livro
Bancos de Dados Relacionais
Relacionamentos M:N
Os dados são duplicados aqui
Bancos de Dados Relacionais
Normalização/Desnormalização
 Normalização




O processo de dividir poucas tabelas grandes em muitas tabelas
pequenas
Meta: minimizar redundância de dados, maximizar precisão
Melhora o desempenho para atualizações
Desejável em aplicações transacionais
 Desnormalização





O processo de combinar muitas tabelas pequenas em poucas
tabelas grandes.
Meta: melhorar o desempenho
Introduz redundância de dados
Melhora o desempenho para consultas
Desejável em aplicações analíticas e data warehouse
Bancos de Dados Relacionais
Junções
 Uma junção é um modo de combinar dados de
múltiplas tabelas, normalmente utilizando os
relacionamentos entre chaves-primárias e
chaves-estrangeiras.
Tabela Distribuidor
Tabela Produto
Produto
Custo Distrib.
Distrib. Estado Contato
CD
$10
Pontual
Pontual
SP
Maria A.
VHS
$5
Pontual
Anglo
MG
José P.
Game
$8
Anglo
DVD
$25
Anglo
Bancos de Dados Relacionais
Junções
 O resultado de uma junção natural.
Produto Custo
Distrib. Estado Contato
CD
$10
Pontual SP
Maria A.
VHS
$5
Pontual SP
Maria A.
Game
$8
Anglo
MG
José P.
DVD
$25
Anglo
MG
José P.
Bancos de Dados Relacionais
Structured Query Language - SQL
 Linguagem padrão para acesso a um banco de
dados relacional, padronizada pelo American
National Standards Institute (ANSI); SQL-92
 Aberta, mas não realmente:


As funções mais comuns são geralmente as mesmas
entre os diversos produtos existentes.
A maioria dos produtos têm extensões proprietárias.
 Subconjuntos da SQL



Data Definition Language (DDL)
Data Manipulation Language (DML)
Data Control Language (DCL)
Bancos de Dados Relacionais
DDL Exemplos
 Usada para criar e modificar objetos de banco
de dados.
CREATE DATABASE Livraria
CREATE TABLE Livro
(
LivroID
INT IDENTITY(1,1) PRIMARY KEY,
Titulo
VARCHAR(40) NOT NULL,
DatPub
DATE NOT NULL,
Descricao
VARCHAR(80),
Genero
INT NOT NULL
)
Bancos de Dados Relacionais
DML Exemplos
 Selecionar dados a serem consultados.
SELECT * FROM Autor
SELECT AutorID, Nome, SobreNome
FROM Autor
SELECT AutorID, Nome, SobreNome, Telefone
FROM Autor
WHERE Cidade = ‘São Paulo’
SELECT Nome, SobreNome, Telefone
FROM Autor
WHERE AutorID = 249
Bancos de Dados Relacionais
DML Exemplos
 Inserir, atualizar e excluir dados.
INSERT INTO Livro
(Titulo, DatPub, Descricao, Genero)
VALUES
(‘Projeto de Banco de Dados’, GETDATE(),
‘Como construir um Banco de Dados’, 3)
UPDATE Autor
SET Telefone = ‘3091-1234’
WHERE AutorID = 5
DELETE FROM Autor
WHERE AutorID = 5
Bancos de Dados Relacionais
DCL Exemplos
 Configura opções de segurança em objetos de
banco de dados.
GRANT INSERT, UPDATE, DELETE
ON Autor
TO Maria, José
REVOKE CREATE TABLE FROM José
DENY ALL
ON Autor, Livro
TO Salete
Bancos de Dados Relacionais
Views (Visões)





Uma view é uma tabela virtual.
Abstrai as estruturas das tabelas relacionadas.
Abstrai uma consulta possivelmente complexa.
Fornece abstração quanto à segurança.
No MS SQL Server, uma view pode ser:


Indexada
Atualizada (alteração e inserção de dados)
Bancos de Dados Relacionais
Exemplo de Definição de View
CREATE VIEW Pedidos AS
SELECT p.PedidoID, c.Nome
FROM Cliente c
INNER JOIN Pedido p
ON c.ClienteID = p.ClienteID
ORDER BY p.PedidoID
Bancos de Dados Relacionais
Exemplo de Utilização de Views
SELECT *
FROM Pedidos
WHERE Nome = 'Meu Melhor Cliente'
PedidoID
Nome
101
Meu Melhor Cliente
137
Meu Melhor Cliente
…
Bancos de Dados Relacionais
Stored Procedures
(Procedimentos Armazenados)
 Um grupo de comandos SQL que é armazenado
e executado dentro do banco de dados.
 Não faz parte do SQL padronizado.
 Fornece grande desempenho.
 Pode controlar acesso a dados.
 Pode aceitar parâmetros.
 Pode retornar diversos tipos de dados:



Parâmetros de saída
Valores de retorno
Conjuntos de dados de retorno
Bancos de Dados Relacionais
Stored Procedure
CREATE PROCEDURE HistPedidos @ClienteID nchar(5)
AS
SELECT NomeProduto, Total=SUM(Quantidade)
FROM Produto P, [Itens Pedidos] IP,
Pedido P, Cliente C
WHERE C.ClienteID = @ClienteID
AND C.ClienteID = P.ClienteID
AND P.PedidoID = IP.PedidoID
AND IP.ProdutoID = P.ProdutoID
GROUP BY NomeProduto
Bancos de Dados Relacionais
Stored Procedure
exec HistPedidos ‘ACNIELSEN'
NomeProduto
Total
Papel A4
6
Cartucho HP 692C
21
...
...
Bancos de Dados Relacionais
Stored Procedure
 Use o comando RETURN para retornar o status


0 é o padrão no MS SQL Server
Só pode ser numérico
RETURN 1
 Use parâmetros OUTPUT para retornar
resultados
CREATE PROCEDURE MinhaProcedure @ValRetorno INT OUTPUT
...
SELECT @ValRetorno = NomeColuna FROM Tabela
Bancos de Dados Relacionais
Triggers (Gatilhos)
 Como as stored procedures, triggers são conjuntos de
comandos SQL que são armazenados e executados
dentro do banco de dados.
 Porém, não são diretamente chamados por um usuário.
 São executadas quando uma determinada modificação
de dados ocorrer (INSERT, UPDATE ou DELETE)
 Garante a execução de regras de negócio.
 FOR AFTER: a trigger é executada depois que a ação de
atualização especificada for completada.
 FOR INSTEAD OF: a trigger é executada no lugar da
ação de atualização especificada.
Bancos de Dados Relacionais
Transações
 Transação: uma seqüência de comandos SQL
que constitua uma unidade lógica de trabalho.
 Deve aderir às propriedades ACID:




Atômica: todos os comandos são executados com
sucesso ou todos falham.
Consistente: deve deixar os dados em um estado
consistente quando completada.
Isolada: não pode ver as modificações feitas por
outras transações simultâneas.
Durável: deve ser permanente quando completada,
até no caso de queda do sistema.
Bancos de Dados Relacionais
Concorrência
 Níveis de isolamento





Read Uncommitted
Read Committed
Repeatable Read
Serializable
Tradeoffs (concorrência vs. integridade de dados)
 Bloqueios



Asseguram a integridade de transações e a
consistência do banco de dados.
Evitam que os usuários vejam “dados fantasmas”.
Podem resultar em deadlocks (paralisações).
Acesso a Dados
Introdução
 ODBC (Open Database Connectivity)



Interoperabilidade para vários sistemas gerenciadores de banco
de dados (DBMS).
API largamente aceita.
Usa SQL como linguagem de acesso a dados.
 DAO (Data Access Objects)


Interface de programação para bancos de dados JET/ISAM.
Usa automação (ActiveX, OLE automation).
 RDO (Remote Data Objects)


Versão mais sofisticada e otimizada do ODBC.
Desenvolvido especialmente para bancos de dados
cliente/servidor.
Acesso a Dados
Introdução
 OLE DB





Amplo acesso a dados, relacionais e outros.
Construído através da tecnologia COM
Não restrito à SQL para a recuperação de dados
Pode utilizar drives ODBC.
Interface de baixo-nível (C++).
 ADO (ActiveX Data Objects)


Interface simples, orientada a objetos e baseada em
componentes.
Fornece um modelo de programação para o OLE DB
acessível fora do C++.
ADO Tradicional
Estrutura de Acesso
Aplicação
ADO
OLE DB
ODBC
OLE DB
Provider
OLE DB
Provider
ODBC Driver
Database
ODBC Provider
Text
File
Mainframe
Simple Provider
Database
Native Provider
ADO Tradicional
Características
 ADO foi projetado através de um modelo
conectado, firmemente acoplado.

Apropriado para arquiteturas cliente/servidor.
 Principalmente relacional (XML é hierárquico).
 Porém, o projeto dos objetos não foi bem
definido:


Há muitas formas para se fazer a mesma coisa.
Os objetos tentam fazer coisas demais.
 Não foi originalmente projetado para trabalhar
em ambiente distribuído, de múltiplas camadas.
ADO.NET
Metas do ADO.NET
 Projeto mais bem acabado.
 Altamente escalável através de um modelo
desconectado e robusto.
 Rico suporte a XML (hierárquico além do
relacional).
 Acesso de dados sobre HTTP.
 Mantém o modelo de programação do ADO.
 Mantém o ADO disponível via interoperabilidade
.NET vs. COM.
ADO.NET
Provedores
 Combina ADO e OLEDB em uma só camada.
 Cada provedor contém um conjunto de classes
que implementa interfaces comuns.
 Implementações de provimento gerenciável:



ADO: fornece acesso a qualquer fonte de dados
compatível com OLE DB.
SQL Server: fornece desempenho otimizado quando
for usado o MS SQL Server ou o Oracle.
Exchange: recupera e atualiza dados no Microsoft
Exchange.
ADO.NET
Provedores Gerenciáveis
Aplicação
ADO.NET
OLE DB
Provider
SQL Server
Database
SQL Managed Provider
Database
ADO Managed Provider
ADO.NET
Estilos de Acesso a Dados
 Somente-para-frente, somente-leitura:



A aplicação envia uma consulta e depois lê e
processa os resultados.
Cursor tipo “mangueira” ou “duto” de comunicação
Objeto DataReader
 Desconectado:



A aplicação envia uma consulta e depois recupera e
armazena os resultados para processamento.
Minimiza tempo conectado ao banco de dados.
Objeto DataSet
ADO.NET
Ligações de Dados (Data Binding)
 Componente chave de formulários Web.
 Uso flexível e fácil:




Liga ou anexa uma propriedade de um controle a
uma informação em qualquer tipo de fonte de dados.
Fornece controle sobre como os dados vêm e voltam.
Controles simples para exibir um único valor.
Controles complexos para exibir estruturas de dados.
<asp:Label runat=server Text='<%# Pedidos(0).Nome %>'/>
Classes ADO.NET
IDbConnection Interface
 Cria uma conexão única com uma fonte de dados (data
source).
 Implementada pelas classes SqlDbConnection e
OleDbConnection
 Funcionalidade:


Abre e fecha conexões
Inicia transações

A classe IDbTransaction fornece métodos Commit e
Rollback
 Usada em conjunto com objetos IDbCommand e
IDataAdapter.
 Propriedades adicionais, métodos e coleções dependem
do provedor de dados.
Classes ADO.NET
IDbCommand Interface
 Representa um comando a ser enviado para a fonte de dados (data
source).

Normalmente, mas não necessariamente em SQL.
 Implementado pelas classes OleDbCommand e SqlCommand.
 Funcionalidade:







Define o comando a ser executado
Executa o comando
Passa e recupera parâmetros
Cria uma versão compilada do comando
ExecuteReader retorna linhas
ExecuteNonQuery não retorna nada
ExecuteScalar retorna um único valor
 Propriedades adicionais, métodos e coleções dependem do
provedor de dados.
Classes ADO.NET
IDataReader Interface
 Somente para frente (forward-only), somente
leitura (read-only) acesso tipo “mangueira” ou
“duto” a uma série de dados.
 Implementado pelas classes SqlDataReader e
OleDbDataReader.
 Criado através do método ExecuteReader da
classe IDbCommand.
 Operações associadas com o objeto
IDbConnection são desabilitadas até que o
leitor seja fechado.
Classes ADO.NET
DataReader Exemplo
string sConnString = “Provider=SQLOLEDB.1;” +
“User ID=sa;Initial Catalog=MeuBanco;” +
“Data Source=MeuServidor”;
OleDbConnection sqlCon = new OleDbConnection(sConnString);
sqlCon.Open();
string sQueryString = “SELECT NomeCliente FROM Cliente”;
OleDbCommand sqlCmd = new OleDbCommand(sQueryString, sqlCcon);
OleDbDataReader sqlReader = sqlCmd.ExecuteReader();
while (sqlReader.Read()) {
Console.WriteLine(sqlReader.GetString(0));
}
sqlReader.Close();
sqlCon.Close();
Classes ADO.NET
Demonstração DataReader
Classes ADO.NET
System.Data.OleDb Namespace
 Provedor gerenciado para uso com provedores
de dados OLEDB




SQLOLEDB (SQL Server) – usa System.Data.SQL
MSDAORA (Oracle)
JOLT (Jet)
OLEDB para provedores ODBC
 Classes OleDbConnection, OleDbCommand e
OleDbDataReader
 Classes para tratamento de erros
 Classes para pool de conexões
Classes ADO.NET
Demonstração OleDb Data Access
Classes ADO.NET
System.Data.SqlClient Namespace
 Provedor gerenciado nativo para o SQL Server
 Construído com TDS (Tabular Data Stream)
para alto desempenho com o SQL Server
 Classes SqlConnection, SqlCommand e
SqlDataReader.
 Classes para :


Tratamento de erros
Pool de conexões (implicitamente habilitadas por
definição)
 System.Data.SqlTypes fornece classes para
tipos de dados nativos do SQL Server.
Classes ADO.NET
Demonstração Stored Procedure
Classes ADO.NET
System.Data Namespace
 Contém os principais classes do ADO.NET.
 O DataSet desconectado é sua classe central.
 Suporta todos os tipos de aplicativos:

Internet



ASP.NET (C#, VB.NET e JavaScript)
XML
Windows


C#
VB.NET
Classes ADO.NET
System.Data Namespace (cont.)
 Contém classes usadas por ou derivadas de
provedores gerenciados:



IDbConnection
IDbCommand
IDbDataReader
Classes ADO.NET
DataSet








Uma coleção de tabelas
Não possui conhecimento da fonte de dados
Mantém todos os relacionamentos entre as tabelas
Modelo de programação rico (possui objetos para
tabelas, colunas, relacionamentos, e assim por diante)
Lembra-se do estado original e atual dos dados
Pode modificar dinamicamente dados e metadados
O formato para serialização nativo é o XML
Localizada no pacote System.Data
Classes ADO.NET
DataSet
DataSet
DataTable
DataColumn
DataRow
DataRelation
Classes ADO.NET
Demonstração Atualização via DataSet
Classes ADO.NET
DataTable
 Objeto na memória representando uma tabela


Colunas
Linhas
 Esquema definido por coleção de colunas
 A integridade de dados é provida através de
objetos Constraint
 Eventos públicos:


Modificar / excluir linhas (registros)
Modificar colunas
Classes ADO.NET
DataColumn
 Bloco de construção fundamental de um
esquema DataTable (contido na coleção de
colunas).
 Define que tipo de dados pode ser aceito (via
propriedade DataType).
 Outras propriedades importantes incluem
AllowNull, Unique, e ReadOnly.
 Pode conter Constraints (coleção na
DataTable).
 Pode conter Relações (coleção no DataSet).
Classes ADO.NET
DataRow
 Representa dados em uma DataTable (contida
em coleção de linhas).
 Segue o esquema definido por objetos
DataColumns.
 Possui propriedades para determinar o estado
das linhas (por exemplo, nova, alterada,
excluída, e assim por diante).
 Todas as adições e modificações são
atualizadas (“committed”) através do método
AcceptChanges do objeto DataTable.
Classes ADO.NET
DataRelation
 Relaciona duas DataTables via
DataColumns.
 O valor DataType de ambas DataColumns
deve ser idêntico.
 Atualizações podem ser cascateadas para
DataTables filhas.
 As modificações que invalidam a relação não
são permitidas.
Classes ADO.NET
IDataAdapter Interface
 Popula ou envia atualizações para um DataSet
 Implementado por OleDbDataAdapter e
SqlDataAdapter.
 Não conectado.
 Representa uma abordagem assíncrona.
 Um super conjunto de um objeto command.
 Contém quatro objetos de comandos padrão
para: Select, Insert, Update, e Delete.
Classes ADO.NET
DataSet Exemplo
string sConnString = “Persist Security Info=False;” +
“User ID=sa;Initial Catalog=Northwind;” +
“Data Source=MEUSERVIDOR”;
SqlConnection sqlCon = new SqlConnection(sConnString);
sqlCon.Open();
string sqlString = “SELECT NomeEmpresa FROM Cliente”;
SqlDataAdapter sqlDataAdapter = new SqlDataAdapter();
DataSet sqlDataSet = new DataSet();
sqlDataAdapter.SelectCommand = new SqlCommand(sqlString, sqlCon);
sqlDataAdapter.Fill(sqlDataSet);
slqCon.Close();
Classes ADO.NET
Criando um DataSet via Código
 Criação do DataSet
 Definição das tabelas
DataSet dataset = new DataSet();
dataset.DataSetName = “Autores”;
DataTable autor = new DataTable(“Autor”);
DataTable livro = new DataTable(“Livro”);
Classes ADO.NET
Criando um DataSet via Código
 Definição das colunas
 Definição das chaves
DataColumn id = autor.Columns.Add("ID", typeof(Int32));
id.AutoIncrement = true;
autor.PrimaryKey = new DataColumn[] {id};
DataColumn nome
= new autor.Columns.Add("Nome",typeof(String));
DataColumn isbn = livro.Columns.Add("ISBN", typeof(String));
livro.PrimaryKey = new DataColumn[] {isbn};
DataColumn titulo =livro.Columns.Add("Titulo",typeof(String));
DataColumn idautor=livro.Columns.Add(“idAutor”,typeof(Int32));
DataColumn[] foreignkey = new DataColumn[] {idautor};
Classes ADO.NET
Criando um DataSet via Código
 Adição das tabelas no DataSet
dataset.Tables.Add (autor);
dataset.Tables.Add (livro);
Classes ADO.NET
Criando um DataSet via Código
 Adição de dados e gravação do DataSet
DataRow vidal = autor.NewRow();
vidal["Nome"] = “Antonio Geraldo da Rocha Vidal";
autor.Rows.Add(vidal);
DataRelation autorlivro = new DataRelation(“AutorLivro",
autor.PrimaryKey, foreignkey);
dataset.Relations.Add(autorlivro);
DataRow clipper = livro.NewRow();
clipper[“idAutor"] = vidal["ID"];
clipper["ISBN"] = "1000-XYZ";
clipper["Titulo"] = “Clipper 5.0";
livro.Rows.Add(clipper);
dataset.AcceptChanges();
Classes ADO.NET
Demonstração DataSet
Classes ADO.NET
DataSets Tipados
 DataSet tipados:



Derivados da classe DataSet
Usam esquemas XML para gerar novas classes
Tabelas, colunas, etc. compiladas em novas classes
DataSet.Customers.FirstName
 DataSet não tipados:
Não possuem esquema de construção automático
 Tabelas, colunas, etc. são expostas como coleções

DataSet.Tables[“Customers”].Rows[0][“FirstName”]
Classes ADO.NET
Erros e Exceções
 Classe Error


Contém informações sobre um erro ou advertência
retornada por uma fonte de dados.
Criada e administrada pelas classes Errors
 Classe Errors


Contém todos os erros gerados por um “adapter”
Criada pela classe Exception
 Classe Exception


Criada sempre que um erro acontece
Sempre contém pelo menos uma instância de Erro
Classes ADO.NET
Exemplo de Erros e Exceções
try {
DataTable minhaTabela = new DataTable();
minhaTabela.Columns.Add(“minhaColuna”);
minhaTable.Columns.Add(“minhaColuna”);
// Oops!!
}
catch (DataException myException) {
Console.WriteLine ("Mensagem: " + minhaException.Message + "\n" +
“Fonte: " + minhaException.Source + "\n" +
“Rastreamento: " + minhaException.StackTrace + "\n");
}
Classes ADO.NET
Demonstração DataException
Referências
 Introdução ao ADO

http://msdn.microsoft.com/msdnmag/issues/1100/adoplus/
adoplus.asp
 ADO.NET

http://msdn.microsoft.com/library/default.asp?URL=/lib
rary/dotnet/cpguide/cpconaccessingdata.htm
 ADO Guides the Evolution of the Data Species

http://msdn.microsoft.com/library/techart/adoplus.htm
 ADO.NET for the ADO Programmer

http://msdn.microsoft.com/library/techart/adonetdev.htm
 ADO Rocks and Rolls in .NET Applications

http://msdn.microsoft.com/library/welcome/dsmsdn/data0
2222001.htm
 Meditando sobre OLE DB e .NET

http://msdn.microsoft.com/library/welcome/dsmsdn/data0
3222001.htm
Referências
 Reading Data Reader Secrets

http://msdn.microsoft.com/library/welcome/dsmsdn/
data04122001.htm
 Database-like Data Containers

http://msdn.microsoft.com/library/default.asp?URL
=/library/welcome/dsmsdn/data04122001.htm
 ADO

http://msdn.microsoft.com/library/default.asp?URL
=/library/psdk/dasdk/ados4piv.htm
 Universal Data Access

http://www.microsoft.com/data/
 SQL Server

http://www.microsoft.com/sql/default.asp
Bibliografia
 Profissional ADO.NET Programando, Paul
Dickinson et all, Editora Alta Books, Rio de
Janeiro, 2002
 SQL Server 2000 Completo e Total,
Jeffrey Shapiro, Makron Books, São
Paulo, 2002
Apêndice
ADO vs. ADO.NET
 ADO é uma camada de automação mais lenta
sobre OLE DB para uso com Visual Basic, etc.
 ADO.NET fornece acesso direto e rápido a
dados a partir de qualquer linguagem.
 ADO.NET essencialmente fundiu OLE DB e
ADO em uma única camada.
Apêndice
ADO Tradicional vs. ADO.NET
Característica
ADO
ADO.NET
Representação de dados
residentes na memória
Usa RecordSet, que pode
conter apenas uma tabela
Usa o DataSet, que pode
conter uma ou mais tabelas
representadas por
DataTables
Relacionamento entre
múltiplas tabelas
Requer executar JOINs
com tabelas
Realiza através do objeto
DataRelation
Acesso aos dados
Percorre seqüencialmente
as linhas de um RecordSet
Uma o paradigma de
navegação para acesso
não seqüêncial
Acesso disconectado
Fornecido pelo RecordSet
mas tipicamente suporta o
acesso conectado
Comunica-se através de
chamadas padronizadas
com o DataAdapter
Apêndice
ADO Tradicional vs. ADO.NET
Característica
ADO
ADO.NET
Programação
Usa o objeto Connection
para transmitir comandos
Usa programação
baseada em documentos
XML
Compartilhamento de
dados desconectados
entre camadas e
componentes
Usa objetos COM para
transmitir um RecordSet
desconectado
Transmite um DataSet
através de um arquivo
XML
Transmissão de dados
através de Firewalls
Problemática pois os
firewalls são tipicamente
configurados para não
permitir acesso a nível de
sistema
Suportada através de
objetos DataSet que usam
arquivos XML, que podem
passar através firewalls
Escalabilidade
Manutenção de conexões
com bancos de dados
ativas por longos
períodos.
Acesso desconectado a
bancos de dados sem
exigir bloqueios de
dados.
Download