Hi,
I have just started a new project, and, I have just discovered that the database implements a 'tractability' requirement whereby every table has "ModifiedBy" and "CreatedBy" (and ModifiedWhen, CreatedWhen) columns for tracing changes to particular Users, as is standard practice.
However, the database designer has implemented this strictly such that these columns are associated to the User table by Foreign Key constraints.
Effectively, the entire database is connected to the User table by these constraints. And worse than that, there are two constraints per table.
When I approach the database with .NET EntityFramework I was confronted by a mass of associations that were meaningless in business terms.
After speaking with the database designer regarding my concerns, I was told that this was necessary to retain correct tracing information.
I can't see how this is acceptable. I thought that these columns are intended to facilitate concurrency, and tracing of sorts, but not strict tracing, as it only traces the last user to make changes, which is of little help in data forensics anyway. And, I thought that heavy duty tracing ought to be conducted by Audit Tables using Triggers.
Am I wrong? Is the kind of 'tractability' described above acceptable data architecture?