外部キーを設定するべきか? | バグリーマート

バグリーマート

プログラミングのことや、楽器のことなど


テーマ:
mysqlやpostgresqlでDB設計をする際に外部キー制約のあるものに出くわしました。
私の経験上はあまり外部キーは設定しないことがほとんどです。
マスター系のデータを入れ替えたりするのがめんどうですし。。。

mysqlのサイトにメリットデメリットが記載されていました。

メリット

・関係が適切に設計されている場合、外部キー制約によって、プログラマがデータベースで不整合を引き起こすことが少なくなる。
・連鎖更新および削除を使用すると、クライアントコードを単純化することができる。
・適切に設計された外部キールールは、テーブル間の関係の記述に役立つ。

デメリット

・キー関係を設計する上で犯しやすい間違いによって、循環ルール、連鎖削除の不適切な組み合わせなどの深刻な問題が生じることがある。
・データベースレベルでの余分なチェックによって、パフォーマンスに影響が生じる。そのため、一部の主要な商用アプリケーションでは、アプリケーションレベルでこのロジックがコード化されている。
・DBA にとって、個々のテーブルのバックアップやリストアが非常に困難になり、場合によっては不可能になるような複雑な関係のトポロジを作成することはめったにない。


まあ、今の開発の手順からいって、外部キーなんかかけたら、ちょーめんどくさいです。
いろいろ調べてたら、外部キー制約かけない人が多いみたいです。

かけない理由を聞かれたら、上のデメリットを応えればOK

とよきさんをフォロー

ブログの更新情報が受け取れて、アクセスが簡単になります

Ameba人気のブログ

Amebaトピックス