33

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

これは外部キーである必要がありますか?短所/短所は何でしょうか?

4

4 に答える 4

32

はい。孤立(親のないエントリ)がないことを確認します。使用法に応じて、カスケード削除を定義すると、親が削除されると、そのすべての子も削除されます。

欠点は、他の外部キーと同じように、パフォーマンスがわずかに低下することです。

于 2008-10-29T11:40:55.807 に答える
14

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

外部キーに関連する利点をお楽しみいただけます:

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

短所:

  • 外部キーを定義すると、一括操作の実行が困難になる場合があります。
  • 多分それはより多くのディスク使用量とわずかなパフォーマンスの低下を意味します。
于 2008-10-29T11:43:34.630 に答える
6

はい、そうすべきです。

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

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

本当のデメリットは考えられません。

于 2008-10-29T11:43:39.077 に答える
4

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

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

于 2008-10-29T11:37:41.990 に答える