Relacionamento no Sqlite

21/06/2013

0

Meus amigos, gostaria de saber como fazer os relacionamentos entre tabelas no SQLite. Eu tenho esse script:

private static final String DATABASE_CREATE_CARROS = "create table " + DATABASE_TABLE_CARROS + " ("      
+ KEY_ID_CARRO + " integer primary key autoincrement, "      
+ KEY_IDCLIENTE_CARRO + " integer, "      
+ KEY_IDTIPO_CARRO + " integer, "      
+ KEY_MODELO + " text, "      
+ KEY_PLACA + " text, FOREIGN KEY ( " + KEY_IDCLIENTE_CARRO      
+ " ) REFERENCES " + DATABASE_TABLE_CLIENTES + " (" + KEY_ID_CLI      
+ " ) ON DELETE RESTRICT ON UPDATE CASCADE , FOREIGN KEY ( "       
+ KEY_IDTIPO_CARRO + " ) REFERENCES " + DATABASE_TABLE_TIPO_CARRO + " ("       
+ KEY_IDTIPO_CARRO + " ) ON DELETE RESTRICT ON UPDATE CASCADE);";   


O que poderia fazer para esse script ficasse mais claro e visível? Notem que tenho 2 relacionamentos.
Frederico Brigatte***

Frederico Brigatte***

Responder

Posts

21/06/2013

Frederico Brigatte***

Ninguém?
Responder

23/06/2013

Marcelo Senaga

Meus amigos, gostaria de saber como fazer os relacionamentos entre tabelas no SQLite. Eu tenho esse script:

private static final String DATABASE_CREATE_CARROS = "create table " + DATABASE_TABLE_CARROS + " ("      
+ KEY_ID_CARRO + " integer primary key autoincrement, "      
+ KEY_IDCLIENTE_CARRO + " integer, "      
+ KEY_IDTIPO_CARRO + " integer, "      
+ KEY_MODELO + " text, "      
+ KEY_PLACA + " text, FOREIGN KEY ( " + KEY_IDCLIENTE_CARRO      
+ " ) REFERENCES " + DATABASE_TABLE_CLIENTES + " (" + KEY_ID_CLI      
+ " ) ON DELETE RESTRICT ON UPDATE CASCADE , FOREIGN KEY ( "       
+ KEY_IDTIPO_CARRO + " ) REFERENCES " + DATABASE_TABLE_TIPO_CARRO + " ("       
+ KEY_IDTIPO_CARRO + " ) ON DELETE RESTRICT ON UPDATE CASCADE);";   


O que poderia fazer para esse script ficasse mais claro e visível? Notem que tenho 2 relacionamentos.


Tem uns frameworks ORM para Android:

http://www.ubiratansoares.com.br/blog/2012/12/consideracoes-sobre-android-e-orm/

Responder

24/06/2013

Frederico Brigatte***

O que seria exatamente isso?
Responder

25/06/2013

Marcelo Senaga

É tipo o Hibernate, mas para Android.
Eu vi que você está criando as tabelas "na mão", via comando SQL. É como todo mundo faz. Mas existe esses ORM´s para Android, caso você queira algo mais sofisticado, no estilo do Hibernate. (claro, com certas limitações).
Responder

25/06/2013

Joel Rodrigues

Movendo o tópico para a nova sala de SQLite.
Responder

25/06/2013

Frederico Brigatte***

E como que funciona?
Responder

25/06/2013

Frederico Brigatte***

E ai, alguém pra ajudar?
Responder

25/06/2013

Joel Rodrigues

Qual é mesmo sua dúvida, Frederico? O que poderia fazer para o script ficar mais "claro e visível"?
Responder

25/06/2013

Frederico Brigatte***

Estou em dúvida qto aos relacionamentos. Por exemplo, no script postado acima, crio a tabela Carros? Tenho uma outra tabela chamada Clientes que também vai ter um campo id, como posso resolver esse problema? Em outra tabela chamada Tipo, também vou ter o campo id. E assim para as demais tabelas.
Responder

