I am working on ASP.Net application which tracks the development of departmental software through a software lifecycle, the software lifecycle is different for each department so it can't be hard coded. It has stages and questions which flow to either new stages or other questions etc..

My current design for this part is a bit messy, hopefully someone can help forumulate a way to better design:

tbl_Stage
---
ID, (e.g. 1)
StageTitle (e.g. Planning)
ProgressQuestionID (e.g. 1)

ID, (e.g. 2)
StageTitle (e.g. Requirement Capture )
ProgressQuestionID (e.g. 4)


tbl_Question
------------
ID (.e.g. 1)
ProgressQuestionText (.e.g Is planning complete?)


ID (.e.g. 2)
ProgressQuestionText (.e.g Do you want to go back to planning?)

tbl_QuestionAnswer
--------------
ID (.e.g 1)
QuestionID (.e.g 1)
QuestionAnswer (.e.g. Yes)
NextStageID (e.g. 2)
NextQuestionID (e.g. <NULL>)

ID (.e.g 2)
QuestionID (.e.g 1)
QuestionAnswer (.e.g. No)
NextStageID (e.g. <NULL>)
NextQuestionID (e.g. 2)

As you can see if sort of loop, and weather the next bit is a question or stage is dependent on null values.

Any suggestions for improvements?