主キーを参照する外部キーにPostgreSQLデータベースでNOT NULL制約が必要ですか?
データベースは非常に標準化されており、非常に大きくなります。上記のクエリが不要な場合、クエリをさらに遅くする特別な制約を追加することは望ましくありません。PKを参照する外部キーにNOT NULL制約が必要ですか?
答えて
あなたはそれが価値を持っている必要がある場合、それがNULLでない作る、それがNULL可能にする、その後、そのテーブルのFK列に不明を表すことができるようにしたい場合。
あなたがnullのFK値の参照テーブルに必要な数だけレコードを持つことができます。ユニーク制約は、参照テーブル(FKがある場合)の行にない参照テーブル(PKがある場合)の行にあります。
これは正しいです。別の言い方をすると、それは1:Nの関係か0:Nの関係かをモデル化するかどうかによって異なります。すなわち、関係は任意であるか? –
1:1の関係。私が取り組んでいるテーブルはブリッジテーブルです。 – WolfmanDragon
それが1:Nならば、FK列はNot Null制約を持つべきです(SHOULD)。 –
主キーは一意である必要があり、理想的には、同時実行の問題を制限するために、データベースによって選ばれるべきで、そう、それが一意であることができますが、1つのレコードに対して、他のすべてのレコードが値を持っている必要があります。
そうでない場合は、どのように複数の一致がある場合は、この外部キーが関連どの行知っているのだろうか?
ので、新しい街で述べたように、NULLが有効である必要がありますが、1つのレコードに対して、一意性として大きな問題になります。
編集:おっと、ご質問を誤解しました。私が前に外部キーにnullを入れているが、あなたはカスケードは、例えば削除持っている場合は、NULL値を持つ主テーブルのキーを持っていない限り、NULLが、動作しません
。
OPは_FOREIGN_キーの "not null"制約について質問していました – ChssPly76
- 1. 外部キー制約
- 2. 自己参照外部キー
- 3. SQLの外部キー制約
- 4. Nullable外部キー制約
- 5. 1:1外部キー制約
- 6. デバッグ外部キー制約エラー
- 7. エラー外部キー制約
- 8. 外部キーの制約がない「キー」とは何ですか?
- 9. MySQLクエリプライマリキーを参照する外部キー
- 10. sqlite、外部キー参照をカウントする
- 11. Linqが参照する外部キー参照データ
- 12. プライマリキーフィールドから同じテーブルのプライマリキーを参照する外部キー制約を作成する理由
- 13. 外部CSS参照のサポートが必要です
- 14. 同じ列の外部キーの参照
- 15. 外部キーの参照技術キー
- 16. Hibernateコード生成外部キー参照オブジェクト
- 17. 外部キー参照、無効なテーブル
- 18. MySQLの外部キーの参照
- 19. Hibernateツール:外部キーは、参照される主キーと同じ列数を持つ必要があります
- 20. 外部キー制約の問題
- 21. EF外部キー制約とリポジトリパターン
- 22. MySQLの外部キー制約の混乱
- 23. は、外部キー制約文の
- 24. SQLite - 外部キーの制約-Is 5
- 25. トランザクションのmysql外部キー更新制約?
- 26. 外部キー制約の問題
- 27. SQLエラーの外部キー制約
- 28. Oracleの制約/外部キー情報
- 29. SQLiteの外部キーの制約
- 30. 複合外部キー制約の作成
アプリケーションのスピードは正確性よりも重要ですか?あなたは、ヌルでないチェックの費用を認識しません。あなたの質問に対する答えは「いいえ」ですが、わかっている制約があればそれを指定します。 –