User
、City
およびの3 つのフィールドを持つテーブルがありCountry
、フィールドの1 つだけNULL
が常に非である必要があります。これに SQL 制約を使用できますか、それとも自分のしていることを再考する必要がありますか?
シナリオは、ユーザー、都市、または国に添付できるドキュメントをデータベースに含める必要があるというものです。したがって、このテーブルの行には、ユーザー、都市、または国のいずれかのドキュメントが 1 つだけ含まれています。ただし、どのエンティティに「添付」されているかに関係なく、すべてのドキュメントも検索できる必要があります。
JOIN
代わりに 3 つの異なるテーブルを使用しない理由は、3 つの場所すべてでドキュメントを検索するときに 3 つのテーブルを使用する必要がないようにしたいからです。ここで使用しようとしている種類の非正規化によってパフォーマンスが向上すると想像していますが、よくわかりません。
考え?