You seem to understand the issues quite well. You have two basic options:
- Make your preferences data accessible via "match to everything" type relationships. (use the X operator or "ye Olde 'One'" relationship)
- Put the preferences data into global fields.
With the second option, you can set up a script that loads the global fields from non global fields when the file is first opened to make it easier to update the values.
FWIW, Phil's option #2 is what I have found most robust.
Use the globals, but reload those globals on every login, for every user right in the startup script. In that way, someone messing with the hosted file doesn't break it. It also gives you the opportunity to change the globals from a client...change the non-global field and now every login afterwards gets the new value in a global field...without needing to ouch the server.
I tend to use 1. when the needs of the project are such that I don't need to link to the preferences table very often and switch over to two as the need for accessing that data becomes a truly global need. (Somestuff may only need to be accessed once during opening and other stuff you need access to all over the place and all the time...