My background with designing data stores comes from Core Data on iOS, which supports properties having a one-to-many relationship with another entity.

I'm working on an App Engine project which currently has three entity types:

  • User, which represents a person using the app.
  • Project, which represents a project. A User may be associated with many projects.
  • Post, which is the main content behind a Project. A Project may have many posts.

Currently, User has a property, projects, that is a one-to-many relationship to Project entities. Project has a property, posts, that is a one-to-many relationship to Post entities.

In this case, is Datastore's Reference Property or NDB's Structured Property better for the job (and how are the two conceptually different)? Is there a better way to structure my data?

Edit
Report