Normalization is actually fairly simple. To convert data from one form to another you apply a single, simple, rule to that data. To move to the next level of normalization apply the next rule etc. etc. See http://en.wikipedia.org/wiki/Database_normalization.
So examine your data and see if it conforms to these rules. If it does then it is normalized. If it doesn't then it is not.
However reducing data into its 3rd normal form does not necessarily make it totally suitable for use within a DB. You then have to OPTIMIZE the data. During this exercise you may denormalize parts of the data to give faster access to the information. So you now have to go back to your DB designer and ask what were the decisions made in the normalization & optimization of the data.
If you're in one of those predicaments where cls.__private attributes just aren't enough since they can easily be accessed through inst._cls__private, and you need something a little more secure, here's ...