私は現在、電子メールを解析し、そのような構造のデータベーステーブルに挿入する PHP スクリプトを完成させているところです -
ユーザー テーブル
- userId - int - auto_increment - PK
- メール - varchar
メールテーブル
- emailId - int - auto_increment - PK
- userId - int - FK
- attachmentId - int - FK
- 本体 - varchar
- 件名 - varchar
アタッチメント表
- attachmentId - int - auto_increment - PK
- attachmentName - varchar
- ファイルタイプ - varchar
- コンテンツ - ミディアムブロブ
- コード - varchar
私の問題は、電子メールを解析した後、外部キーの関係が正しいことを確認するにはどうすればよいかということです。私の最初のアプローチは、実行することだけでした:
INSERT INTO users (email) values ('$emailFrom');
INSERT INTO emails (subject, body) values ('$subject', '$body');
INSERT INTO attachments (attachmentName, fileType, content, code) values ('$attachmentName', '$fileType', '$content', '$code');
しかし、これではメール テーブルの FK リレーションシップが処理されないことに気付きました。各クエリを個別に実行し、生成された Id を再クエリして、新しい Id を関連する FK 行に配置するのが最善の方法ですか? 私がはっきりしていない場合は申し訳ありません。
これを 1 つのテーブルにして、この問題を回避することに欠点はありますか?