SlideShare una empresa de Scribd logo
1 de 89
Banco de Dados
               D6, em homenagem ao Felipe
               Simões e ao Mairon Luz ;-)


               ... E ao Paulo Store o/




         Cleber @ Tavares Junior .com
Banco de Dados


O que são?

Em informática, resumidamente, são coleções de informações armazenadas,
que relacionadas dão valor de negócio à um sistema / empresa.

(Traduzindo em jogos: são o login do jogador e sua senha, seus pontos e
níveis de personagem, seu equipamento e suas informaçõe$ de crédito)

Dito isto, nós NÃO vamos falar sobre banco de dados...

... apenas.




                                             Cleber @ Tavares Junior .com
Banco de Dados


Vamos tentar mostrar toda a estrutura que envolve um Banco de Dados e
seu desenvolvimento.

KISS: Keep It Simple, Student.

Mas existem muito mais coisas escondidas entre seu servidor nas nuvens e
seu cliente / jogo no seu computador, Student...




                                            Cleber @ Tavares Junior .com
Banco de Dados


Primeiro, retomando nossa definição de Banco de Dados, nos primeiríssimos
sistemas informatizados (antes da década de 70), estas informações eram
guardadas no próprio sistema de arquivos do S.O.

E isso gerava uma série de problemas...

A partir daí surgiram os SGBD – Sistemas Gerenciadores de Banco de
Dados. Na década de 80 surgiram os SGBD relacionais, que estão em
domínio até hoje. Ou seja, tabelas. (MySQL, SQLite, PostgreSQL, Oracle$)

Em tempos recentes vem surgindo com cada vez mais força os SGBD
Orientados à Objetos, ou não-relacionais, com o movimento NoSQL (já
vamos falar do SQL), como os MongoDB, CouchDB, e os da Google e Amazon




                                            Cleber @ Tavares Junior .com
Banco de Dados


Em suma, existem várias tecnologias de bancos de dados, cada uma com uma
característica própria (simples e pequenos, simples, simples e escalável,
robustos e caros), alguns gratuitos, outros pagos por diversos valores... O
profissional que deseja trabalhar com isso precisa saber avaliar.

Para lidar com todas estas diferenças, nos bancos de dados relacionais, foi
criada uma linguagem padrão para manipulação das tabelas, a SQL
(Structured Query Language, Linguagem de Consulta Estruturada), pela
IBM no início dos anos 70.

Esta linguagem, assim como todas as outras linguagens de computador,
evolui (estamos no SQL:2003). Infelizmente nem todos os SGBD seguem o
padrão da linguagem à risca.

Isto é uma típica representação esquemática de um SGBD:


                                             Cleber @ Tavares Junior .com
Banco de Dados




E a seguir uma breve apresentação da linguagem SQL. Ela serve para criar as
tabelas, as colunas / campos, inserir os dados, fazer a busca e o relacionamento
entre eles:




                                               Cleber @ Tavares Junior .com
Banco de Dados

SQL, resumo / palavras - chave
Comandos de Criação       Comandos de Controle     Comandos de Transação
(DDL)                     (DCL)                    (DTL)
CREATE TABLE              GRANT                    ROLLBACK
ALTER INDEX               REVOKE
DROP VIEW




                                          Cleber @ Tavares Junior .com
Banco de Dados

SQL, resumo / palavras - chave
Comandos de Manipulação Comandos de Consulta
(DML)                   (DQL)
INSERT                    SELECT
SELECT
UPDATE
DELETE

CRUD!




                                        Cleber @ Tavares Junior .com
Banco de Dados

O comando de consulta SELECT é o mais utilizado, nele temos as cláusulas:

FROM, WHERE, HAVING, GROUP BY, ORDER BY, DISTINCT, JOIN

Os operadores lógicos:

AND, OR, NOT

Os operadores relacionais (muitas características do SQL foram baseadas
na álgebra relacional):

<, >, <=, >=., =, <>, BETWEEN, LIKE, IN

As funções de agregação:

AVG, COUNT, SUM, MAX, MIN



                                             Cleber @ Tavares Junior .com
Banco de Dados

Pequenos exemplos de comandos SQL:

CREATE TABLE Players
(
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR (60) NOT NULL,
    birth DATE,
    phone CHAR (8),
    PRIMARY KEY (id)
)

      Players
      id            name             birth          phone




                                             Cleber @ Tavares Junior .com
Banco de Dados

Pequenos exemplos de comandos SQL:

