Also, please, a join, or even 3 or 7 or 20, is not some OMG HAIR ON FIRE performance issue. It's not. In fact, relational storage engines are very good at doing JOINs. Almost like they were designed that way. Further, the optimizer uses enforced referential constraints (a foreign key that uses WITH CHECK) as part of the optimization process, ensuring superior performance because of the constraint. Foreign keys can, and do, improve performance. Oh, yes, they do. Don't be timid about this. Go in guns blazing. We're right. They're wrong.