質問

たとえば、カテゴリの階層を作成するには、同じテーブル内の別のカテゴリを指す「parent_id」列を使用します。

これは外部キーですか?欠点/利点は何ですか?

役に立ちましたか?

解決

はい。孤児(親のないエントリ)がないことを確認します。使用状況によっては、カスケード削除を定義した場合、親が削除されると、そのすべての子も削除されます。

短所は、他の外部キーと同様にわずかなパフォーマンスヒットになります。

他のヒント

はい、そうすべきです。同じデータベース内の別のリレーションのプライマリキーとして機能するデータベースのリレーションに属性がある場合は、FKにする必要があります。

外部キーに関連する利点

  • 関係の適切な設計を想定すると、外部キーの制約により、プログラマーがデータベースに不整合を導入することがより困難になります。
  • データベースサーバーによるこれらの制約のチェックを一元化すると、アプリケーション側でこれらのチェックを実行する必要がなくなります。これにより、異なるアプリケーションが同じ方法で制約をチェックしない可能性がなくなります。
  • カスケード更新とカスケードを使用すると、アプリケーションコードを簡素化できます。
  • 適切に設計された外部キールールは、テーブル間の関係を文書化するのに役立ちます。

欠点:

  • 外部キーを定義すると、一括操作を実行するのが難しくなる場合があります。
  • ディスク使用量が増え、パフォーマンスがわずかに低下する可能性があります。

はい。

利点(外部キーに関して):

  • parent_idがテーブルの実際の行を参照することを保証する
  • 子を持つ親の誤った削除を防止するか、削除が子を削除するためにカスケードすることを保証します
  • オプティマイザーが使用できる情報を提供します

実際の欠点は考えられません。

はい、外部キーにする必要があります。

利点は、冗長性の少ない優れたデータモデルになります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top