INSERT INTO Players VALUES (1, ‘Clever Tavares Jr.', 1900-08-19,’’);




Players
id                 name                 birth                 phone
1                  Clever Tavares Jr.   1900-08-19




                                                Cleber @ Tavares Junior .com
Banco de Dados

Pequenos exemplos de comandos SQL:

INSERT INTO Players VALUES (3, ‘', 19/08/1900,26667070);




Players
id                 name                 birth                 phone
1                  Clever Tavares Jr.   1900-08-19
3                                       19/08/1900            26667070

Precisamos de uma maneira de assegurar que valores inválidos não sejam
inseridos! Nossos dados tem que ser consistentes!


                                                Cleber @ Tavares Junior .com
Banco de Dados

Pequenos exemplos de comandos SQL:

SELECT * FROM Players;

Players
id                   name                 birth               phone
1                    Clever Tavares Jr.   1900-08-19

SELECT name AS Nick FROM Player;
Players
Nick
Clever Tavares Jr.




                                                  Cleber @ Tavares Junior .com
Banco de Dados

Pequenos exemplos de comandos SQL:

SELECT name, birth FROM Players WHERE name LIKE ‘Cleber‘;

Players
name              birth


SELECT TOP 5 name, value FROM Points ORDER BY value desc; /*;-)*/

Chega!




                                          Cleber @ Tavares Junior .com
Banco de Dados

Mas não temos apenas nosso banco de dados no processo. Para este ser acessado
remotamente, via web, precisamos de uma tecnologia de servidor, alguma
aplicação / serviço que fique online o tempo todo provendo esta comunicação.

Importante, esta aplicação ou programa, que nós desenvolvemos com linguagens de
servidor como C# / Java / PHP / Python / Ruby, deve ser criada seguindo o
esquema de implementação MVC, Model-View-Controller, Modelo(Banco)-
Visualização(Página, Cliente)-Controlador(Acesso), ou seja, mantendo sua lógica de
implementação independente da camada de visualização e dos dados.

A “camada de visualização”, pode ser uma página no navegador do jogador, ou um
jogo em Flash no navegador do jogador, ou um jogo no computador do jogador. É
ali no cliente que alguns dados devem ser tratados, com tecnologias / linguagens
de cliente (html –eu sei-, css, javascript, em Flash, em Unity…), e outros devem
vir/ir do/para o servidor, mantendo sempre o balanceamento adequado.




                                              Cleber @ Tavares Junior .com
Banco de Dados

Nosso esquema fica assim:




                            Cleber @ Tavares Junior .com
Banco de Dados

Claro que eu posso ter vários clientes:




                                          Cleber @ Tavares Junior .com
Banco de Dados

Estes clientes podem gerar uma carga / volume de acesso muito grande de tal
modo que eu precise fazer o balanceamento / distribuição entre vários servidores




                                             Cleber @ Tavares Junior .com
Banco de Dados

Normalmente a base de dados é compartilhada, mas às vezes não! E é preciso ter
muito cuidado para manter os dados coesos / coerentes / sincronizados!




                                            Cleber @ Tavares Junior .com
Banco de Dados

E às vezes, as máquinas / computadores que são responsáveis pela aplicação
servidora e os SGBD´s nem são as mesmas, ou estão no mesmo lugar físico, e sim
espalhadas pelo mundo onde for mais conveniente.

É o conceito “nas nuvens”. Que auxilia na escabilidade do projeto / jogo.




                                              Cleber @ Tavares Junior .com
Banco de Dados

Tá, então quais tecnologias vamos escolher para nosso exemplo?

1- Um computador rodando Windows 7 comum.
ATENÇÃO! A grande maioria dos servidores é Linux, e boa parte das linguagens
de servidor pode ser usada tanto em um quanto no outro (Java, PHP, Python,
Ruby, MySQL…)

2- O banco de dados MySQL, que é fácil de instalar, configurar e rodar no
Windows e é bastante suportado, tendo uma interface gráfica facilitadora.

3- A linguagem de programação Ruby e o framework de aplicações web Ruby On
Rails, ambos compatíveis com Windows e Linux. Existem muitas páginas famosas
que usam Rails, sendo este bastante famoso (Twitter…) e ele tem uma forte
comunidade. Apesar de não ser muito fácil usar em Windows, pode facilitar o
desenvolvimento com scaffold… e é diferente ;-)

Vamos lá detalhar isso:


                                            Cleber @ Tavares Junior .com
Banco de Dados

1- Sobre o sistema operacional, vale ressaltar aqui que uma vez que você
desenvolva no Windows, o processo de *deploy*, ou colocar em produção /
funcionamento em um servidor com Linux, pode ser trabalhoso. Mas os servidores
Linux são mais baratos (e robustos e seguros…). Fica o aviso. Não veremos isso
aqui hoje.




                                            Cleber @ Tavares Junior .com
Banco de Dados

2- Banco de dados MySQL;

http://www.mysql.com/downloads/mysql/

Gratuito na versão Community, com código fonte se quiser, 30 megas.

Esta é a versão mais nova.

Você pode experimentar
versões mais antigas
(5.0 e 5.1) se tiver
problemas de
compatibilidade




                                            Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados



Podemos testar como acima para saber se tudo está ok.
Podemos fazer tudo via linha de comando (cmd).
Mas também podemos ter um editor visual para ajudar.
Aí entra o SQLyog:

http://www.webyog.com/en/
http://code.google.com/p/sqlyog/downloads/list


Vamos fazer o download da versão Community gratuita e instalar.




                                                 Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados

Temos agora o banco de dados MySQL funcionando com um editor visual no
Windows, vamos ao próximo passo:



3- A linguagem de programação Ruby e o framework de aplicações web Ruby On
Rails, ambos compatíveis com Windows e Linux e também tendo vários editores.



http://rubyinstaller.org/




                                            Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados

Não esquecer de na mesma página baixar o Ruby Development Kit, que permitirá
instalar extensões nativas como o mysql2!

Assim que terminar o download, você deverá extrair os arquivos para o diretório /
pasta C:ruby193devkit, que não existe e precisa ser criado.

Agora, volte ao terminal. Você precisará instalar o DevKit na instalação atual do
Ruby. Para isso, digite os comandos:


 
cd C:Ruby193devkit para ir ao diretório que você acabou de extrair. Execute os
comandos:

ruby dk.rb init
 e depois ruby dk.rb install




                                               Cleber @ Tavares Junior .com
Banco de Dados




Não acabou :-/ Nós ainda precisamos configurar o Ruby para suporte ao MySQL.

Para fazer isso, acesse a página de downloads do MySQL e clique no link MySQL
Connectors. Precisaremos da versão "Connector/C (libmysql)". Na página de
download, escolha a opção sem o instalador. Escolha a versão de 32-bits. Isso é
necessário porque o Ruby é 32-bits e, mesmo que a instalação do MySQL tenha
sido feita em 64-bits, o conector que será usado por ele deve ter a mesma
arquitetura. Extraia os arquivos e copie o arquivo mysql-connector-c-
noinstall-6.0.2-win32/lib/libmysql.dll para o diretório C:Ruby193bin. Isso é
necessário pois DLLs precisam estar no PATH do Windows e, o diretório bin do
Ruby no Windows está lá.

                                              Cleber @ Tavares Junior .com
Banco de Dados




http://www.mysql.com/downloads/connector/




                                            Cleber @ Tavares Junior .com
Banco de Dados


ATENÇÃO! Os passos acima são os mais problemáticos. Se não conseguir rodar seu
servidor, veja solução mais abaixo.




                                            Cleber @ Tavares Junior .com
Banco de Dados

Lembrando que:

“Nada é totalmente fácil ou difícil, esta é a beleza do mundo. Cabe à pessoa julgar
as ferramentas para alcançar seus objetivos.”

A linguagem Ruby junto com o framework para desenvolvimento web Rails tem suas
vantagens em relação ao PHP, incluindo um modelo de MVC (já discutido) embutido.

Com o até aqui feito, temos esta nova linguagem em nossa máquina habilitada para
trabalhar com MySQL. Mas a linguagem não é tudo. Assim como em C# eu tenho o
framework (conjunto de classes) XNA para me facilitar o desenvolvimento de
jogos, em AS3 eu tenho a library / biblioteca Box2D para física, em ambiente
Mobile / Java eu tenho uma série de frameworks (AndEngine, Cactus2D,
XNAndroid) para jogos, ou posso usar a engine (grande conjunto de ferramentas)
Unity em C# ou Boo, eu preciso de um framework para direcionar meu aplicativo /
ranking na web.

Este framework se chama Ruby On Rails (Ruby nos trilhos). Vamos instalá-lo.

                                               Cleber @ Tavares Junior .com
Banco de Dados


O comando acima instala as classes sem a documentação, que é demorada…




                                            Cleber @ Tavares Junior .com
Banco de Dados
Aproveitando que estamos falando sobre isso tudo, não poderia deixar de chamar a
atenção para se verificar se está instalado na máquina também um sistema de
controle de versão. Isto é importantíssimo em qualquer desenvolvimento de
sistemas ou jogos. Sugiro o TortoiseSVN, e aos mais corajosos o Git, que já tem
versão estável para Windows. (TortoiseGIT…) Mas foge ao escopo deste trabalho
falar sobre isso agora.
Vamos atualizar coisas que o rails precisa para criar uma app (bundle…):

gem   update
gem   install rake –v 0.9.2.2
gem   install coffee-script-source -v 1.3.3
gem   install execjs -v 1.4.0
gem   install coffee-script -v 2.2.0
gem   install coffee-rails -v 3.2.2
gem   install jquery-rails -v 2.0.2
gem   install mysql2 -v 0.3.11
gem   install sass –v 3.1.20
gem   install sass-rails -v 3.2.5
gem   install uglifier -v 1.2.6


                                              Cleber @ Tavares Junior .com
Banco de Dados


Alternativa para tanta atualização: http://railsftw.bryanbibat.net/

MUITO BOM!!!




                                              Cleber @ Tavares Junior .com
Banco de Dados

Agora podemos dar o comando para criar nossa aplicação / app rails:

Rails new teste –d mysql

Com este comando (que deve ser dado em um diretório adequado) criamos um
subdiretório chamado teste, onde se cria toda a estrutura (quq já vamos ver) do
Rails, usando um banco de dados mysql (sqlite é o padrão)

Mas espere! E para editar os arquivos? Vamos ficar na linha de comando o tempo
todo? Não… Existem muitos editores (a.k.a. Flash IDE, Flash Develop, Visual
Studio, Eclipse, Mono Develop) que você pode usar para Rails, que reconhecem a
sintaxe do Ruby, desde gratuitos até pagos de diversos valores. Sugestões temos
o Notepad++, Redcar, Scite, gEdit… o próprio Eclipse…

Mas vamos ficar de NetBeans. Mesmo com os problemas dele… (peso e obsolência)



                                              Cleber @ Tavares Junior .com
Banco de Dados

http://netbeans.org/downloads/6.9.1




                                      Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados

Veja como o Rails organiza nossos arquivos
  (lembrando esta pasta foi importada, nenhum arquivo foi
  criado pelo NetBeans)

  Lembra do conceito de MVC para melhorar nossa lógica do
  servidor? Model-View-Controller?

  Repare que temos uma pasta de Models (para os modelos que
  representam justo a base de dados)
  Uma pasta de Views, para as visualizações/layouts
  E uma pasta de Controllers/lógica

  Além disso uma pasta com Helpers/Auxiliares, um enviador
  de email, Confidurações, pasta Pública, Logs de servidor,
  arquivos de teste e documentação (Rails te orienta a fazer
  os testes de lógica de servidor!), bibliotecas e… migrations!


                            Cleber @ Tavares Junior .com
Banco de Dados

As migrations tem a ver com nosso banco de dados, são as mudanças nele ao longo
do desenvolvimento de nossa aplicação. Pense na importância disso. Se seu banco
de dados não corresponder à lógica da sua aplicação (controllers / views), você
corre o risco de tentar exibir algo que não existe (erro na certa) ou de guardar
informações desnecessárias (desperdício). Coerência.

“Uma página é uma exibição de um banco de dados”, controverso… especialmente
em jogos.

As migrations e o models nos “protegem” de ter que lidar com a linguagem SQL
diretamente…

Vamos gerar no nosso banco / página as informações anteriores de Player (o inglês
é quase necessário para programar web / sistemas / rails / páginas…)




                                              Cleber @ Tavares Junior .com
Banco de Dados




rails generate scaffold Player name:string birth:date phone:string




                                               Cleber @ Tavares Junior .com
Banco de Dados

Scaffold = arcabouço = migration (mudança no BD) + Model (representação do BD
no servidor) + Controller (fluxo de telas) + View (exibição), tudo junto.

Vamos colocar nossa aplicação nesta versão: Migrar o Banco de Dados




Opa, fomos negados! Que houve? Não conseguimos acesso aoBanco de Dados.
Vamos editar nosso arquivo de configuração no NetBeans.




                                             Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados

Este é nosso arquivo de configuração do acesso do servidor na base de dados, toda
tecnologia de servidor tem essa configuração. Repare que Rails nos dá
automaticamente 3 tabelas (que devem ser criadas), chamadas por padrão de
nome_development, nome_teste, nome_production, com configurações separadas
para cada uma. Tudo para orientar o bom desenvolvimento!


Vamos configurar a tabela de desenvolvimento:




                                                Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados

Uma vez com isso salvo vamos rodar nossa migração:




Ok. Vamos rodar nosso servidor e ver isso?

Como assim rodar o servidor? Ah, não contei? Quando você faz o código, precisa
de algo para executá-lo. Um Apache Server da vida, vai ler seu código e atender às
requisições de página.

Sorte nossa que o Rails vem com um servidor embutido, o WEBrick, basta chamá-lo
assim: (ah, e podemos depois mudar de servidor se quisermos, inclusive para
Apache)



                                              Cleber @ Tavares Junior .com
Banco de Dados



rails server

Repare que ele está “ouvindo” (atendendo requisições) em http://localhost:3000




                                             Cleber @ Tavares Junior .com
Banco de Dados

Tcharam! Temos uma página rodando, “Hello World” (antes mesmo da migration)




                                            Cleber @ Tavares Junior .com
Banco de Dados

E olhando direto no SQLyog nossa base de dados, vemos que ela já está com a
tabela correta (lembre, um comando para gerar os arquivos e outro para migrar)




                                             Cleber @ Tavares Junior .com
Banco de Dados

Se olharmos no NetBeans nossas pastas e arquivos, vemos que temos já controllers
e views para Player:




                                             Cleber @ Tavares Junior .com
Banco de Dados

Lembrando que os controllers direcionam o fluxo de nossa aplicação, ou seja, que
página mostrar. Sabe uma página “index”? Pois é, olha lá o método de resposta à
ela ali…




E começamos aqui a ver um pouco mais de perto a linguagem Ruby. Não é tão
difícil, é? AS funções/métodos são defs, com end no final (parece Basic). O
@players é um conjunto de players… sim, instâncias de uma classe.

Conhece o RPG Maker? Sabe sua linguagem de programação? RGSS? Ruby Game
Script System! Isso aí! São a mesma.



                                              Cleber @ Tavares Junior .com
Banco de Dados

Repare que eu estou na verdade mapeando um método de acesso à página do
próprio protocolo http, o GET. O GET sem número em um controller lê todos os
objeots correspondentes, o GET/numero retorna o objeto com aquele id, assim
como os métodos POST, PUT e DELETE estão mapeados… isso se chama REST e é
uma técnica muito eficiente.

Em Rails, não saia dos “trilhos”. Mantenha seus nomes corretos e tudo fará sentido
e funcionará automaticamente. Esta é a filosofia do framework.

Vamos “olhar” a view?




                                              Cleber @ Tavares Junior .com
Banco de Dados

Repare como funciona bem como uma camada de visualização, sem interferir nos
dados e podendo ser mudada à vontade. Inclusive traduzida, sem mudar a base.




                                            Cleber @ Tavares Junior .com
Banco de Dados

O que temos aqui é aquela lista de @players sendo mostrada. Repare no “for each”.
Epa, peraí… eu não escrevi código nenhum, será que eu já posso ver isso? Hum…




                                              Cleber @ Tavares Junior .com
Banco de Dados

Uau! Eu tenho uma página com uma listagem dos jogadores e um cadastro!

1- Vamos ver seu código fonte, o html?




                                            Cleber @ Tavares Junior .com
Banco de Dados




         Cleber @ Tavares Junior .com
Banco de Dados

Repare que eu tenho um código “limpo” no cliente, com a importação automática de
alguns javascripts padrões (posso alterar), alguns metanames padrões (também
posso alterar) e a tabela com um link para criar um novo jogador.

É assim que funciona uma tecnologia de servidor. Gera uma página ou informação
dinâmica e “cospe” ela para quem pedir. (perdão pelo termo, culpa do Carlos)

Voltando ao controller, ele responde à requisições html e também… xml! Como
isso? Vamos acessar a mesma coisa, uma listagem dos jogadores, mas em xml:




                                            Cleber @ Tavares Junior .com
Banco de Dados




Repare que ele não deu erro! Apenas mostrou o XML vazio, afinal, ainda não temos
jogadores. Ou recordes, ou imagens, o que seja. Mas se tivéssemos estaria ali, sem
nenhum esforço! Qual a importância disso? Se tivéssemos acessando estas
informações pela página, mostramos o html. Mas se tivéssemos nosso cliente em
Unity ou XNA ou Flash para mostrar a lsita de jogadores, por exemplo, qual a
melhor maneira de fazer isso? XML!




                                             Cleber @ Tavares Junior .com
Banco de Dados

2- Muito bonito, mas a bagaça funciona?

Vamos tentar cadastrar um novo jogador:




                                          Cleber @ Tavares Junior .com
Banco de Dados

2- Muito bonito, mas a bagaça funciona?

Vamos tentar cadastrar um novo jogador:




                                          Cleber @ Tavares Junior .com
Banco de Dados

2- Muito bonito, mas a bagaça funciona?

Vamos tentar cadastrar um novo jogador:




                                          Cleber @ Tavares Junior .com
Banco de Dados

2- Muito bonito, mas a bagaça funciona?

Vamos tentar cadastrar um novo jogador:




Definitivamente funciona.




                                          Cleber @ Tavares Junior .com
Banco de Dados

Mostrando um pouco de testes:




                                Cleber @ Tavares Junior .com
Banco de Dados

Uma vez com o banco populado, como fica o xml:




                                           Cleber @ Tavares Junior .com
Banco de Dados

De um player só:




                            Cleber @ Tavares Junior .com
Banco de Dados

É possível ver o dump da database




                                    Cleber @ Tavares Junior .com
Banco de Dados

Não satisfeito com os testes e a lógica de “negócio”, quer mais facilidade para
criar a aplicação?

Lembra no início que nossa tabela tinha o nome do jogador como campo
obrigatório? Pois é, vamos ao model do player (nosso correspondente da tabela)
resolver isso:

Estava assim:




Ficou assim:



                                               Só isso… vamos à página…

                                              Cleber @ Tavares Junior .com
Banco de Dados

Se eu tentasse cadastrar em branco antes poderia…




                                          Cleber @ Tavares Junior .com
Banco de Dados

Agora não mais…




                            Ah, as mensagens de erro são
                            personalizáveis.

                           Cleber @ Tavares Junior .com
Banco de Dados

Quais validates exitem?

validates :terms_of_service, :acceptance => true
validates :email, :confirmation => true
validates :email_confirmation, :presence => true
validates :legacy_code, :format => { :with => /A[a-zA-Z]+z/, # expressões regulares
  :message => "Only letters allowed" }
validates :name, :length => { :minimum => 2 }
validates :bio, :length => { :maximum => 500 }
validates :password, :length => { :in => 6..20 }
validates :registration_number, :length => { :is => 6 }
validates :email, :uniqueness => true
has_many :posts, :dependent => :destroy
has_one :image




                                                Cleber @ Tavares Junior .com
Banco de Dados

Rails pode trabalhar com sistemas de arquivos, anexos, o que você quiser, de forma
fácil, basta usar a imagninação e a pesquisa ;-)

