Aplicações com Banco de Dados e Cliente-Servidor Aula #22.1. EBS 211 POO e UML Prof. Luiz Fernando S. Coletta luizfsc@tupa.unesp.br Campus de Tupã
Roteiro Persistência de dados; SGBDs; Exemplo de normalização; Exemplo de mapeamento objeto-relacional. 2
Persistência de dados 3
Persistência de dados Até o momento, os objetos instanciados têm sido guardados na memória RAM. 4
Persistência de dados Até o momento, os objetos instanciados têm sido guardados na memória RAM. O que ocorre se o programa for finalizado? 5
Persistência de dados Até o momento, os objetos instanciados têm sido guardados na memória RAM. O que ocorre se o programa for finalizado? Persistir os dados/objetos significa armazenálos de maneira não volátil. 6
Persistência de dados Até o momento, os objetos instanciados têm sido guardados na memória RAM. O que ocorre se o programa for finalizado? Persistir os dados/objetos significa armazenálos de maneira não volátil. Exemplo: no disco rígido. 7
Persistência de dados Até o momento, os objetos instanciados têm sido guardados na memória RAM. O que ocorre se o programa for finalizado? Persistir os dados/objetos significa armazenálos de maneira não volátil. Exemplo: no disco rígido. Resultado: os dados não serão perdidos, poderão ser recuperados numa próxima execução do sistema! 8
SGBD 9
SGBD Sistema Gerenciador de Banco de Dados 10
SGBD Sistema Gerenciador de Banco de Dados Armazena dados de forma autônoma em relação às aplicações 11
SGBD Sistema Gerenciador de Banco de Dados Armazena dados de forma autônoma em relação às aplicações Objetivo 12
SGBD Sistema Gerenciador de Banco de Dados Armazena dados de forma autônoma em relação às aplicações Objetivo Armazenar, de maneira eficiente e com segurança, grandes volumes de dados; 13
SGBD Sistema Gerenciador de Banco de Dados Armazena dados de forma autônoma em relação às aplicações Objetivo Armazenar, de maneira eficiente e com segurança, grandes volumes de dados; Tornar dados disponíveis para busca e atualização. 14
15
16
Vantagens dos SGBDs: 17
Vantagens dos SGBDs: Independência de dados: Evita que aplicações/usuários se envolvam com manutenção dos dados e detalhes de hardware; 18
Vantagens dos SGBDs: Independência de dados: Evita que aplicações/usuários se envolvam com manutenção dos dados e detalhes de hardware; Integridade de dados: Minimiza redundâncias, aumenta a consistência e a validade dos dados; 19
Vantagens dos SGBDs: Independência de dados: Evita que aplicações/usuários se envolvam com manutenção dos dados e detalhes de hardware; Integridade de dados: Minimiza redundâncias, aumenta a consistência e a validade dos dados; Acesso padronizado e flexível: Uso de linguagem específica para busca, persistência e atualização dos dados; 20
Vantagens dos SGBDs: Independência de dados: Evita que aplicações/usuários se envolvam com manutenção dos dados e detalhes de hardware; Integridade de dados: Minimiza redundâncias, aumenta a consistência e a validade dos dados; Acesso padronizado e flexível: Uso de linguagem específica para busca, persistência e atualização dos dados; Multiusuário e concorrente: Acesso seguro e compartilhado dos dados. 21
Integridade de dados Garantia de dados corretos com relação ao domínio de aplicação 22
Integridade de dados Garantia de dados corretos com relação ao domínio de aplicação Exemplos? 23
Integridade de dados Garantia de dados corretos com relação ao domínio de aplicação Exemplos? Um campo só pode aceitar valores do domínio Sexo: F/M 24
Integridade de dados Garantia de dados corretos com relação ao domínio de aplicação Exemplos? Um campo só pode aceitar valores do domínio Sexo: F/M Regras de negócio O estoque não pode ser negativo 25
Integridade de dados Garantia de dados corretos com relação ao domínio de aplicação Exemplos? Um campo só pode aceitar valores do domínio Sexo: F/M Regras de negócio O estoque não pode ser negativo Unicidade das entidades RG contém valor único (não repete para outra pessoa) 26
Acesso padronizado e flexível Métodos de acesso DDL (Data Definition Language); DML (Data Manipulation Language); 27
Acesso padronizado e flexível Métodos de acesso DDL (Data Definition Language); DML (Data Manipulation Language); 28
Acesso padronizado e flexível Métodos de acesso DDL (Data Definition Language); DML (Data Manipulation Language); Frameworks: Mapeamento Objeto-Relacional (ORM) 29
Exemplos de SGBDs (Relacionais) Microsoft SQL Server: um dos mais conhecidos; 30
Exemplos de SGBDs (Relacionais) Microsoft SQL Server: um dos mais conhecidos; Oracle Server: um dos maiores e mais robustos; 31
Exemplos de SGBDs (Relacionais) Microsoft SQL Server: um dos mais conhecidos; Oracle Server: um dos maiores e mais robustos; MySQL: software livre com código fonte aberto; 32
Exemplos de SGBDs (Relacionais) Microsoft SQL Server: um dos mais conhecidos; Oracle Server: um dos maiores e mais robustos; MySQL: software livre com código fonte aberto; Firebird: possui código fonte aberto e roda tipicamente no Unix; 33
Exemplos de SGBDs (Relacionais) Microsoft SQL Server: um dos mais conhecidos; Oracle Server: um dos maiores e mais robustos; MySQL: software livre com código fonte aberto; Firebird: possui código fonte aberto e roda tipicamente no Unix; Microsoft Access: acompanha o Pacote Office e é pouco robusto, mas amigável; 34
Mas como os dados ficam organizados?! 35
Mas como os dados ficam organizados?! Em tabelas que se relacionam entre si1 1. Norteadas por princípios matemáticos, teoria dos conjuntos e álgebra relacional. 36
Mas como os dados ficam organizados?! Em tabelas que se relacionam entre si1 ID Relação 1. Norteadas por princípios matemáticos, teoria dos conjuntos e álgebra relacional. 37
ID 38
Noções de projeto de banco de dados Normalização: ID_Vendedor Nome_Vendedor Cliente 001 Luciano 003 Juca 001 Luciano 006 Claudia 002 Marcos 008 Henry 003 Rubens 006 Claudia 39
Noções de projeto de banco de dados Normalização: ID_Vendedor Nome_Vendedor Cliente 001 Luciano 003 Juca 001 Luciano 006 Claudia 002 Marcos 008 Henry 003 Rubens 006 Claudia Venda (ID_Vendedor, Nome_Vendedor, {Cliente(ID_Cliente, Nome_Cliente)}) 40
Noções de projeto de banco de dados Normalização: Venda Cliente Vendedor ID_Vendedor Nome_Vendedor ID_Cliente Nome_Cliente ID_Vendedor ID_Cliente 001 Luciano 003 Juca 001 003 002 Marcos 006 Claudia 001 006 003 Rubens 008 Henry 002 008 003 006 Vendedor (ID_Vendedor, Nome_Vendedor) Cliente(ID_Cliente, Nome_Cliente) Venda(ID_Vendedor, ID_Cliente,...) 41
Noções de projeto de banco de dados Normalização: Venda Cliente Vendedor ID_Vendedor Nome_Vendedor ID_Cliente Nome_Cliente ID_Vendedor ID_Cliente 001 Luciano 003 Juca 001 003 002 Marcos 006 Claudia 001 006 003 Rubens 008 Henry 002 008 003 006 Vendedor (ID_Vendedor, Nome_Vendedor) Cliente(ID_Cliente, Nome_Cliente) Venda(ID_Vendedor, ID_Cliente,...) 42
Noções de projeto de banco de dados Normalização: Venda Cliente Vendedor ID_Vendedor Nome_Vendedor ID_Cliente Nome_Cliente ID_Vendedor ID_Cliente 001 Luciano 003 Juca 001 003 002 Marcos 006 Claudia 001 006 003 Rubens 008 Henry 002 008 003 006 Vendedor (ID_Vendedor, Nome_Vendedor) Cliente(ID_Cliente, Nome_Cliente) Venda(ID_Vendedor, ID_Cliente,...) 43
Noções de projeto de banco de dados Normalização: Venda Cliente Vendedor ID_Vendedor Nome_Vendedor ID_Cliente Nome_Cliente ID_Vendedor ID_Cliente 001 Luciano 003 Juca 001 003 002 Marcos 006 Claudia 001 006 003 Rubens 008 Henry 002 008 003 006 Vendedor (ID_Vendedor, Nome_Vendedor) Cliente(ID_Cliente, Nome_Cliente) Venda(ID_Vendedor, ID_Cliente,...) 44
Noções de projeto de banco de dados Normalização: Identifica erros e oferece métodos para corrigir 45
Noções de projeto de banco de dados Normalização: Identifica erros e oferece métodos para corrigir Repetição de informação (consistência); 46
Noções de projeto de banco de dados Normalização: Identifica erros e oferece métodos para corrigir Repetição de informação (consistência); Perda de informação; 47
Noções de projeto de banco de dados Normalização: Identifica erros e oferece métodos para corrigir Repetição de informação (consistência); Perda de informação; Facilita representação do domínio. 48
Exercício extraclasse Normalizar a tabela Aluguel_Carros criando adequadamente novas tabelas com os dados apresentados: Aluguel_Carros ID_Carro Marca_Carro Modelo_Carro ID_Cliente Nome_Cliente Endereco_Cliente Dias_Aluguel Valor_Dia_Aluguel 022 VW Fox 005 Beto Rua Fim dos Tempos, N. 105 7 80,00 006 Honda CR-V 011 Lucíola Avenida Eu Avisei, N. 70 3 145,00 039 Chevrolet Cruze 068 Ezequiel Rua Sabe de Nada Inocente, N. 489 10 125,50 006 Honda CR-V 004 Rita Avenida Eu Quero Café, N. 9 2 145,00 030 VW Up! 005 Beto Rua Fim dos Tempos, N. 105 3 70,50................... 49
Mas como levar objetos para bancos de dados relacionais?! 50
Mas como levar objetos para bancos de dados relacionais?! Mapeamento Objeto-Relacional (ORM) Conversão de objetos em modelos relacionais 51
Mas como levar objetos para bancos de dados relacionais?! Mapeamento Objeto-Relacional (ORM) Conversão de objetos em modelos relacionais Cliente - nome: string - endereco: string Conta - numero: int - saldo: double 52
Mas como levar objetos para bancos de dados relacionais?! Mapeamento Objeto-Relacional (ORM) Conversão de objetos em modelos relacionais Cliente - nome: string - endereco: string Cliente nome varchar(50) endereco varchar(50) tem Conta - numero: int - saldo: double Conta numero integer saldo double 53
Mas como levar objetos para bancos de dados relacionais?! Mapeamento Objeto-Relacional (ORM) Conversão de objetos em modelos relacionais Cliente Cliente nome varchar(50) endereco varchar(50) - nome: string - endereco: string ORM tem Conta - numero: int - saldo: double Conta numero integer saldo double 54
Mas como levar objetos para bancos de dados relacionais?! Mapeamento Objeto-Relacional (ORM) Conversão de objetos em modelos relacionais Na memória No BD (disco rígido) Cliente Cliente nome varchar(50) endereco varchar(50) - nome: string - endereco: string ORM tem Conta - numero: int - saldo: double Conta numero integer saldo double 55
Noções de projeto de camada para Mapeamento Objeto-Relacional (ORM) Diagrama de classes Fornecedor - nome: string - endereco: string - telefones: string[ ] 56
Noções de projeto de camada para Mapeamento Objeto-Relacional (ORM) Diagrama de classes Fornecedor - nome: string - endereco: string - telefones: string[ ] Diagrama Entidade Relacionamento Fornecedor 1 idfornecedor integer nomefornecedor varchar(50) endfornecedor varchar(100) TelefoneFornecedores possui N idtelefone integer idfornecedor integer numtelefone varchar(30) 57
Exercício extraclasse E se fosse necessário armazenar mais um campo (do tipo string) que é a operadora do telefone?! Como ficaria o diagrama de classes?! Como ficaria o diagrama entidade relacionamento?! 58
ADO.Net Fornece um conjunto de ferramentas para acessar dados relacionais Permite projetar uma camada de acesso aos dados, por exemplo, no C#: classes para conexão, CRUD (create, read, update and delete), etc. 59
Leitura recomendada: http://csharp-station.com/tutorial/adodotnet 60
Módulo de localizações Mapa - regiao: string GPS Módulo de trajetos/rotas - latitude: double - longitude: double - altura: double Trajeto Tratores autônomos + Distancia(...):... Irrigação Inteligente Controle de galpões Módulo de informações do clima Regiao Clima + DadosClima(...):... - temperatura: double - chuva: bool - vento: double Sensoriamento por VANTs 61
BD Camada de acesso (Framework, ADO.NET, etc.) Cultura Trator Trajeto - area: double Mapa - região: string + MelhorRota(...):... + Distancia(...):... Controle de tratores autônomos GPS - latitude: double - longitude: double - altura: double 62
Referências DEITEL, P. J. C# - Como Programar. 1 ed. São Paulo: Pearson, 2003. (Link: http://unesp.bv3.digitalpages.com.br/users/publications/97885 4614597) Capítulo 19 (págs 773~807). 63
Próxima aula: Dia 16/11 Sala 8 Material em http://luizcoletta.com/ebs211 Prof. Luiz Fernando S. Coletta luizfsc@tupa.unesp.br Campus de Tupã