【问题标题】:Relationship vs Check Constraint关系与检查约束
【发布时间】:2011-06-23 02:49:35
【问题描述】:

我的数据库中有一个表,其中包含状态名称和描述(称为状态)。我还有另外两个表,VacancyRequest 和 ActionRequest,每个表代表不同类型的实体,但每个表都有自己的状态。一个实体的可能状态不一定与另一实体的可能状态相匹配。

为了保持完整性,哪种方法更好?

  1. 创建另外两个表,VacancyRequestStatus 和 ActionRequestStatus,每个表都有一列 -- StatusID。这两个表将仅包含适用于其各自实体类型的 StatusID。然后,在 Vacancy 和 Action 表及其各自的状态表之间创建外键关系。每个状态表都有一个返回主状态表的 FK。

  2. 在状态表中添加一列以指示它适用的实体(V 代表空缺,A 代表行动)。对 Vacancy 和 Action 表使用检查约束,以确保应用于记录的任何 StatusID 都适用于该实体类型。

【问题讨论】:

    标签: database-design constraints relational-database data-integrity


    【解决方案1】:

    由于操作状态和空缺状态没有任何联系,第一种方法更直接。

    【讨论】:

    • 我就是这么想的,但我最近听到了很多关于“过度规范化”的说法,我担心我可能会涉足这些领域。
    • 这两种状态值是不同的东西,所以需要不同的表。
    猜你喜欢
    • 2015-09-05
    • 2013-08-26
    • 2011-06-10
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 2011-01-28
    • 2014-03-20
    • 2023-03-13
    相关资源
    最近更新 更多