2010-08-09 2 views
1

사용자가 수행 할 수있는 테스트가있는 사이트에서 작업하고 있습니다. 각 과목마다 100 문제의 시험 영역을 설정했습니다. 사용자가 테스트를받는 경우 이미 수행 한 작업을 저장할 수 있기를 원합니다. 반환 할 때 작업을 계속할 수 있기를 바랍니다. 대답은 객관식 질문이며 라디오 버튼을 선택하여 응답합니다. 각 라디오 버튼의 값은 A, B, C, D 또는 E입니다. 프로그래밍 및 데이터베이스 저장에 PHP와 MySQL을 사용하고 있습니다.현재 작업 상태를 저장하는 방법?

각 테스트마다 테이블이 필요하고 1,2,3,4,5와 같은 100 개의 열 이름을 최대 100 개까지 가질 수 있으며 사용자가 작업을 저장할 때 완료 한 질문을 저장합니다. 데이터베이스에? 이것은 좋은 방법입니까 아니면 이것을하는 다른 방법입니까?

답변

5

'사용자'에 대한 테이블과 '질문'에 대한 테이블이 있습니다.

'questions'에 외래 키, 'users'에 외래 키, 'answer'라는 열이있는 다른 테이블 'answers'가 있습니다.

사용자가 질문에 대답하면 사용자 ID, 질문 ID 및 응답으로 제공된 'answers'테이블에 레코드를 삽입하십시오.

아직 질문에 답변하지 않은 경우이 표에 기록이 없습니다.

+0

예. 이것을 접합점 테이블이라고합니다. –

1

이것은 첫 번째 초안을 위해 고안 한 것입니다.

User 
-------- 
UserId 
UserName 

Test 
------- 
TestId 
TestName 

TestQuestions 
---------------- 
QuestionId 
TestId 
QuestionName 

QuestionChoices 
---------------- 
ChoiceId 
QuestionId 
Choice 

UserTestAnswers 
----------- 
UserId 
ChoiceId 
관련 문제