広告スペース(バナー)
🗄️SQL レッスン
データ操作とサブクエリ5▾
構文の基本を深める7▾
応用的な条件・結合7▾
検索とテーブル操作の応用6▾
高度なクエリ技法6▾
集計とデータ整合性6▾
レッスン 49 / 50
FOREIGN KEYでテーブル間の整合性を保とう
このレッスンでは、FOREIGN KEYを使ったテーブル間の整合性の保ち方を学び、存在しないデータへの参照を防げるようになることを目標にします。「SQL FOREIGN KEY 使い方」で調べている方向けです。
FOREIGN KEY(列) REFERENCES 別テーブル(列)を指定すると、その列には「参照先のテーブルに実際に存在する値」しか入れられなくなります。存在しないbook_idで貸出記録を作ってしまう、といったミスを防げます。
サンプルコードでは、loansテーブルのbook_id列にFOREIGN KEY(book_id) REFERENCES books(id)という制約を設定し、事前にPRAGMA foreign_keys = ON;で外部キー制約を有効にしています。存在しない本のIDで貸出記録を作ろうとすると、エラーになる仕組みです。
初心者がよくつまずくのが、SQLiteでは外部キー制約がデフォルトで無効になっている点です。PRAGMA foreign_keys = ON;を実行しないと、FOREIGN KEYを定義していても実際にはチェックが働かないため、この設定を忘れないようにしましょう。
この仕組みを「外部キー制約」と呼び、テーブル間のつながりの正しさをデータベース自身が保証してくれます。アプリケーション側のチェック漏れがあっても、最後の砦としてデータの整合性を守ってくれる重要な機能です。
SQL
OUTPUT / 実行結果
💡 初回実行時はSQLエンジンの読み込みに数秒かかります。
🎯
ここまでできればゴール達成!
テーブル同士の関連を保証する、正しいデータ設計ができるようになります。
テーブル同士の関連を保証する、正しいデータ設計ができるようになります。
広告スペース(バナー)
広告スペース(記事内)