我目前正在完成一个 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
- 附件名称 - varchar
- 文件类型 - varchar
- 内容 - mediumblob
- 代码 - 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 行中吗?对不起,如果我不清楚。
把它做成一张桌子并避免这个问题会有什么缺点吗?