Usanod os validates corretos você consegue montar os relacionamentos entre os
modelos, e a busca de informações.




                                             Cleber @ Tavares Junior .com
Banco de Dados


Uma ótima dica de documentação, não apenas de Ruby ou Rails, mas de dezenas de
linguagens e frameworks:




                                           Cleber @ Tavares Junior .com
Banco de Dados


Uma ótima dica de documentação, não apenas de Ruby ou Rails, mas de dezenas de
linguagens e frameworks:




                                           Cleber @ Tavares Junior .com

Más contenido relacionado

La actualidad más candente

37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_serverJosé Henrique Sento Sé
 
37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_serverArt IT
 
Banco de dados aula 4
Banco de dados aula 4Banco de dados aula 4
Banco de dados aula 4Ed W. Jr
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQLArley Rodrigues
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29Juliana Nascimento
 
Pesquisando bilhões de documentos em milésimos de segundo
Pesquisando bilhões de documentos em milésimos de segundoPesquisando bilhões de documentos em milésimos de segundo
Pesquisando bilhões de documentos em milésimos de segundoHermano Soares
 
T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012Rodrigo Ribeiro
 

La actualidad más candente (15)

37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Consultas SQL
Consultas SQLConsultas SQL
Consultas SQL
 
37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
Sql - introdução
Sql -  introduçãoSql -  introdução
Sql - introdução
 
