title: Core Data: am I on the right track? Setting up data model for data that contains multiple arrays, eg. accelerometer data
body: <p>I am working on a project that involves a lot of data, and at first I was doing it all in plist, and I realized it was getting out of hand and I would have to learn Core Data.  I'm still not entirely sure whether I can do what I want in Core Data, but I think it should work out.  I've set up a data model, but I'm not sure if it's the right way to do it.  Please read on if you think you can help out and let me know if I'm on the right track.  Please bear with me, because I am trying to explain it as thoroughly as I can.</p>
  
  <p>I've got the basic object with attributes set up at the root level; say a person with attributes like a name, date of birth, etc.  Pretty simple.  You set up one entity like this "Person" in your model, and you can save as many of them as you want in your data and retrieve them as an array, right?  It could be sorted based on an attribute in the Person, such as the date they were added to the database.</p>
  
  <p>Now where I get a bit more confused is when I want to store several different collections of data with each person.  For example a list of courses and associated test marks.  In a plist I would have stored an array of dictionaries that stored this, sorted by the date assessed.  The way I set this up in my data model was that I added an entity called "Tests" and a "to-many" relationship from Person to Tests, and then when I pull that I get an NSSet that I can order by a timestamp again?  Is there a better way to do this?</p>
  
  <p>Similarly the Person may have a set of arrays of numerical data (the kind that you could graph over time,eg. Nike+ stores your running data like distance vs time, and a person would have multiple runs associated with them, hence a set of arrays, each with their own associated date of collection).  The way I set this up is a little different, with a "Runs" attribute with just a timestamp attribute, and that is connected from Person via a to-many relationship, with inverse "forPerson".  Then the Runs entity is connected to another entity via a to-many relationship that has attributes to store numerical data and the time.  This would once again I would use a time/order attribute to sort them.</p>
  
  <p>So the main question I have is whether using an internal attribute like timestamp to sort a set would be the right way to load in a "array" from core data.  Searching forums/stack overflow about how to store NSArrays in core data seem overly complicated compared to this, giving me the sense that I'm misunderstanding something.</p>
  
  <p>Thanks for your help.  Sorry for all the text, but I'm new to Core Data and I figure setting up the data model properly is essential before starting to code methods for getting/saving data.  If necessary, I can set up a sample model to demonstrate this and post a picture of it.</p>