ran*_*ndy 2 database email messaging schema
我正在创建一个包含电子邮件和现场消息的通信模块.4个问题:
1)存储邮件时,它可以属于文件夹(垃圾邮件,垃圾邮件,收件箱,发件箱等).这些单独的表或1个表只有一个"文件夹"列,它是FK到"文件夹查找表"吗?
2)在hotmail上,用户可以创建x个自定义文件夹,以便如何在数据模型中表示?我可以说inbox = id 1,outbox = id 2等,但对于自定义文件夹,如"度假电子邮件","工作电子邮件"等,我不知道如果消息驻留在该文件夹中,如何在数据模型中显示.
3)一封电子邮件发送给多个人.这是否意味着我需要每个用户发送1行?
4)最后,消息有附件.我假设这意味着一个单独的附件表,FK链接到哪个表用于存储消息?
1和2:文件夹需要是一个实体,关系MessageFolder一对多消息
3:具有UserID,MessageID,Type(发件人,收件人)的MessageUser实体
4:附件的单独表(MessageAttachments).
CREATE TABLE `message`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`author` INTEGER NOT NULL,
`contents` TEXT NOT NULL,
`subject` TEXT NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `messagefolder`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`id_message` INTEGER NOT NULL,
`id_folder` INTEGER NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `folder`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`name` VARCHAR(200) NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `messageattachment`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`fk_message` INTEGER NOT NULL,
PRIMARY KEY (`id`)
);
CREATE TABLE `user`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
PRIMARY KEY (`id`)
);
CREATE TABLE `messageuser`
(
`id` INTEGER NOT NULL AUTO_INCREMENT,
`fk_message` INTEGER NOT NULL,
`type` INTEGER NOT NULL,
PRIMARY KEY (`id`)
);;
ALTER TABLE `message` ADD FOREIGN KEY (author) REFERENCES `user` (`id`);
ALTER TABLE `messagefolder` ADD FOREIGN KEY (id_message) REFERENCES `message` (`id`);
ALTER TABLE `messagefolder` ADD FOREIGN KEY (id_folder) REFERENCES `folder` (`id`);
ALTER TABLE `messageattachment` ADD FOREIGN KEY (fk_message) REFERENCES `message` (`id`);
ALTER TABLE `messageuser` ADD FOREIGN KEY (fk_message) REFERENCES `message` (`id`);
Run Code Online (Sandbox Code Playgroud)