Pergunta

Eu tenho o seguinte esquema: Meu site é um jogo de trivia, assim que cada pergunta "hasMany" Respostas, mas a questão também "hasOne" Resposta correta que também é representado pelo modelo de Resposta. Eu ainda tenho que testar isso, mas o instinto do meu programador me diz que a matriz recuperado será tipo de redundante e não irá separar a resposta correta do resto deles.

A minha pergunta é, como é que eu represento esta nos modelos e no banco de dados, há uma maneira melhor para representar este relacionamento?

Foi útil?

Solução

Ou apenas olhada nesta página, muito útil;) http: //www.charlesgarwood .com / blog /? p = 23

Outras dicas

Bem, eu posso vir acima com duas maneiras de fazê-lo.

  1. A Question hasMany Resposta, enquanto um belongsTo Pergunta uma resposta correta (ter o answer_id para a resposta correta na questão, de modo que seria parecido com Question(id, answer_id) e Answer(id, question_id))

  2. Tenha uma bandeira sobre a resposta que reflete se é a correta ou não.

Eu acho que a escolher é mais uma opinião pessoal, mas eu provavelmente iria para o número 2, mesmo que 1 é a mais correta de pensar relacional, mas reduz a redundância e você ainda pode procurá-lo dentro do respostas.

Claro que, se uma pergunta pode ter mais de uma resposta correta, então a opção número 1 está fora de questão.

Outro caminho seria a criação de 2 modelos mapeados para a mesma mesa. Ter uma bandeira na resposta que indica que ele é a resposta correta ou não.

Desde que você não será a mudança que resposta está correta, em seguida, mapear a correção de uma bandeira no momento da criação é bom, e vai deixar você tem várias respostas corretas. Com um sistema de ponderação pode até valorizar a exatidão da resposta.

Com dois modelos distintos, certifique-se de definir as condições sobre as relações ou no próprio modelo para que o modelo CorrectAnswer só encontra respostas com o verdadeiro conjunto de campos Answer.correct =. Você pode então ter um modelo de resposta genérica que não tem tal condição. Feito no modelo de pergunta que você poderia até usar exclusivamente as bandeiras de associação para buscar os dois tipos.

Tente perguntar no cakeqs.org é cakephp portal relacionado. Mas definitivamente você deve apenas ter aliases diferentes para ambos associação

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top