削除する順番を逆にしてはいけない理屈がわかりません

順番を逆にすると、データの整合性が保てなくなってしまいます。
2022年2月23日
ユーザー

他の方の質問で posts テーブルと comments テーブルの削除を逆にしたらいけないという内容がありましたが、 comments テーブルは posts テーブルを必要としていて、 posts テーブルは commentsテーブルを必要としていないという理屈はわかるのですが、上から処理されるので、問題ないのでは?と考えてしまいました。(実際に実行するとエラーになりますが。)

どういう流れで処理を行われているのかご教示いただけますでしょうか。

私の考え
(1) comments テーブル、 posts テーブルが存在しているとエラーになる為すでに存在している場合削除

DROP TABLE IF EXISTS posts;
DROP TABLE IF EXISTS comments;

(2) posts テーブルとそれに対応する各カラムの作成及び主キーの設定。
comments テーブルとそれに対応する各カラカラムの作成及び主キーの設定。また、外部キーの設定。

CREATE TABLE posts (
  id INT NOT NULL AUTO_INCREMENT,
  message VARCHAR(140), 
  PRIMARY KEY (id)
);

CREATE TABLE comments (
  id INT NOT NULL AUTO_INCREMENT,
  post_id INT,
  comment VARCHAR(140), 
  PRIMARY KEY (id),
  FOREIGN KEY (post_id) REFERENCES posts(id)
);

(3) 値の挿入

INSERT INTO posts (message) VALUES 
  ('post-1'),
  ('post-2'),
  ('post-3');

INSERT INTO comments (post_id, comment) VALUES 
  (1, 'comment-1-1'),
  (1, 'comment-1-2'),
  (3, 'comment-3-1');

(4) postscomments テーブルのすべてを抽出(抽出した際にエラー確認)

SELECT * FROM posts;
SELECT * FROM comments;

この回答を見るにはプレミアムプランへの登録が必要です

プレミアムプランとは?

このレッスンの質問と回答(3)