Survey management for multiple forms that can be answered in different times

I have several survey forms, and they shares some duplicate questions. Moreover, one participant can fill the form multiple times. Is there a way to achieve as many of these bullets as possible?

  • There is a way to aggregate answers of different forms of one participant into a place
  • Each participant doesn’t have to answer the same questions in different forms (if a participant has already answer those questions in form A, then they won’t be shown in form B, or already has the answer)
  • Whenever a participant redoes a same form, then I can track the changes in their answers

For now the solution I have is to find a way to build a relational database from Dataview’s API, then make the forms. I’m not sure if that’s the optimal way.