2009-08-29 4 views
1

テーブルの文字列(整数ID、varchar(2)lang)に複合PKがあります。sqlalchemy外部キーを作成しますか?

他のテーブルからのPKのid半分のみにFKを作成します。これは、FKと一致するStringsテーブル(変換)の行が潜在的に多くなることを意味します。私はIDを格納し、参照整合性をDBによって維持する必要があります。

これは可能ですか?もしそうなら、どうですか?

答えて

3

これはwiki

から参照表 の列が参照されるテーブルの主キーまたは他の 候補キーでなければならないです。参照元の列の1つの行の値は、参照元の表の単一の行になければなりません。

は、あなたがこれを持っているとしましょう:

id | var    
1 | 10    
1 | 11   
2 | 10 

外部キーが参照されたテーブルから正確に1行を参照する必要があります。これが通常、主キーを参照する理由です。

あなたの場合、IDを格納していた別のTable1(id)を作成し、カラムをユニーク/プライマリキーにする必要があります。現在のテーブルのidカラムはユニークではありません。あなたの状況では使用できません。したがって、Table1(id - プライマリキー)を作成し、現在のテーブルのidをTable1の外部キーにします 。これで、Table1のidに外部キーを作成することができ、現在のテーブルの主キーは正常です。

+0

ありがとう、その説明は理にかなっています。私はそれをします。 – Eloff