I have a table with three fields, User
, City
and Country
, where exactly one of the fields must be non-NULL
at all times. Can I use an SQL constraint for this or should I rethink what I'm doing?
The scenario is that my database should contain documents that can be attached to users, cities or countries. So a row in this table contains exactly one document for either a user, a city or a country. However, one should be able to search for all documents as well, regardless of what entity it has been "attached" to.
The reason I'm not using three different tables instead is that I want to avoid having to JOIN
the three tables when searching for documents in all of the three places. I'm imagining that the kind of denormalization I'm attempting to use here will improve performance, but I'm not sure.
Thoughts?