Linguagem SQL
Linguagem SQLLinguagem SQL
Linguagem SQL
 
Hands on Labs - SQL Server 2008
Hands on Labs - SQL Server 2008Hands on Labs - SQL Server 2008
Hands on Labs - SQL Server 2008
 
Banco de dados aula 4
Banco de dados aula 4Banco de dados aula 4
Banco de dados aula 4
 
Otimizando a performance com in memory no sql 2016
Otimizando a performance com in memory no sql 2016Otimizando a performance com in memory no sql 2016
Otimizando a performance com in memory no sql 2016
 
Comandos DDL para o MySQL
Comandos DDL para o MySQLComandos DDL para o MySQL
Comandos DDL para o MySQL
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
 
Pesquisando bilhões de documentos em milésimos de segundo
Pesquisando bilhões de documentos em milésimos de segundoPesquisando bilhões de documentos em milésimos de segundo
Pesquisando bilhões de documentos em milésimos de segundo
 
Apostila access 2010
Apostila access 2010Apostila access 2010
Apostila access 2010
 
T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012
 

Destacado

Gestão de Conteúdos com Aplicações instaladas em Servidores
Gestão de Conteúdos com Aplicações instaladas em ServidoresGestão de Conteúdos com Aplicações instaladas em Servidores
Gestão de Conteúdos com Aplicações instaladas em ServidoresAndreia Carvalho
 
Apresentação servidores de aplicação
Apresentação   servidores de aplicaçãoApresentação   servidores de aplicação
Apresentação servidores de aplicaçãoHelen Picoli
 
222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidoresMarco Guimarães
 

Destacado (7)

Ai1415 ad-tp3-g6-a
Ai1415 ad-tp3-g6-aAi1415 ad-tp3-g6-a
Ai1415 ad-tp3-g6-a
 
Gestão de Conteúdos com Aplicações instaladas em Servidores
Gestão de Conteúdos com Aplicações instaladas em ServidoresGestão de Conteúdos com Aplicações instaladas em Servidores
Gestão de Conteúdos com Aplicações instaladas em Servidores
 
Servidores de Aplicações
Servidores de AplicaçõesServidores de Aplicações
Servidores de Aplicações
 
Apresentação servidores de aplicação
Apresentação   servidores de aplicaçãoApresentação   servidores de aplicação
Apresentação servidores de aplicação
 
222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores222097384 aulas-de-rede-tipos-de-servidores
222097384 aulas-de-rede-tipos-de-servidores
 
Aula II - Power Point
Aula II - Power PointAula II - Power Point
Aula II - Power Point
 
Gestão estratégica de TI
Gestão estratégica de TIGestão estratégica de TI
Gestão estratégica de TI
 

Similar a Seven_Palestra_Banco_Dados_Servidores

Introdução ao Sql Server
Introdução ao Sql ServerIntrodução ao Sql Server
Introdução ao Sql Serverintradb
 
Expremendo performance do sql server
Expremendo performance do sql serverExpremendo performance do sql server
Expremendo performance do sql serverFelipe Ferreira
 
Alta disponibilidade com bancos de dados relacionais no Azure
Alta disponibilidade com bancos de dados relacionais no AzureAlta disponibilidade com bancos de dados relacionais no Azure
Alta disponibilidade com bancos de dados relacionais no AzureRubens Guimarães - MTAC MVP
 
Latinoware 2012 - Desenvolvendo Interfaces com Holy
Latinoware 2012 - Desenvolvendo Interfaces com HolyLatinoware 2012 - Desenvolvendo Interfaces com Holy
Latinoware 2012 - Desenvolvendo Interfaces com HolyDextra
 
Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...
Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...
Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...Leandro Guimarães
 
Apostila sql
Apostila sqlApostila sql
Apostila sqlsnetobr
 
Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Mario Sergio
 
Apresentação Final de Banco de Dados
Apresentação Final de Banco de DadosApresentação Final de Banco de Dados
Apresentação Final de Banco de Dadossamlobo
 
Principais processos de criação de um Banco de Dados e comuns erros de aplica...
Principais processos de criação de um Banco de Dados e comuns erros de aplica...Principais processos de criação de um Banco de Dados e comuns erros de aplica...
Principais processos de criação de um Banco de Dados e comuns erros de aplica...Perla Coutinho Barbosa
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureGiovanni Bassi
 
Apostila de sql server 2008
Apostila de sql server 2008Apostila de sql server 2008
Apostila de sql server 2008marcos0512
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2Maurício Linhares
 

Similar a Seven_Palestra_Banco_Dados_Servidores (20)

Introdução ao Sql Server
Introdução ao Sql ServerIntrodução ao Sql Server
Introdução ao Sql Server
 
Apostila ib
Apostila ibApostila ib
Apostila ib
 
Expremendo performance do sql server
Expremendo performance do sql serverExpremendo performance do sql server
Expremendo performance do sql server
 
