Ajuda para modelar banco - Como fazer "questão de assinalar"?  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
buthy
HelloWorld

Membro desde: 04/03/2010 07:36:49
Mensagens: 10
Offline

Dae galera

Estou utilizando o DBDesigner 4 para modelar o bando de dados de uma escola de idiomas (trabalho de faculdade)
Queria saber como que eu vou fazer para modelar uma tabela de uma Questão de Assinalar com o seguintes atributos:

Código da Questão
Pergunta?
a) resposta 1
b) resposta 2
c) resposta 3
d) resposta 4

sendo que a resposta correta vai ficar variando...

Obrigado

This message was edited 2 times. Last update was at 09/03/2010 13:10:44

nextuser
JavaEvangelist
[Avatar]

Membro desde: 15/12/2008 11:21:08
Mensagens: 400
Localização: São Paulo, Brazil
Offline

nuam sou bom com essa questao de modelagem nuam mas eu faria uma tabela só para respostas e na tebela que tem a pergunta teria apenas o ID da resposta selecionada!

Hudson Afonso
Consultor
http://penseinteligente.com.br/

Pense Inteligente:
A Inteligente é uma consultoria em tecnologia da informação, que atua na comercialização e implementação de produtos de software corporativos. Com foco no cliente, compreendemos a necessidade de nossos clientes e adicionamos valor para a condução de seus negócios.
Focus:
SPED, Saneamento de Cadastro, Saneamento de Dados, Cadastro de Clientes e Fornecedores, Cadastro da Receita Federal, CNPJ, CPF, Cadastro, Correção de Cadastro para o SPED, Exigências legais para o SPED, Cadastro CNPJ, Certidão CNPJ, Comprovante CPF, Consulta CPF, Consulta Serasa, Consulta SPC, Nota Fiscal Eletrônica, SPED Contábil, SPED Fiscal
[Email] [WWW]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline




faz assim

Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
buthy
HelloWorld

Membro desde: 04/03/2010 07:36:49
Mensagens: 10
Offline

não sei se entendi
ficaria assim então:



:S


(ignorem a parte do som e imagem)

This message was edited 1 time. Last update was at 09/03/2010 13:55:22

Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

nao!


ficaraia assim


Pergunta 1 - N Alternativas... ou seja, uma pergunta pode ter N alteranativas...


Pergunta pergunta = new Pergunta("Qual a cor do cavalo branco de napoleao?");

Alternativa alternativa1 = new Alternativa(pergunta,"Preto");
Alternativa alternativa2 = new Alternativa(pergunta,"Branco");
Alternativa alternativa3 = new Alternativa(pergunta,"Azul");
Alternativa alternativa4 = new Alternativa(pergunta,"Marrom");
Alternativa alternativa1 = new Alternativa(pergunta,"Lilais");


ou seja... 1 pergunta pode ter 109232138123201809 alterantivas...




para um baco relacional vc vai apontar em Alternativa, a qual pergunta ele pertence....


Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 667
Offline

Boa tarde Galera !

Eu faria uma tabela de perguntas e uma tabela de respostas, sendo que o relacionamento seria de 1:N, ou seja, 1 pergunta teria N respostas, nas tabelas você teria na tabela de respostas o id da pergunta correspondente.

Um dos campos da resposta indicaria se é a resposta correta.

Nas classes acho que seria algo assim:



Fiz o código direto aqui no post, então não deve ter erros aí de sintaxe.

Bom isso eu acho que resolveria.

[]s
buthy
HelloWorld

Membro desde: 04/03/2010 07:36:49
Mensagens: 10
Offline

a estrutura da questão seria assim:


Pergunta: Qual a cor do cavalo branco de napoleão?
opção a) roxo
opção b) azul
opção c) branco
opção d) vermelho

A tabela PERGUNTA está ok!
É só deixar o código e a pergunta. Certo?

E a tabela RESPOSTAS, não deveria o código, a opção certa, e três opções incorretas?
Felagund
GUJ Master
[Avatar]

Membro desde: 26/07/2006 11:51:36
Mensagens: 1732
Localização: Santa e Bela Catarina
Offline

a resposta é uma opção ou multipla?

se for uma é mais simples



se for varias respostas ficaria assim


att
Rafael Felix