25/06/2013

Frederico Brigatte***

Isso mesmo. Gostaria de deixar mais vísível e claro o script e seus relacionamentos também.
Responder

25/06/2013

Frederico Brigatte***

Seria melhor usar o script com os próprios comandos sql ou utilizar constantes? Vou ter que utilizar 05 tabelas, por isso gostaria de um exemplo de código mais limpo e claro.
Responder

25/06/2013

Joel Rodrigues

Bom, aí você vai ter de estudar um pouco sobre relacionamentos (chaves estrangeiras ou foreign keys). O que você está fazendo é criar uma tabela de carros que está relacionada com o cliente e com o tipo. Ou seja, UM CARRO POSSUI UM CLIENTE E UM TIPO.
Com relação ao campo Id, todas as suas tabelas podem ter um campo Id ou com qualquer outro nome, o que não pode é ter dois campos iguais na mesma tabela.
Responder

25/06/2013

Frederico Brigatte***

Ja tenho as tabelas prontas com os scripts, queria deixar mais claro e limpo.
Responder

25/06/2013

Frederico Brigatte***

Tenho esse script criado:

Tabela Clientes:

private static final String DATABASE_CREATE_CLIENTES = "create table " + DATABASE_TABLE_CLIENTES + " ("
+ KEY_IDCLI + " integer primary key autoincrement, "
+ KEY_NOME + " text, "
+ KEY_ENDERECO + " text, "
+ KEY_TELEFONE + " text, "
+ KEY_CELULAR + " text, "
+ KEY_EMAIL + " text);";


Tabela Carros:

private static final String DATABASE_CREATE_CARROS = "create table " + DATABASE_TABLE_CARROS + " ("     
+ KEY_ID_CARRO + " integer primary key autoincrement, "     
+ KEY_IDCLIENTE_CARRO + " integer, "     
+ KEY_IDTIPO_CARRO + " integer, "     
+ KEY_MODELO + " text, "     
+ KEY_PLACA + " text, FOREIGN KEY ( " + KEY_IDCLIENTE_CARRO      
+ " ) REFERENCES " + DATABASE_TABLE_CLIENTES + " (" + KEY_ID_CLI      
+ " ) ON DELETE RESTRICT ON UPDATE CASCADE , FOREIGN KEY ( "      
+ KEY_IDTIPO_CARRO + " ) REFERENCES " + DATABASE_TABLE_TIPO_CARRO + " ("      
+ KEY_IDTIPO_CARRO + " ) ON DELETE RESTRICT ON UPDATE CASCADE);";   


Tabela Tipo Carros:

   private static final String DATABASE_CREATE_CARROS = "create table " + DATABASE_TABLE_CARROS + " ("    
    + KEY_ID_CARRO + " integer primary key autoincrement, "    
    + KEY_IDCLIENTE_CARRO + " integer, "    
    + KEY_IDTIPO_CARRO + " integer, "    
    + KEY_MODELO + " text, "    
    + KEY_PLACA + " text, FOREIGN KEY ( " + KEY_IDCLIENTE_CARRO    
    + " ) REFERENCES " + DATABASE_TABLE_CLIENTES + " (" + KEY_ID_CLI    
    + " ) ON DELETE RESTRICT ON UPDATE CASCADE , FOREIGN KEY ( "     
    + KEY_IDTIPO_CARRO + " ) REFERENCES " + DATABASE_TABLE_TIPO_CARRO + " ("     
    + KEY_IDTIPO_CARRO + " ) ON DELETE RESTRICT ON UPDATE CASCADE);"; 


Gostaria de deixar mais visível e limpo o código. Já tenho pronto.
Responder

25/06/2013

Joel Rodrigues

Amigo, para mim parece bastante claro. O fato de não parecer "limpo" é por que você está usando essas variáveis /constantes aí ao invés de botar logo os nomes das colunas.
Escreva o script completo, já com os nomes das colunas e verá que parecerá mais claro.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar