0

我总是卡在外键上,所以我有一个关于外键应该驻留在错误跟踪系统中的位置的问题,在这个系统中,错误在任何给定时间都有一个状态,而只有少数状态存在(打开,正在调查,已解决,待批准)。所以每个状态都有很多与之相关的错误。我的假设是外键应该作为引用状态表中 id 列的 status_id 列驻留在 Bug 表中。这是一个安全的假设吗?

TABLE:
    Bug
    id integer
    desc string
    status_id integer fk

    Status
    id integer
    desc string

RAILS MODEL:
    Bug
    has_one :status

    Status
    has_and_belongs_to_many :bugs
4

3 回答 3

3

是的,你的假设是正确的。只要每个 Bug 只有一个状态,您就可以将外键包含到该表中。

于 2009-05-22T22:15:35.260 回答
1

您的假设是正确的,更重要的是关系(一对多/一对一/多对多)决定哪个表是主键表,哪个是外键表?

在这种情况下,Status 表清楚地包含了 FK 关系的主键。如果反过来,则每个状态都必须先存在于 Bug 表中,然后才能存在于 Status 表中,这显然不是有意的。

于 2009-05-22T22:16:34.340 回答
0

是的,这是正确的。考虑这一点的方法是您的错误具有状态;任何给定状态都有许多错误。

于 2009-05-22T22:16:14.853 回答