When I set up custom System Table, the values often refer to other tables for making selections. I configure this in TR_REFERENCE_COLUMN. What I don't do is establish proper foreign key relationships. I'm a little torn about this. What do people think? The arguments I can see for doing it:
Against I can think of:
Firstly, philosophical questions are my JAM!! Love them.
I have created many custom system tables. I also configure them in TR_REFERENCE_COLUMN obviously. But I do still also create proper foreign key relationships. Always. You have stated a few pros there, so I will not go into that.
Against your cons, what I would say is this:
Just my thoughts! Practically speaking, again, you are generally correct, you should be able to leave it sit and be fine. After all, we do not glue our plates to the table to keep them from spilling; gravity takes care of that just fine. Then again, a database sometimes has little kids playing near it, and you never know when you are going to bump the table...
John
Declare foreign key constraints when keying to another one of your local tables, but don't do this when keying on a Tessitura base table. Technically speaking, establishing a foreign key relationship qualifies as affecting the schema of your target table, which is, of course, "unsupported". I don't like to get into unsupported territory unless I have an exceedingly good reason to, and that usually means I will commit to doing a (unless you've automated it) complicated and risky routine of undoing and redoing these schema changes before and after every service pack installation. This could also affect being able to delete objects from within the Tessitura Client if you have rows in your local reftable that are referencing that object.
That said, once you cross the "firewall" into local table land--why not give yourself schema guarantees when you have foreign key relationships among local tables?