I have a table in my database that holds status names and descriptions (called Status). I have two other tables, VacancyRequest and ActionRequest, each representing a different type of entity but with each having its own status. The possible statuses of one entity do not necessarily match the possible statuses of the other entity.
In order to maintain integrity, which is the better approach?
Create two additional tables, VacancyRequestStatus and ActionRequestStatus, each with one column -- StatusID. These two tables would contain only the StatusIDs applicable to their respective entity type. Then, create a foreign key relationship between the Vacancy and Action tables and their respective status tables. Each status table would have an FK back to the main status table.
Add a column to the Status table to indicate the entity it applies to (V for vacancy, A for action). Use check constraints on the Vacancy and Action tables to ensure that any StatusID applied to a record is appropriate for that entity type.
Since Action Status and Vacancy Status are not linked in any way, the first method is more straightforward.