On 08/24/2012 07:01 PM, Franklin, Matthew B. wrote:
I have been working on splitting the models in the branch according to the
strategy on the wiki and wanted to highlight an undiscussed consequence.
In the case I am currently working, eliminating the tight coupling between
objects & person/user, if we switch to using getUser/PersonId() on things
like PageUser, Widgets, etc we will end up with a database that does not
have referential integrity to the person table. This same pattern will
propagate throughout all "verticals". If we explicitly define a
constraint in the JPA layer, it will break the ability to use different
persistence strategies for verticals and at the database layer, we are
defining
Everyone OK with the consequences and if not, is there an alternative that
you can identify?
+1
Maintaining referential integrity across multiple verticals (e.g. possibly
different type of backends) will involve multiple systems, you cannot rely on
one single system to maintain it.
Providing sanity checks, cleanup/vacuum operations etc. to fix/repair possible
inconsistencies, periodically or on demand, can be possible but depends on which
systems are in use and only can be done 'on top', not 'from within'.
Ate
-Matt