Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Criando um formulario de perguntas

Oi, eu quero criar um formulario de perguntas de check-list.

Por exemplo, eu tenho um carro e quero fazer um check list sobre ele:

Buzina: conforme/não conforme/nao se aplica Lanternas: conforme/nao conforme/nao se aplica

Mas o que acontece: Eu criei um model de CARRO, onde tenho

pergunta resposta

Acontece que na hora de criar o banco estou confusa, pois preciso que estas perguntas sejam cadastradas e depois que as mesmas perguntas cadastradas, recebam as respostas. Usando apenas um activity de model para estar passando estas perguntas depois, atraves de um array ou algo assim.

Como eu deveria criar?

4 respostas

Olá Rafaela,

Pelas informações que você passou acho que o recomendado seria criar 3 tabelas distintas:

  1. Tabela Carro (id, nome): vai guardar os dados de cada carro
  2. Tabela Pergunta (id, pergunta): vai guardar os dados de cada pergunta sem prendê-las a nenhum carro específico
  3. Tabela Pergunta_Resposta (id, id_carro, id_pergunta, resposta): essa aqui serve pra associar cada carro com suas perguntas e também para armazenar a resposta dada para cada pergunta

Aí pra você conseguir utilizar esse modelo, basta cadastrar os carrros na tabela Carro e as perguntas na tabela Pergunta. Depois você precisa associar as perguntas com os carros inserindo registros na tabela Pergunta_Resposta.

Para listar todas as perguntas de um carro você só precisa fazer um select com joins das tabelas Carro, Pergunta_Resposta e Pergunta.

Para guardar as respostas você só vai precisar alterar os registros da tabela Pergunta_Resposta para um carro específico.

Mas como eu faço uma tabela receber duas chaves estrangeiras ao mesmo tempo? Nessa parte do código estou com bastante dúvidas =/

solução!

Olá Rafaela,

Para criar as tabelas que eu comentei você pode utilizar um método parecido com o abaixo no seu Dao:

    @Override
    public void onCreate(SQLiteDatabase db) {
        String ddl = "create table carro (" +
                "id integer primary key, " +
                "nome text not null" +
                ")";
        db.execSQL(ddl);

        ddl = "create table pergunta (" +
                "id integer primary key, " +
                "pergunta text not null" +
                ")";
        db.execSQL(ddl);

        ddl = "create table pergunta_resposta (" +
                "id integer primary key, " +
                "id_carro integer references carro(id), " +
                "id_pergunta integer references pergunta(id), " +
                "resposta integer" +
                ")";
        db.execSQL(ddl);
    }

Agora para buscar, por exemplo, todas as perguntas de um carro específico, você vai precisar trabalhar com alguns joins, a instrução SQL ficaria assim:

// buscando todas os dados e perguntas do carro de id 1
select * from carro 
    join (
        pergunta_resposta join pergunta
            on pergunta_resposta.id_pergunta = pergunta.id
    )
    on carro.id = pergunta_resposta.id_carro
    where carro.id = 1

Bom dia, Jeferson. Irei testar, qualquer coisa volto para o forum, muito obrigada pelas dicas.