I would start with 4 simple tables:
Users
- user_id auto integer
- regtime datetime
- username varchar
- useremail varchar
- userpass varchar
Questions
- question_id auto integer
- question varchar
- is_active enum(0,1)
Question_choices
- choice_id auto integer
- question_id Questions.question_id
- is_right_choice enum(0,1)
- choice varchar
User_question_answers
- user_id Users.user_id
- question_id Questions.question_id
- choice_id Question_choices.choice.id
- is_right enum(0,1)
- answer_time datetime
My thought on this table design is:
- table
Users
is for storing registered user. - table
Questions
is for storing all your questions.- It has
is_active
so that you can selectively display only active questions (usingWHERE is_active = '1'
)
- It has
- table
question_choices
is for storing all available options. It hasis_right_choice
which defines what choice is the right answer for particular question. - Table
User_question_answers
is for storing answer from your user. - It has
is_right
for faster lookup, to see whether that particular question and answer choice is right (based onis_right_choice
previously defined). - It also has
answer_time
just to note when that particular user answer the question.
-------------------------------
Some Improvements:
ID int (primary key, identity)
Name nvarchar(100)
Table Questions:
ID int (primary key, identity)
TextOfTheQuestion nvarchar(100)
correctAnswer int (foreign key to Answers.ID)
a int (foreign key to Answers.ID)
b int (foreign key to Answers.ID)
c int (foreign key to Answers.ID)
Table Answers:
ID int (primary key, identity)
TextOfTheAnswer nvarchar(100)
Table PlayerChoices:
PlayerID int (foreign key to Players.ID)
QuestionID int (foreign key to Questions.ID)
AnswerID int (foreign key to Answers.ID)
No comments:
Post a Comment