Banco de Dados no Visual Studio
Banco de Dados no Visual StudioBanco de Dados no Visual Studio
Banco de Dados no Visual Studio
 
Alta disponibilidade com bancos de dados relacionais no Azure
Alta disponibilidade com bancos de dados relacionais no AzureAlta disponibilidade com bancos de dados relacionais no Azure
Alta disponibilidade com bancos de dados relacionais no Azure
 
Latinoware 2012 - Desenvolvendo Interfaces com Holy
Latinoware 2012 - Desenvolvendo Interfaces com HolyLatinoware 2012 - Desenvolvendo Interfaces com Holy
Latinoware 2012 - Desenvolvendo Interfaces com Holy
 
Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...
Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...
Latinoware2012 - Desenvolvendo interfaces WEB com HOLY de forma prática e efi...
 
FLISOL 2017 - SQL Server no Linux
FLISOL 2017 - SQL Server no LinuxFLISOL 2017 - SQL Server no Linux
FLISOL 2017 - SQL Server no Linux
 
Apostila sqlserver65v1a
Apostila sqlserver65v1aApostila sqlserver65v1a
Apostila sqlserver65v1a
 
Banco de dados aula 2
Banco de dados  aula 2Banco de dados  aula 2
Banco de dados aula 2
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
Apostila sql
Apostila sqlApostila sql
Apostila sql
 
Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)Introdução a Banco de Dados (Parte 1)
Introdução a Banco de Dados (Parte 1)
 
Apresentação Final de Banco de Dados
Apresentação Final de Banco de DadosApresentação Final de Banco de Dados
Apresentação Final de Banco de Dados
 
Principais processos de criação de um Banco de Dados e comuns erros de aplica...
Principais processos de criação de um Banco de Dados e comuns erros de aplica...Principais processos de criação de um Banco de Dados e comuns erros de aplica...
Principais processos de criação de um Banco de Dados e comuns erros de aplica...
 
Introdução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows AzureIntrodução à computação na nuvem e Windows Azure
Introdução à computação na nuvem e Windows Azure
 
Apostila de sql server 2008
Apostila de sql server 2008Apostila de sql server 2008
Apostila de sql server 2008
 
Bancos de Dados no Azure - Arquiteturas
Bancos de Dados no Azure - ArquiteturasBancos de Dados no Azure - Arquiteturas
Bancos de Dados no Azure - Arquiteturas
 
IntroduçãO Ao Desenvolvimento Web 2
IntroduçãO Ao Desenvolvimento Web   2IntroduçãO Ao Desenvolvimento Web   2
IntroduçãO Ao Desenvolvimento Web 2
 
DP-900-BR-01.pptx
DP-900-BR-01.pptxDP-900-BR-01.pptx
DP-900-BR-01.pptx
 

Último

Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...azulassessoria9
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfCamillaBrito19
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelGilber Rubim Rangel
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorEdvanirCosta
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...IsabelPereira2010
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?AnabelaGuerreiro7
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfHELENO FAVACHO
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecniCleidianeCarvalhoPer
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãIlda Bicacro
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaHELENO FAVACHO
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Ilda Bicacro
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteVanessaCavalcante37
 

Último (20)

Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
Aula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIXAula sobre o Imperialismo Europeu no século XIX
Aula sobre o Imperialismo Europeu no século XIX
 
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...Considere a seguinte situação fictícia:  Durante uma reunião de equipe em uma...
Considere a seguinte situação fictícia: Durante uma reunião de equipe em uma...
 
o ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdfo ciclo do contato Jorge Ponciano Ribeiro.pdf
o ciclo do contato Jorge Ponciano Ribeiro.pdf
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
Dicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim RangelDicionário de Genealogia, autor Gilber Rubim Rangel
Dicionário de Genealogia, autor Gilber Rubim Rangel
 
INTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de ProfessorINTERVENÇÃO PARÁ - Formação de Professor
INTERVENÇÃO PARÁ - Formação de Professor
 
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
DeClara n.º 75 Abril 2024 - O Jornal digital do Agrupamento de Escolas Clara ...
 
Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?Urso Castanho, Urso Castanho, o que vês aqui?
Urso Castanho, Urso Castanho, o que vês aqui?
 
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdfProjeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
Projeto de Extensão - ENGENHARIA DE SOFTWARE - BACHARELADO.pdf
 
matematica aula didatica prática e tecni
matematica aula didatica prática e tecnimatematica aula didatica prática e tecni
matematica aula didatica prática e tecni
 
