kenambrose (1/18/2011)
I believe there are some serious flaws in this article. For example, recepts represent a historical record of a transaction occuring in a moment in time.If one normalizes the customer as is done in this example, and simply uses a foreign key in each receipt, what happens if a customer changes their address at some later time? or name? (people do get married).
This isn't an instruction manual to type 2 SCDs, I'd consider this a typical approach to an OLTP system. The whole purpose of a database like this is that if a customer's data changes that we minimize updates to correct data.
If Paul were writing an article on the basics of designing a data warehouse, then he could cover handling the type 2 SCD here in the ETL process, though I think this would be over Bob's head.
But I've seen too many multi-million dollar ERP databases handle this sort of customer record as "present value" exactly this way to completely discount it.
And if the customer data has changed enough, a new customer record could be created with a foreign key chaining in the same table to point the old record to the new.