データベースの2つ以上のテーブルのヒモづけ

Aipoのメッセージ機能などでは、外から見るとひとつの機能でもデータベースのテーブルリストをみると、「メッセージ自体」「既読機能の管理」「メッセージに添付されたファイル」のテーブルなど、いくつかのテーブルが連携していることがあります。

この場合、メッセージの削除を行いたいときにSQLを3つ作成し、送信する必要があるように思えますが、テーブルの定義のときに他のテーブルとヒモ付をおこなうことで、削除などの際に簡単になります。

具体的には、「既読」を管理するテーブルこのようになっています。

  CONSTRAINT eip_t_message_read_message_id_fkey FOREIGN KEY (message_id)
      REFERENCES eip_t_message (message_id) MATCH SIMPLE
      ON UPDATE NO ACTION ON DELETE CASCADE

eip_t_messageのmessage_idが削除された場合には、eip_t_message_read_message_idの列が削除されるようになっています。