動作しないコードを修正するのではなく、概念を理解しようとしています。
フォーム(親テーブル)とフォームフィールド(子テーブル)の一般的な例を取り上げます。論理的には、フォームフィールドはフォームなしでは存在できないため、これは識別関係になります。
これにより、論理的な関係を技術的NOT NULL
な関係に変換するには、form_fieldテーブルのform_idフィールドを単純化するだけで十分だと思います。(上のスクリーンショットの左側を参照してください。)
ただし、MySQL Workbenchを使用して識別関係を追加すると、form_idはNOT NULL
主キーの一部であるだけでなく、その一部でもあります。(上のスクリーンショットの右側を参照してください。)そして、非識別関係を追加してNOT NULL
も、論理的に適用されるので、実際には識別関係にもなります。
これは私を少し混乱させると思います。また、これまで私は常にidフィールドを主キーとして使用していたという事実もあります。
したがって、識別関係と非識別関係の論理的な概念は理解していますが、技術的な部分は理解していません。
この回答が述べているように、なぜ「外部キーを子の主キーの一部にする「正しい」方法」なのですか?
これらの複合主キーの利点は何ですか?