This is my first project which I've encountered that I can't get by on `NSUserDefaults` peppered with some `NSCoding` protocol. I've been asked to write some POS software. 

Essentially, the App needs to store a bunch of products, prices and sales accounts. The user should be able to add items and accounts, and track the balance of accounts over time. The balance of an account should be able to be carried over from one "Session" (time period) to the next.

I'm comfortable with the concepts, but I'd like to be confident that I'm modeling this right. **Here's how I've modeled my data. I'd like to know if I've done this properly or if there are any glaring errors/omissions.**

I've created an "Account" Entity, which has the following properties:

* First Name
* Last Name
* Account ID
* Group
* There is a relationship to the transaction entity.

I've created an entity for each Session. Again, a session is just like a fiscal month. The session will have a custom name and an ID.

* Session ID
* Session Name
* There is a relationship to all of the accounts that are applied to that session.

There are of course, products, which have a name and ID. There is also a relationship to the "price" object, so I can change the prices without affecting balances.

Please see this screenshot from Xcode 4 which explains my model in its entirety:

![enter image description here](https://i.stack.imgur.com/LSsMD.png)

**Edit:** 

Looking at this, it seems that I'm missing some important info, such as dates of transactions etc. That said, **am I on the right track?**