基本邮件系统的设计数据库

时间:2016-02-10 13:41:05

标签: mysql sql database-design

我正在尝试创建一个简单的邮件应用程序,这就是我需要它:收件箱,发件箱,已发送邮件,回复,删除邮件,是否已阅读邮件...

我阅读了一些关于邮件系统的解决方案,但似乎它对我来说不够清晰(和/或某些解决方案提供的比我需要的更多)......

这是我的尝试:

CREATE TABLE Messages(
    msg_id  INT NOT NULL AUTO_INCREMENT,
    from_id INT NOT NULL,
    to_id   INT NOT NULL,
    subject VARCHAR(250) NOT NULL,
    body    VARCHAR(1024) NOT NULL,
    parent  INT NOT NULL,
    date    DATETIME NOT NULL,
    read    TINYINT NOT NULL default 0
    deleted TINYINT,
    --PKs & FKs
);
  • 回复的父列。
  • 删除列接受三个值default null,1和0,null表示没有删除邮件,0表示发件人从发件箱删除邮件,1表示收件人删除邮件从他的收件箱

我需要知道是否有更好的解决方案...... (我正在使用PHP / Mysql)

被修改

我再次考虑过这个问题,我认为我找到了更好的解决方案:

create table messages(
id int not null auto_increment,--pk
subject varchar(250) not null,
body varchar(1024) not null,
date datetime not null,
parent_msg int,--fk to messages.id
);

create table sent(
msg_id int not null,--fk to message.id
sender int not null,--fk to user.id
delete tinyint not null default 0
);

create table received(
msg_id int not null,--fk to message.id
receiver int not null,--fk to user.id
delete tinyint not null default 0,
read tinyint not null default 0
);
  • 用户可以使用更多选项:将邮件移至垃圾箱或永久删除邮件
  • 如果用户将邮件移至垃圾箱,我们只需将删除设置为true,如果他永久删除邮件,我们会从表中删除相关的行(已发送或已接收)。
  • (如果发件人和收件人永久删除了msg,那么我们会从邮件表中删除它。)

0 个答案:

没有答案