I would take a deeper understanding of the details of the application and process to get, select, delete, etc. However, to give him a chance for a decent answer.
In short, use partitioned tables and distributed views. Each application is βlinkedβ to these tables through a common split view, if any application must act on another table (or βkeyβ), it can use the same view and act in other tables.
More details ...
Enterprise Developer SQL Server , , ( "App1", "App2", "App3" ), , .
(WITH SCHEMABINDING) " Field1, Field2, Field3 .. 1 UNION Field1, Field2, Field3 .. 2 UNION Field1, Field2, Field3 .. 3"
/ , . , // , partitioncolumn = "app1" "id =?". , (//) .
, App1, "App1" WHERE, db 1, .