Hi Ross, > I would disagree here. The database should only be used to store raw > data; the database should not know anything about this data (the > database should not be "smart"). > > Determining whether or not a number qualifies as "long distance" is a > job for the domain / controller / view layer (pick your jargon). > > Here's why. Suppose the company moves, or the geographical scope of > one area code is changed. Now you have a different set of rules that > determine what qualifies a number as being "long distance." Would you > rather change the rule with one line of code in your view, or > construct and run some SQL that finds and updated all matching phone > numbers? (Note: this is meant to be a rhetorical question but could > very well be debated.) > > Sorry for the tangent. I'm a stickler for best practices.
That's fair...and although, you meant that as a rhetorical question, I would indeed debate that and would further argue with your definition of what constitutes best practices as implied by your post. Best practices don't exist in one dimension and they are not written in stone. You can have best practices for high performance, highly scalable applications that are different from best practices for "regular" applications. Today's scalability needs demand that developers keep an open mind on what's best for the application and it's performance/scalability requirements. Most of the time, this is not a problem as theory usually converges with practice for a lot of applications. But not for all. When, for example, a regex based query is very expensive and your app has many places where it wants to pull up phone numbers based on their "is_long_distance" value, it certainly makes sense to store this attribute in a precomputed form and refreshed it in a batch computation if/when the rules for it change at all in future. Another example, if you have a model with a purchase order with child items that represent each purchased item, it does make sense to store the order total in the purchase order master record, even though you could derive it from the sum of individual item totals every time you need it. -Rajesh D --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---