The nitty gritty of normalization can get very hairy. Long story short, do it on data that shouldn't be normalized and you will get stuck with all the negatives with very little benefit.
What is the real purpose of this data? A lot of read/write? Analysis? How much data will there be? In the world of DW/BI, you rarely see normalization for a reason(long story short). Normalization trades performance for efficient use of space, read/write operations, etc. If analytics is your primary need, you shouldn't need to carry out normalization so heavily. If you're limited by hardware, you may need to consider going one way or the other even if the data you have and the purpose you need may require otherwise. If your data isn't going to be too big, denormalization isn't going to be too necessary either.
It seems that you will be doing analytics similarly to what BI people do. You should consider making your database similar to that of what you see in a DW and mix in normalization when necessary instead of taking normalization to the extreme. When I worked as a data warehouse consultant, getting this done correctly was one of the key concepts to master. Since you don't have a DW size of Loblaws but also will likely have decent amount of data needed for analytics, you shouldn't need to go with either extremes of normalization/denormalization. Keep in mind though, even databases that should carry out normalization often eventually need to be denormalized for performance reasons. I am now a SDE with specialty in ETL, and RDBMS, and denormalization is one of the things I have to do now because our database is getting too large.