Construção (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! SertãConstrução (C)erta - Nós Propomos! Sertã
Construção (C)erta - Nós Propomos! Sertã
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia TecnologiaPROJETO DE EXTENSÃO I - Radiologia Tecnologia
PROJETO DE EXTENSÃO I - Radiologia Tecnologia
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"Nós Propomos! " Pinhais limpos, mundo saudável"
Nós Propomos! " Pinhais limpos, mundo saudável"
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcanteCOMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
COMPETÊNCIA 2 da redação do enem prodção textual professora vanessa cavalcante
 

Seven_Palestra_Banco_Dados_Servidores

  • 1. Banco de Dados D6, em homenagem ao Felipe Simões e ao Mairon Luz ;-) ... E ao Paulo Store o/ Cleber @ Tavares Junior .com
  • 2. Banco de Dados O que são? Em informática, resumidamente, são coleções de informações armazenadas, que relacionadas dão valor de negócio à um sistema / empresa. (Traduzindo em jogos: são o login do jogador e sua senha, seus pontos e níveis de personagem, seu equipamento e suas informaçõe$ de crédito) Dito isto, nós NÃO vamos falar sobre banco de dados... ... apenas. Cleber @ Tavares Junior .com
  • 3. Banco de Dados Vamos tentar mostrar toda a estrutura que envolve um Banco de Dados e seu desenvolvimento. KISS: Keep It Simple, Student. Mas existem muito mais coisas escondidas entre seu servidor nas nuvens e seu cliente / jogo no seu computador, Student... Cleber @ Tavares Junior .com
  • 4. Banco de Dados Primeiro, retomando nossa definição de Banco de Dados, nos primeiríssimos sistemas informatizados (antes da década de 70), estas informações eram guardadas no próprio sistema de arquivos do S.O. E isso gerava uma série de problemas... A partir daí surgiram os SGBD – Sistemas Gerenciadores de Banco de Dados. Na década de 80 surgiram os SGBD relacionais, que estão em domínio até hoje. Ou seja, tabelas. (MySQL, SQLite, PostgreSQL, Oracle$) Em tempos recentes vem surgindo com cada vez mais força os SGBD Orientados à Objetos, ou não-relacionais, com o movimento NoSQL (já vamos falar do SQL), como os MongoDB, CouchDB, e os da Google e Amazon Cleber @ Tavares Junior .com
  • 5. Banco de Dados Em suma, existem várias tecnologias de bancos de dados, cada uma com uma característica própria (simples e pequenos, simples, simples e escalável, robustos e caros), alguns gratuitos, outros pagos por diversos valores... O profissional que deseja trabalhar com isso precisa saber avaliar. Para lidar com todas estas diferenças, nos bancos de dados relacionais, foi criada uma linguagem padrão para manipulação das tabelas, a SQL (Structured Query Language, Linguagem de Consulta Estruturada), pela IBM no início dos anos 70. Esta linguagem, assim como todas as outras linguagens de computador, evolui (estamos no SQL:2003). Infelizmente nem todos os SGBD seguem o padrão da linguagem à risca. Isto é uma típica representação esquemática de um SGBD: Cleber @ Tavares Junior .com
  • 6. Banco de Dados E a seguir uma breve apresentação da linguagem SQL. Ela serve para criar as tabelas, as colunas / campos, inserir os dados, fazer a busca e o relacionamento entre eles: Cleber @ Tavares Junior .com
  • 7. Banco de Dados SQL, resumo / palavras - chave Comandos de Criação Comandos de Controle Comandos de Transação (DDL) (DCL) (DTL) CREATE TABLE GRANT ROLLBACK ALTER INDEX REVOKE DROP VIEW Cleber @ Tavares Junior .com
  • 8. Banco de Dados SQL, resumo / palavras - chave Comandos de Manipulação Comandos de Consulta (DML) (DQL) INSERT SELECT SELECT UPDATE DELETE CRUD! Cleber @ Tavares Junior .com
  • 9. Banco de Dados O comando de consulta SELECT é o mais utilizado, nele temos as cláusulas: FROM, WHERE, HAVING, GROUP BY, ORDER BY, DISTINCT, JOIN Os operadores lógicos: AND, OR, NOT Os operadores relacionais (muitas características do SQL foram baseadas na álgebra relacional): <, >, <=, >=., =, <>, BETWEEN, LIKE, IN As funções de agregação: AVG, COUNT, SUM, MAX, MIN Cleber @ Tavares Junior .com
  • 10. Banco de Dados Pequenos exemplos de comandos SQL: CREATE TABLE Players ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR (60) NOT NULL, birth DATE, phone CHAR (8), PRIMARY KEY (id) ) Players id name birth phone Cleber @ Tavares Junior .com
  • 11. Banco de Dados Pequenos exemplos de comandos SQL: INSERT INTO Players VALUES (1, ‘Clever Tavares Jr.', 1900-08-19,’’); Players id name birth phone 1 Clever Tavares Jr. 1900-08-19 Cleber @ Tavares Junior .com
  • 12. Banco de Dados Pequenos exemplos de comandos SQL: INSERT INTO Players VALUES (3, ‘', 19/08/1900,26667070); Players id name birth phone 1 Clever Tavares Jr. 1900-08-19 3 19/08/1900 26667070 Precisamos de uma maneira de assegurar que valores inválidos não sejam inseridos! Nossos dados tem que ser consistentes! Cleber @ Tavares Junior .com
  • 13. Banco de Dados Pequenos exemplos de comandos SQL: SELECT * FROM Players; Players id name birth phone 1 Clever Tavares Jr. 1900-08-19 SELECT name AS Nick FROM Player; Players Nick Clever Tavares Jr. Cleber @ Tavares Junior .com
  • 14. Banco de Dados Pequenos exemplos de comandos SQL: SELECT name, birth FROM Players WHERE name LIKE ‘Cleber‘; Players name birth SELECT TOP 5 name, value FROM Points ORDER BY value desc; /*;-)*/ Chega! Cleber @ Tavares Junior .com
  • 15. Banco de Dados Mas não temos apenas nosso banco de dados no processo. Para este ser acessado remotamente, via web, precisamos de uma tecnologia de servidor, alguma aplicação / serviço que fique online o tempo todo provendo esta comunicação. Importante, esta aplicação ou programa, que nós desenvolvemos com linguagens de servidor como C# / Java / PHP / Python / Ruby, deve ser criada seguindo o esquema de implementação MVC, Model-View-Controller, Modelo(Banco)- Visualização(Página, Cliente)-Controlador(Acesso), ou seja, mantendo sua lógica de implementação independente da camada de visualização e dos dados. A “camada de visualização”, pode ser uma página no navegador do jogador, ou um jogo em Flash no navegador do jogador, ou um jogo no computador do jogador. É ali no cliente que alguns dados devem ser tratados, com tecnologias / linguagens de cliente (html –eu sei-, css, javascript, em Flash, em Unity…), e outros devem vir/ir do/para o servidor, mantendo sempre o balanceamento adequado. Cleber @ Tavares Junior .com
  • 16. Banco de Dados Nosso esquema fica assim: Cleber @ Tavares Junior .com
  • 17. Banco de Dados Claro que eu posso ter vários clientes: Cleber @ Tavares Junior .com
  • 18. Banco de Dados Estes clientes podem gerar uma carga / volume de acesso muito grande de tal modo que eu precise fazer o balanceamento / distribuição entre vários servidores Cleber @ Tavares Junior .com
  • 19. Banco de Dados Normalmente a base de dados é compartilhada, mas às vezes não! E é preciso ter muito cuidado para manter os dados coesos / coerentes / sincronizados! Cleber @ Tavares Junior .com
  • 20. Banco de Dados E às vezes, as máquinas / computadores que são responsáveis pela aplicação servidora e os SGBD´s nem são as mesmas, ou estão no mesmo lugar físico, e sim espalhadas pelo mundo onde for mais conveniente. É o conceito “nas nuvens”. Que auxilia na escabilidade do projeto / jogo. Cleber @ Tavares Junior .com
  • 21. Banco de Dados Tá, então quais tecnologias vamos escolher para nosso exemplo? 1- Um computador rodando Windows 7 comum. ATENÇÃO! A grande maioria dos servidores é Linux, e boa parte das linguagens de servidor pode ser usada tanto em um quanto no outro (Java, PHP, Python, Ruby, MySQL…) 2- O banco de dados MySQL, que é fácil de instalar, configurar e rodar no Windows e é bastante suportado, tendo uma interface gráfica facilitadora. 3- A linguagem de programação Ruby e o framework de aplicações web Ruby On Rails, ambos compatíveis com Windows e Linux. Existem muitas páginas famosas que usam Rails, sendo este bastante famoso (Twitter…) e ele tem uma forte comunidade. Apesar de não ser muito fácil usar em Windows, pode facilitar o desenvolvimento com scaffold… e é diferente ;-) Vamos lá detalhar isso: Cleber @ Tavares Junior .com
  • 22. Banco de Dados 1- Sobre o sistema operacional, vale ressaltar aqui que uma vez que você desenvolva no Windows, o processo de *deploy*, ou colocar em produção / funcionamento em um servidor com Linux, pode ser trabalhoso. Mas os servidores Linux são mais baratos (e robustos e seguros…). Fica o aviso. Não veremos isso aqui hoje. Cleber @ Tavares Junior .com
  • 23. Banco de Dados 2- Banco de dados MySQL; http://www.mysql.com/downloads/mysql/ Gratuito na versão Community, com código fonte se quiser, 30 megas. Esta é a versão mais nova. Você pode experimentar versões mais antigas (5.0 e 5.1) se tiver problemas de compatibilidade Cleber @ Tavares Junior .com
  • 24. Banco de Dados Cleber @ Tavares Junior .com
  • 25. Banco de Dados Cleber @ Tavares Junior .com
  • 26. Banco de Dados Cleber @ Tavares Junior .com
  • 27. Banco de Dados Cleber @ Tavares Junior .com
  • 28. Banco de Dados Cleber @ Tavares Junior .com
  • 29. Banco de Dados Cleber @ Tavares Junior .com
  • 30. Banco de Dados Cleber @ Tavares Junior .com
  • 31. Banco de Dados Podemos testar como acima para saber se tudo está ok. Podemos fazer tudo via linha de comando (cmd). Mas também podemos ter um editor visual para ajudar. Aí entra o SQLyog: http://www.webyog.com/en/ http://code.google.com/p/sqlyog/downloads/list Vamos fazer o download da versão Community gratuita e instalar. Cleber @ Tavares Junior .com
  • 32. Banco de Dados Cleber @ Tavares Junior .com
  • 33. Banco de Dados Cleber @ Tavares Junior .com
  • 34. Banco de Dados Cleber @ Tavares Junior .com
  • 35. Banco de Dados Cleber @ Tavares Junior .com
  • 36. Banco de Dados Cleber @ Tavares Junior .com
  • 37. Banco de Dados Cleber @ Tavares Junior .com
  • 38. Banco de Dados Temos agora o banco de dados MySQL funcionando com um editor visual no Windows, vamos ao próximo passo: 3- A linguagem de programação Ruby e o framework de aplicações web Ruby On Rails, ambos compatíveis com Windows e Linux e também tendo vários editores. http://rubyinstaller.org/ Cleber @ Tavares Junior .com
  • 39. Banco de Dados Cleber @ Tavares Junior .com
  • 40. Banco de Dados Cleber @ Tavares Junior .com
  • 41. Banco de Dados Cleber @ Tavares Junior .com
  • 42. Banco de Dados Não esquecer de na mesma página baixar o Ruby Development Kit, que permitirá instalar extensões nativas como o mysql2! Assim que terminar o download, você deverá extrair os arquivos para o diretório / pasta C:ruby193devkit, que não existe e precisa ser criado. Agora, volte ao terminal. Você precisará instalar o DevKit na instalação atual do Ruby. Para isso, digite os comandos:   cd C:Ruby193devkit para ir ao diretório que você acabou de extrair. Execute os comandos: ruby dk.rb init  e depois ruby dk.rb install Cleber @ Tavares Junior .com
  • 43. Banco de Dados Não acabou :-/ Nós ainda precisamos configurar o Ruby para suporte ao MySQL. Para fazer isso, acesse a página de downloads do MySQL e clique no link MySQL Connectors. Precisaremos da versão "Connector/C (libmysql)". Na página de download, escolha a opção sem o instalador. Escolha a versão de 32-bits. Isso é necessário porque o Ruby é 32-bits e, mesmo que a instalação do MySQL tenha sido feita em 64-bits, o conector que será usado por ele deve ter a mesma arquitetura. Extraia os arquivos e copie o arquivo mysql-connector-c- noinstall-6.0.2-win32/lib/libmysql.dll para o diretório C:Ruby193bin. Isso é necessário pois DLLs precisam estar no PATH do Windows e, o diretório bin do Ruby no Windows está lá. Cleber @ Tavares Junior .com
  • 45. Banco de Dados ATENÇÃO! Os passos acima são os mais problemáticos. Se não conseguir rodar seu servidor, veja solução mais abaixo. Cleber @ Tavares Junior .com
  • 46. Banco de Dados Lembrando que: “Nada é totalmente fácil ou difícil, esta é a beleza do mundo. Cabe à pessoa julgar as ferramentas para alcançar seus objetivos.” A linguagem Ruby junto com o framework para desenvolvimento web Rails tem suas vantagens em relação ao PHP, incluindo um modelo de MVC (já discutido) embutido. Com o até aqui feito, temos esta nova linguagem em nossa máquina habilitada para trabalhar com MySQL. Mas a linguagem não é tudo. Assim como em C# eu tenho o framework (conjunto de classes) XNA para me facilitar o desenvolvimento de jogos, em AS3 eu tenho a library / biblioteca Box2D para física, em ambiente Mobile / Java eu tenho uma série de frameworks (AndEngine, Cactus2D, XNAndroid) para jogos, ou posso usar a engine (grande conjunto de ferramentas) Unity em C# ou Boo, eu preciso de um framework para direcionar meu aplicativo / ranking na web. Este framework se chama Ruby On Rails (Ruby nos trilhos). Vamos instalá-lo. Cleber @ Tavares Junior .com
  • 47. Banco de Dados O comando acima instala as classes sem a documentação, que é demorada… Cleber @ Tavares Junior .com
  • 48. Banco de Dados Aproveitando que estamos falando sobre isso tudo, não poderia deixar de chamar a atenção para se verificar se está instalado na máquina também um sistema de controle de versão. Isto é importantíssimo em qualquer desenvolvimento de sistemas ou jogos. Sugiro o TortoiseSVN, e aos mais corajosos o Git, que já tem versão estável para Windows. (TortoiseGIT…) Mas foge ao escopo deste trabalho falar sobre isso agora. Vamos atualizar coisas que o rails precisa para criar uma app (bundle…): gem update gem install rake –v 0.9.2.2 gem install coffee-script-source -v 1.3.3 gem install execjs -v 1.4.0 gem install coffee-script -v 2.2.0 gem install coffee-rails -v 3.2.2 gem install jquery-rails -v 2.0.2 gem install mysql2 -v 0.3.11 gem install sass –v 3.1.20 gem install sass-rails -v 3.2.5 gem install uglifier -v 1.2.6 Cleber @ Tavares Junior .com
  • 49. Banco de Dados Alternativa para tanta atualização: http://railsftw.bryanbibat.net/ MUITO BOM!!! Cleber @ Tavares Junior .com
  • 50. Banco de Dados Agora podemos dar o comando para criar nossa aplicação / app rails: Rails new teste –d mysql Com este comando (que deve ser dado em um diretório adequado) criamos um subdiretório chamado teste, onde se cria toda a estrutura (quq já vamos ver) do Rails, usando um banco de dados mysql (sqlite é o padrão) Mas espere! E para editar os arquivos? Vamos ficar na linha de comando o tempo todo? Não… Existem muitos editores (a.k.a. Flash IDE, Flash Develop, Visual Studio, Eclipse, Mono Develop) que você pode usar para Rails, que reconhecem a sintaxe do Ruby, desde gratuitos até pagos de diversos valores. Sugestões temos o Notepad++, Redcar, Scite, gEdit… o próprio Eclipse… Mas vamos ficar de NetBeans. Mesmo com os problemas dele… (peso e obsolência) Cleber @ Tavares Junior .com
  • 52. Banco de Dados Cleber @ Tavares Junior .com
  • 53. Banco de Dados Cleber @ Tavares Junior .com
  • 54. Banco de Dados Cleber @ Tavares Junior .com
  • 55. Banco de Dados Veja como o Rails organiza nossos arquivos (lembrando esta pasta foi importada, nenhum arquivo foi criado pelo NetBeans) Lembra do conceito de MVC para melhorar nossa lógica do servidor? Model-View-Controller? Repare que temos uma pasta de Models (para os modelos que representam justo a base de dados) Uma pasta de Views, para as visualizações/layouts E uma pasta de Controllers/lógica Além disso uma pasta com Helpers/Auxiliares, um enviador de email, Confidurações, pasta Pública, Logs de servidor, arquivos de teste e documentação (Rails te orienta a fazer os testes de lógica de servidor!), bibliotecas e… migrations! Cleber @ Tavares Junior .com
  • 56. Banco de Dados As migrations tem a ver com nosso banco de dados, são as mudanças nele ao longo do desenvolvimento de nossa aplicação. Pense na importância disso. Se seu banco de dados não corresponder à lógica da sua aplicação (controllers / views), você corre o risco de tentar exibir algo que não existe (erro na certa) ou de guardar informações desnecessárias (desperdício). Coerência. “Uma página é uma exibição de um banco de dados”, controverso… especialmente em jogos. As migrations e o models nos “protegem” de ter que lidar com a linguagem SQL diretamente… Vamos gerar no nosso banco / página as informações anteriores de Player (o inglês é quase necessário para programar web / sistemas / rails / páginas…) Cleber @ Tavares Junior .com
  • 57. Banco de Dados rails generate scaffold Player name:string birth:date phone:string Cleber @ Tavares Junior .com
  • 58. Banco de Dados Scaffold = arcabouço = migration (mudança no BD) + Model (representação do BD no servidor) + Controller (fluxo de telas) + View (exibição), tudo junto. Vamos colocar nossa aplicação nesta versão: Migrar o Banco de Dados Opa, fomos negados! Que houve? Não conseguimos acesso aoBanco de Dados. Vamos editar nosso arquivo de configuração no NetBeans. Cleber @ Tavares Junior .com
  • 59. Banco de Dados Cleber @ Tavares Junior .com
  • 60. Banco de Dados Este é nosso arquivo de configuração do acesso do servidor na base de dados, toda tecnologia de servidor tem essa configuração. Repare que Rails nos dá automaticamente 3 tabelas (que devem ser criadas), chamadas por padrão de nome_development, nome_teste, nome_production, com configurações separadas para cada uma. Tudo para orientar o bom desenvolvimento! Vamos configurar a tabela de desenvolvimento: Cleber @ Tavares Junior .com
  • 61. Banco de Dados Cleber @ Tavares Junior .com
  • 62. Banco de Dados Uma vez com isso salvo vamos rodar nossa migração: Ok. Vamos rodar nosso servidor e ver isso? Como assim rodar o servidor? Ah, não contei? Quando você faz o código, precisa de algo para executá-lo. Um Apache Server da vida, vai ler seu código e atender às requisições de página. Sorte nossa que o Rails vem com um servidor embutido, o WEBrick, basta chamá-lo assim: (ah, e podemos depois mudar de servidor se quisermos, inclusive para Apache) Cleber @ Tavares Junior .com
  • 63. Banco de Dados rails server Repare que ele está “ouvindo” (atendendo requisições) em http://localhost:3000 Cleber @ Tavares Junior .com
  • 64. Banco de Dados Tcharam! Temos uma página rodando, “Hello World” (antes mesmo da migration) Cleber @ Tavares Junior .com
  • 65. Banco de Dados E olhando direto no SQLyog nossa base de dados, vemos que ela já está com a tabela correta (lembre, um comando para gerar os arquivos e outro para migrar) Cleber @ Tavares Junior .com
  • 66. Banco de Dados Se olharmos no NetBeans nossas pastas e arquivos, vemos que temos já controllers e views para Player: Cleber @ Tavares Junior .com
  • 67. Banco de Dados Lembrando que os controllers direcionam o fluxo de nossa aplicação, ou seja, que página mostrar. Sabe uma página “index”? Pois é, olha lá o método de resposta à ela ali… E começamos aqui a ver um pouco mais de perto a linguagem Ruby. Não é tão difícil, é? AS funções/métodos são defs, com end no final (parece Basic). O @players é um conjunto de players… sim, instâncias de uma classe. Conhece o RPG Maker? Sabe sua linguagem de programação? RGSS? Ruby Game Script System! Isso aí! São a mesma. Cleber @ Tavares Junior .com
  • 68. Banco de Dados Repare que eu estou na verdade mapeando um método de acesso à página do próprio protocolo http, o GET. O GET sem número em um controller lê todos os objeots correspondentes, o GET/numero retorna o objeto com aquele id, assim como os métodos POST, PUT e DELETE estão mapeados… isso se chama REST e é uma técnica muito eficiente. Em Rails, não saia dos “trilhos”. Mantenha seus nomes corretos e tudo fará sentido e funcionará automaticamente. Esta é a filosofia do framework. Vamos “olhar” a view? Cleber @ Tavares Junior .com
  • 69. Banco de Dados Repare como funciona bem como uma camada de visualização, sem interferir nos dados e podendo ser mudada à vontade. Inclusive traduzida, sem mudar a base. Cleber @ Tavares Junior .com
  • 70. Banco de Dados O que temos aqui é aquela lista de @players sendo mostrada. Repare no “for each”. Epa, peraí… eu não escrevi código nenhum, será que eu já posso ver isso? Hum… Cleber @ Tavares Junior .com
  • 71. Banco de Dados Uau! Eu tenho uma página com uma listagem dos jogadores e um cadastro! 1- Vamos ver seu código fonte, o html? Cleber @ Tavares Junior .com
  • 72. Banco de Dados Cleber @ Tavares Junior .com
  • 73. Banco de Dados Repare que eu tenho um código “limpo” no cliente, com a importação automática de alguns javascripts padrões (posso alterar), alguns metanames padrões (também posso alterar) e a tabela com um link para criar um novo jogador. É assim que funciona uma tecnologia de servidor. Gera uma página ou informação dinâmica e “cospe” ela para quem pedir. (perdão pelo termo, culpa do Carlos) Voltando ao controller, ele responde à requisições html e também… xml! Como isso? Vamos acessar a mesma coisa, uma listagem dos jogadores, mas em xml: Cleber @ Tavares Junior .com
  • 74. Banco de Dados Repare que ele não deu erro! Apenas mostrou o XML vazio, afinal, ainda não temos jogadores. Ou recordes, ou imagens, o que seja. Mas se tivéssemos estaria ali, sem nenhum esforço! Qual a importância disso? Se tivéssemos acessando estas informações pela página, mostramos o html. Mas se tivéssemos nosso cliente em Unity ou XNA ou Flash para mostrar a lsita de jogadores, por exemplo, qual a melhor maneira de fazer isso? XML! Cleber @ Tavares Junior .com
  • 75. Banco de Dados 2- Muito bonito, mas a bagaça funciona? Vamos tentar cadastrar um novo jogador: Cleber @ Tavares Junior .com
  • 76. Banco de Dados 2- Muito bonito, mas a bagaça funciona? Vamos tentar cadastrar um novo jogador: Cleber @ Tavares Junior .com
  • 77. Banco de Dados 2- Muito bonito, mas a bagaça funciona? Vamos tentar cadastrar um novo jogador: Cleber @ Tavares Junior .com
  • 78. Banco de Dados 2- Muito bonito, mas a bagaça funciona? Vamos tentar cadastrar um novo jogador: Definitivamente funciona. Cleber @ Tavares Junior .com
  • 79. Banco de Dados Mostrando um pouco de testes: Cleber @ Tavares Junior .com
  • 80. Banco de Dados Uma vez com o banco populado, como fica o xml: Cleber @ Tavares Junior .com
  • 81. Banco de Dados De um player só: Cleber @ Tavares Junior .com
  • 82. Banco de Dados É possível ver o dump da database Cleber @ Tavares Junior .com
  • 83. Banco de Dados Não satisfeito com os testes e a lógica de “negócio”, quer mais facilidade para criar a aplicação? Lembra no início que nossa tabela tinha o nome do jogador como campo obrigatório? Pois é, vamos ao model do player (nosso correspondente da tabela) resolver isso: Estava assim: Ficou assim: Só isso… vamos à página… Cleber @ Tavares Junior .com
  • 84. Banco de Dados Se eu tentasse cadastrar em branco antes poderia… Cleber @ Tavares Junior .com
  • 85. Banco de Dados Agora não mais… Ah, as mensagens de erro são personalizáveis. Cleber @ Tavares Junior .com
  • 86. Banco de Dados Quais validates exitem? validates :terms_of_service, :acceptance => true validates :email, :confirmation => true validates :email_confirmation, :presence => true validates :legacy_code, :format => { :with => /A[a-zA-Z]+z/, # expressões regulares :message => "Only letters allowed" } validates :name, :length => { :minimum => 2 } validates :bio, :length => { :maximum => 500 } validates :password, :length => { :in => 6..20 } validates :registration_number, :length => { :is => 6 } validates :email, :uniqueness => true has_many :posts, :dependent => :destroy has_one :image Cleber @ Tavares Junior .com
  • 87. Banco de Dados Rails pode trabalhar com sistemas de arquivos, anexos, o que você quiser, de forma fácil, basta usar a imagninação e a pesquisa ;-) Usanod os validates corretos você consegue montar os relacionamentos entre os modelos, e a busca de informações. Cleber @ Tavares Junior .com
  • 88. Banco de Dados Uma ótima dica de documentação, não apenas de Ruby ou Rails, mas de dezenas de linguagens e frameworks: Cleber @ Tavares Junior .com
  • 89. Banco de Dados Uma ótima dica de documentação, não apenas de Ruby ou Rails, mas de dezenas de linguagens e frameworks: Cleber @ Tavares Junior .com