11

重複の可能性:
外部キーを使用する必要がありますか?

usersわかりました、2 つのテーブルがあると仮定しましょうcomments。コメントには列がcomment_made_by_user_idあり、特定のコメントを入力したユーザーを意味します。外部キーとして指定する必要があるのはなぜですか? そうしなくても、まだ機能します。私が知る限り、クエリが高速になるため、主キーを指定します (主キー/インデックスがない場合は、すべての行を調べなければならないのに対し、1 つの行のみを検索する必要があります)。それはちょうど良いコーディングの練習ですか?

4

4 に答える 4

11

外部キーを使用すると、次のようになります。

  1. データの整合性
  2. より高速なクエリ。

ユーザー:
ユーザー ID:

  • 1
  • 2
  • 3

コメント:
ユーザー:

  • 1
  • 2
  • 4 XXX は、4 が users テーブルにないため無効です。

データの完全性に関する詳細については、ウィキペディアをお読みください

于 2012-10-10T23:08:38.597 に答える
8

これにより、データベースにデータの整合性が作成されます。ユーザーを削除すると、別のクエリを使用してコメントを手動で削除するのを忘れると、無効なユーザーにリンクされた多くのコメントが表示されることになります。外部キーを使用すると、ユーザーを削除する (またはユーザー ID を変更する場合のように変更を更新する) ときに、すべてのコメントを自動的に削除するように設定できます。

于 2012-10-10T23:11:47.413 に答える
2

まず、キーの前には制約があります。データベースに1 対多または多対多の関係がある場合、外部キーは非常に便利です。詳細については、参照整合性を参照してください。

また、RESTRICT、CASCADE、SET NULL、NO ACTION などの適切なアクションもあります。ドキュメントでこの情報を読んでください。

したがって、外部キーとデータベース自体が何らかの作業を行うことができます。

于 2012-10-11T08:50:31.437 に答える
0

それを外部キーにすることで、テーブル間の関係を強制します。外部キーがある場合、user テーブルにない user_id を入れることはできません。

于 2012-10-10T23:09:16.960 に答える