I am new to DynamoDB and I have a big mess of: how my tables should be look like.

I have read the posts here: (its recommended for who didn't read it yet) http://docs.amazonwebservices.com/amazondynamodb/latest/developerguide/BestPractices.html

And now I have some dilemmas that I think everyone who start using DynamoDB will have.

First, my tables: STUDENTS, TEAMS, PROJECTS

STUDENTS: id, age ...

TEAMS: id, student-1-id, student-2-id, current-project, prev-project, last-updated-on

PROJECTS: id, team-id, list of questions, list student1answers, list student2answers

some comments:

  1. as you can see I don't use range-key. Do I need to?.
  2. each answer is a json of (number of question, text, date of inserted)
  3. every student can be in multiple teams.

My dilemmas:

  1. I want to get all the teams of a specific student that updated after specific date.

for now I am using 2 scans operations: one search the student1 and the second search the student2.

       **Is there a better way ?**

I have thought about adding a new table: user-Battles: student-id, team-id so i can query the teams for the specific students and then batch_get_item all the teams but what with the last-update-on? how can I also query by this inside the batch_get_item ?

  1. When a project overs I don't use it anymore. what to do with the old items ? delete ? Move them to another table ?

  2. In the project table, the attributes that can be updated are the answers attributes so I think to move them to another table for performances.<

Edit
Report