Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Naming conventions for non-normalized fields

Is it a common practice to use special naming conventions when you're denormalizing for performance?

For example, let's say you have a customer table with a date_of_birth column. You might then add an age_range column because sometimes it's too expensive to calculate that customer's age range on the fly. However, one could see this getting messy because it's not abundantly clear which values are authoritative and which ones are derived. So maybe you'd want to name that column denormalized_age_range or something.

Is it common to use a special naming convention for these columns? If so, are there established naming conventions for such a thing?

Edit: Here's another, more realistic example of when denormalization would give you a performance gain. This is from a real-life case. Let's say you're writing an app that keeps track of college courses at all the colleges in the US. You need to be able to show, for each degree, how many credits you graduate with if you choose that degree. A degree's credit count is actually ridiculously complicated to calculate and it takes a long time (more than one second per degree). If you have a report comparing 100 different degrees, it wouldn't be practical to calculate the credit count on the fly. What I did when I came across this problem was I added a credit_count column to our degree table and calculated each degree's credit count up front. This solved the performance problem.

like image 481
Jason Swett Avatar asked Mar 25 '11 20:03

Jason Swett


1 Answers

I've seen column names use the word "derived" when they represent that kind of value. I haven't seen a generic style guide for other kinds of denormalization.

I should add that in every case I've seen, the derived value is always considered secondary to the data from which it is derived.

like image 146
Ted Hopp Avatar answered Oct 15 '22 16:10

Ted Hopp