>

Fórum

Fórum da RL System, voltado para analistas, programadores etc. Tudo sobre linguagem de programação e desenvolvimento Full Stack: Banco de Dados, Android, C#, Java, .NET, PHP, Node, Javascript, TypeScript, Front, HTML e muito mais.



Relacionamento em SQLite


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

SEU CODIGO AQUI
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.




12 Respostas


Olá

Faça assim.

StringBuilder strSQL = new StringBuilder ();
strSQL.append("CREATE TABLE BLABLA");
strSQL.append(" (lala int, ");
strSQL.append(" (teste int) ");

E assim por diante, é só chamar append.

Para pegar o SQL depois: strSQL.toString();




E no caso dos relacionamentos?




Rafael, obrigado pelo retorno. Não seria melhor fazer assim:


private static String sql = "CREATE TABLE [clientes] ( [id] INTEGER PRIMARY KEY AUTOINCREMENT, [nome] [VARCHAR(30)], [email] [VARCHAR(40)], [endereco] [VARCHAR(50)], [numero] [VARCHAR(10)]);";


Estou em dúvida qto aos relacionamentos. Por exemplo, no script postado acima, crio a tabela Carros, correto? Tenho uma outra tabela chamada Clientes que também vai ter um campo id, como posso resolver esse problema?




Rafael, obrigado pelo retorno. Não seria melhor fazer assim:


private static String sql = "CREATE TABLE [clientes] ( [id] INTEGER PRIMARY KEY AUTOINCREMENT,
[nome] [VARCHAR(30)], [email] [VARCHAR(40)], [endereco] [VARCHAR(50)],
[numero] [VARCHAR(10)]);";


Estou em dúvida qto aos relacionamentos. Por exemplo, no script postado acima, crio a tabela Carros, correto? Tenho uma outra tabela chamada Clientes que também vai ter um campo id, como posso resolver esse problema?




Olá

O StringBuilder seria a melhor forma. O código fica clean.

Quanto ao ID na hora de fazer um join é só usar um alias.

Veja:
http://stackoverflow.com/questions/9370437/multiple-inner-join-from-the-same-table




Rafael, obrigado pelo retorno.

Não seria interessante utilizar constantes para os campos das tabelas?




Para sql muito grande não, ai o ideal seria o StringBuilder.




Rafael, obrigado pelo retorno. No meu caso, vou ter CLIENTES, TIPO_VEICULOS, VEICULOS, SERVIÇOS, HORÁRIOS E OS. Como seria esse StringBuilder num exemplo mais concreto?

Essas são minhas tabelas e campos:

Clientes
id
Nome
Endereco
Telefone
Celular
Email

Tipo_Veiculo
id
Descricao


Veiculos
id
id_cliente
id_tipo_veiculo
modelo
placa


Servicos
id
id_tipo_veiculo
Descricao
Valor

Horarios
id
Horario

OS
id
id_cliente
id_servico
id_horario
Data

Como você recomenda fazer?




Rafael, qual a melhor forma para gerar o script para essas tabelas. Poderia especificar aqui para uma só como modelo?




Poderia me ajudar?






Frederico,

É o mesmo formato, para cada tabela um stringbuilder.