2009-05-22 8 views
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 

答えて

1

あなたは正しいと思います。関係(One-Many/One-One/Many-Many)は、プライマリキーテーブルと外部キーテーブルのどちらを決定していますか?

この場合、ステータステーブルには明確にFK関係の主キーが含まれています。それ以外の場合は、Statusテーブルに存在する前にBugテーブルに各ステータスが存在する必要がありますが、これは明らかに意図されていません。

+1

"FK関係の主キー"です。 (私の頭を傷つける)。これが私が外来キーが気に入らない理由です。 –

+0

申し訳ございませんが、明快に編集しました。 MSDNはそれをより明確に説明するのに役立ちます:http://msdn.microsoft.com/en-us/library/ms175464.aspx – rmoore

+0

ありがとうございました。 MSDNのリンクは素晴らしいです。 –

3

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

0

はい、これは正しいでしょう。これを考える方法はあなたのバグにはステータスがあることです。任意の状態で多くのバグがあります。

関連する問題