Relacionamento no Sqlite
21/06/2013
15
Meus amigos, gostaria de saber como fazer os relacionamentos entre tabelas no SQLite. Eu tenho esse script:
O que poderia fazer para esse script ficasse mais claro e visível? Notem que tenho 2 relacionamentos.
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.
Responder
Posts
23/06/2013
Meus amigos, gostaria de saber como fazer os relacionamentos entre tabelas no SQLite. Eu tenho esse script:
O que poderia fazer para esse script ficasse mais claro e visível? Notem que tenho 2 relacionamentos.
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
25/06/2013
É 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).
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
Qual é mesmo sua dúvida, Frederico? O que poderia fazer para o script ficar mais "claro e visível"?
Responder
25/06/2013
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
Isso mesmo. Gostaria de deixar mais vísível e claro o script e seus relacionamentos também.
Responder
25/06/2013
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
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.
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
Ja tenho as tabelas prontas com os scripts, queria deixar mais claro e limpo.
Responder
25/06/2013
Tenho esse script criado:
Tabela Clientes:
Tabela Carros:
Tabela Tipo Carros:
Gostaria de deixar mais visível e limpo o código. Já tenho pronto.
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
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.
Escreva o script completo, já com os nomes das colunas e verá que parecerá mais claro.
Responder
Clique aqui para fazer login e interagir na Comunidade :)