Har_Shan:

I have been thinking about this topic also (but sadly, am not much of
an expert).  I am using Objectify as a layer on top of the Datastore.
Their website has a lot of good information on structuring data in the
Datastore - see http://code.google.com/p/objectify-appengine/wiki/Concepts?tm=6
).

There is also a good post on the various ways of handling 1 to many
relationships using Objectify.  What appeared to be something that
would work in your situation (which is like my situation) is what I
think of as the "database approach".  What I mean by that is, if you
had a 1 to many relationship, how would you model that in a database?
Specifically if 1 User can have Many Exams, you would have...

User table
* userId
* Other user fields

Exam table
* examId
* userId
* Other exam fields

So, turning this into GWT/Objectify, it would be....

public class User  {
  @Id private Long id;
  // Other user fields
}

public class Exam{
  @Id private Long id;
  private Key<User> userKey;
  // Other exam fields
}

The way to find all the exams for a particular user (represented by
"this") is:
  Objectify ofy = ObjectifyService.begin();
  Key<User> userKey = new Key<User>(User.class, this.id);
  List<Exam> result = ofy.query(Exam.class).filter("userKey",
userKey).list();

This is explained (much better than I could do) at:
http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify#Relationships

This may not solve all (or any) of your use cases, but it has worked
for me in my admittedly very limited usage.
Also check out:
http://groups.google.com/group/objectify-appengine/browse_frm/thread/102ede7022c7d7cf/30e6070900d5d523?lnk=gst&q=relationships#30e6070900d5d523

Enjoy,
RB




On Dec 19, 12:17 am, Matej <matej.crepin...@gmail.com> wrote:
> I am not expert in dataStore this is just what I would do:
> Add new entity with fields:
> ID OrderID UserID ExamID PageID QuestionID AnswerID
>
> Yes it is a lot of redundant data, but simple.
> When user starts new Exam, all data are created with AnswerID set to
> general answer unAnswer. After that you just update AnswerID.
>
> What are obstacle in design like this?
>
> Best, M

-- 
You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.

Reply via email to