Rolling With Code
Twitter
[WWW]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

e' um relacionamento 1 - N

ou seja....



1 PERUGNTA tem N ALTERNATIVAS


todas as alteranativas fica na tabela ALTERNATIVA

todas as perguntas na tabela PERGUNTA

............

vc pode tabem guardar o codigo da alternativa correta dentro da PERGUNTA....

falando em termos de tabela ficaria assim







.................



Se vc quer saber quanto a resposta de alguem vc faz...



ai depois vc faz..... Alguem -> Resposta

This message was edited 1 time. Last update was at 09/03/2010 14:42:48


Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
fabiocsilva
Java Ninja
[Avatar]

Membro desde: 19/07/2006 18:53:36
Mensagens: 294
Offline

buthy, esse problema não é difícil de responder. Como é um exercício, recomendo que você faça sozinho pra treinar, ao invés de perguntar aqui no fórum. Você precisa treinar seu raciocínio porque esse tipo de problema é recorrente no mercado...

"The only place where success comes before work is in the dictionary."
_____________________
Sun Certified Java Programmer
Sun Certified Business Component Developer
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 667
Offline

Boa tarde Galera !

Lavieri

Quando você diz que poderia guardar o codigo da alternativa correta na pergunta, quer dizer que na tabela Pergunta teria um "id_resposta_correta" ?
Fiquei confuso, porque na tabela Alternativa já não teria um "id_pergunta" para saber a qual pergunda determinada alternativa pertence ?

Seria algo assim:
TB_PERGUNTA
id_pergunda (PK)
id_alternativa_correta (FK de TB_ALTERNATIVA)
....

TB_ALTERNATIVA
id_alternativa (PK)
id_pergunta (FK da TB_PERGUNTA)
....

Me parece estranho na hora de persistir isso... quem vai existir primeiro ? O ovo ou a galinha ?
Na hora que você vai salvar a pergunta, vc tem que saber qual a alternativa correta para salvar em "id_alternativa_correta", mas na hora que você vai salvar a alternativa, você precisa da pergunta a que ela pertence...
A nãos que faça em duas etapas, crie perguntas, crie respostas e depois relacione...

Eu prefiro a opção:
TB_PERGUNTA
id_pergunta (PK)
....

TB_ALTERNATIVA
id_alternativa (PK)
id_pergunta (FK da TB_PERGUNTA)
alternativaCorreta ( True or False)

Além do que com essa modelagem é possível atender a necessidade de pergunta com multiplas escolhas...

[]s

This message was edited 1 time. Last update was at 09/03/2010 15:09:26

Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

quem vai existir primeiro e' a pergunta.... segundo sao as alternativas, e terceiro a alternativa correta....


como falei, vc pode fazer, mas tera q cuida na hora de persitir

Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
Zeed01
Virtual Machine Man

Membro desde: 27/10/2006 16:44:29
Mensagens: 667
Offline

Boa tarde Colegas !

Lavieri

Por favor, não leve a mal meu comentário, só queria entender como seria a solução que você sugeriu, acho interessantes analisar todas as opções...
Voltando a sua solução... nesse caso, para cadastrar uma pergunta, você teria que:

-Cadastrar a pergunta (sem a resposta correta)
-Cadastrar as respostas (inclusive a certa)
-Relacionar a pergunda com a resposta correta

É isso ?

[]s
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

yep!





that is the way


existe outra alternativa....

mas nessa outra alternativa, mas nesta outra vc abre espaco para multiplas respostas, e se essa for uma intencao sua, entao sem problemas... essa segunda alternativa seria...





ai nesse caso, vc pode acabar tendo em uma pergunta mais de uma resposta correta ...

Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
Lavieri
GUJ Master
[Avatar]

Membro desde: 27/01/2004 13:39:31
Mensagens: 1851
Localização: João Pessoa / PB
Offline

Lavieri wrote:yep!






Obs.: se usar hibernate da pra fazer melhor...

so colocar insertable false, na propriedade setAlternativa...

e entao vc nao precisa esperar o add pra setar ela

Sun Certified Java Programmer (SCJP 6)

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
-Martin Fowler et al, Refactoring: Improving the Design of Existing Code, 1999

Meu blog -> http://blog.tomazlavieri.com.br/
[ICQ]
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team