关系与检查约束
我的数据库中有一个表,其中保存状态名称和描述(称为“状态”)。我还有另外两个表,VacancyRequest 和 ActionRequest,每个表代表不同类型的实体,但每个表都有自己的状态。一个实体的可能状态不一定与另一实体的可能状态匹配。
为了保持诚信,哪种方法更好?
创建两个附加表:VacancyRequestStatus 和 ActionRequestStatus,每个表有一列 - StatusID。这两个表将仅包含适用于其各自实体类型的 StatusID。然后,在 Vacancy 和 Action 表及其各自的状态表之间创建外键关系。每个状态表都会有一个返回主状态表的 FK。
向“状态”表添加一列以指示其适用的实体(V 表示空缺,A 表示操作)。对“空缺”和“操作”表使用检查约束,以确保应用于记录的任何 StatusID 都适合该实体类型。
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.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
由于“行动状态”和“空缺状态”没有以任何方式链接,因此第一种方法更简单。
Since Action Status and Vacancy Status are not linked in any way, the first method is more straightforward.