データベースに、ステータス名と説明(ステータスと呼ばれる)を保持するテーブルがあります。他に2つのテーブル、VacancyRequestとActionRequestがあり、それぞれが異なるタイプのエンティティを表しますが、それぞれに独自のステータスがあります。一方のエンティティの可能なステータスは、必ずしももう一方のエンティティの可能なステータスと一致するとは限りません。
整合性を維持するために、どちらがより良いアプローチですか?
VacancyRequestStatusとActionRequestStatusの2つの追加テーブルを作成し、それぞれに1つの列(StatusID)を設定します。これらの2つのテーブルには、それぞれのエンティティタイプに適用可能なStatusIDのみが含まれます。次に、VacancyテーブルとActionテーブル、およびそれぞれのステータステーブルの間に外部キー関係を作成します。各ステータステーブルには、メインステータステーブルに戻るFKがあります。
ステータステーブルに列を追加して、適用するエンティティを示します(Vは空席、Aはアクション)。VacancyテーブルとActionテーブルでチェック制約を使用して、レコードに適用されるStatusIDがそのエンティティタイプに適切であることを確認します。