
面接官:主キー(Primary Key)/ 外部キー(Foreign Key)について説明してください。
私:主キーは、テーブル内の各行を一意に識別するためのカラムまたはカラムの組み合わせです。重複した値を持つことは許されず、NULL値も許容されません。外部キーは、別のテーブルの主キーを参照するカラムです。これにより、テーブル間のリレーションシップを確立し、データの整合性を保ちます。
以前のプロジェクトで、顧客情報を管理するテーブルと注文情報を管理するテーブルがありました。顧客テーブルの`顧客ID`を主キーとし、注文テーブルの`顧客ID`を外部キーとして顧客テーブルを参照するように設計しました。これにより、注文情報から顧客情報を簡単に参照できるようになり、データの整合性が向上しました。 また、顧客情報を削除する際には、その顧客に関連する注文情報が存在するかどうかを外部キー制約によってチェックし、データの不整合を防ぐことができました。
現役エンジニアによる深掘り解説
メリット
データの整合性: 外部キー制約により、参照整合性を保ち、関連するデータが常に有効な状態であることを保証します。
データの関係性の明確化: 主キーと外部キーを使用することで、データベース内のデータの関係性を明確にし、データの理解と管理を容易にします。
検索効率の向上: 適切に設定された主キーと外部キーは、インデックス作成を容易にし、クエリのパフォーマンスを向上させます。
デメリット
パフォーマンスへの影響: 大量のデータに対して外部キー制約を適用すると、挿入、更新、削除のパフォーマンスが低下する可能性があります。
複雑性の増加: テーブル間のリレーションシップが複雑になるほど、データベースの設計と管理が難しくなります。
柔軟性の低下: 外部キー制約は、テーブル間の依存関係を強化するため、データベースの構造変更が難しくなることがあります。
⚠️ 面接突破のワンポイント
- 「主キーと外部キーの役割を、身近な例え話を使って説明できますか?」と聞かれることを想定しましょう。(例:書籍のISBNコードと図書館の貸出記録の関係など)
- 「データベースの正規化において、主キーと外部キーがどのように役立つか説明できますか?」と聞かれることを想定しましょう。


