Storing Exam Questions in a Database

I would have separate question and answer tables and join them using a question2answer table

question
--------
 - id
 - question
 - type (multiple choice, short response)

answer
------
 - id
 - GUIorder (so you can change the sort order on the front end)
 - answer

question2answer
---------------
 - questionid
 - answerid

Now everything is dynamic in terms of building the question and you don't have empty columns. A quick join brings you back all the parts to the main question

Your exam_responses table can now have the following

- id
- questionid
- answerid
- studentid
- response
- mark

I think storing five columns for each response in the questions table is not a good design. If the number of choices for the question becomes 6 you will have to add one more column. Also, if there are just two choices, the remaining columns will stay empty. So it better be in two separate tables:

questions
 - id
 - question
 - type (multiple choice, short response)
 - answer (short response answer here, or just a/b/c/d/e for multiple choice, t/f for true or false)

question_choices
- id
- question_id
- choice

Then you can get the list of choices for each particular question by joining them based on questions.id=question_chocies.question_id condition.

In case of exam responses, you should divide in two tables too in order not to repeat information about student_id, exam and mark for each question of the exam. So it should be something like:

student_exam
  - id
  - student_id
  - exam_id
  - mark

student_exam_responses
  - exam_id
  - question_id or question_number
  - response

These two tables can be connected based on the student_exam.id=student_exam_responses.exam_id condition.