I have been thinking about this a lot but somehow can't figure out how to deal with it in an efficient matter.
Say you have a large set "X" of data that consists of multiple tables. For the sake of argument, let's say that "X" consists of all entries from an elaborate phone book.
You then create various databases for different applications, and each application takes a subset of "X" to build upon. It has no access to data of "X" outside the subset.
But if one application changes a tuple in its subset, this change should be propagated to the central store of "X" and thus be available to any other application accessing the same tuple.
To stay with the example of the phone book, application 1 might work with a subset of all people who are parents. Application 2 might work with a subset of all people under 30. These two subsets might intersect. So if application 1 changes the phone number of a parent under 30, this changed phone number should be pushed back to "X". And because application 2 uses the same tuple, it should have access to the updated version.
How do you solve this in practice? I'm using PostgreSQL myself but maybe there is a more universal solution to this question.