邮件/邮件架构问题

ran*_*ndy 2 database email messaging schema

我正在创建一个包含电子邮件和现场消息的通信模块.4个问题:

1)存储邮件时,它可以属于文件夹(垃圾邮件,垃圾邮件,收件箱,发件箱等).这些单独的表或1个表只有一个"文件夹"列,它是FK到"文件夹查找表"吗?

2)在hotmail上,用户可以创建x个自定义文件夹,以便如何在数据模型中表示?我可以说inbox = id 1,outbox = id 2等,但对于自定义文件夹,如"度假电子邮件","工作电子邮件"等,我不知道如果消息驻留在该文件夹中,如何在数据模型中显示.

3)一封电子邮件发送给多个人.这是否意味着我需要每个用户发送1行?

4)最后,消息有附件.我假设这意味着一个单独的附件表,FK链接到哪个表用于存储消息?

Ric*_*son 8

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)

  • 我正在使用WWW SQL设计器 - 这是一组javascript文件; http://code.google.com/p/wwwsqldesigner/.它的功能非常好. (4认同)