I believe that for vast majority reasons why people need links to other bases I have a solution which would be the easiest to implement and also very easy to use and very clear from rights point of view. Imagine this scenario:
When I want to link to other base what I will do is following:
I will make ghost of table from the other base into current base.
This ghost table will have exactly the same content as original table in the other base.
This ghost table is read only. So only people with an access to the original table in the other base can make changes (which will automatically propagate into all it’s ghosts).
Once I have ghost table in current base I can link to it.
And the best would be if this ghost table would be based not just on the table in the other base, but also it’s view. So in the ghost table there would be visible only records which belongs to some view.
So for example imagine following scenario:
I have base Sources with tables like Employees, Products etc. In this base I would keep sources for all shared tables.
Than I have base Sales where I need to link to our products from some tables. For that I would make ghost table Products which will be identical to Sources/Products. But in Sales base Products will be read only. And I can link to it from any table in Sales.
If I would need to track who sold what I would need to make ghost table from Sources/Employees and I will call it Sellers. But if in our company we have a lot of people and only handful of them can actually sell something, I would prefer to have just those in Sellers table. So instead of ghosting whole Employees table I would like to make Sellers ghost of Sales team view from Employees table which will show only right people.
I hope that I made my example clear and understandable.