0

私はいつも外部キーで立ち往生しているので、バグ追跡システムのどこに外部キーを置いておくべきかについて質問があります。バグ追跡システムでは、バグには常に単一のステータスがあり、少数のステータスしか存在しません (オープン、調査中、解決済み、承認待ち)。そのため、各ステータスには多くのバグが関連付けられています。私の仮定では、外部キーは Status テーブルの 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

はい、あなたはその仮定で正しいです。各バグが 1 つのステータスしか持たない限り、そのテーブルへの外部キーを含めることができます。

于 2009-05-22T22:15:35.260 に答える
1

あなたの仮定は正しいです。さらに重要なのは、関係 (One-Many/One-One/Many-Many) がどのテーブルが主キー テーブルで、どれが外部キー テーブルであるかを決定していることです。

この場合、Status テーブルには明らかに FK リレーションシップの主キーが含まれています。逆の場合、各ステータスはステータス テーブルに存在する前にバグ テーブルに存在する必要がありますが、これは明らかに意図したものではありません。

于 2009-05-22T22:16:34.340 に答える
0

はい、これは正しいでしょう。これを考える方法は、バグにはステータスがあるということです。特定のステータスを持つ多くのバグがあります。

于 2009-05-22T22:16:14.853 に答える