邮件的Mysql Relation DB

时间:2014-01-18 14:18:27

标签: mysql database-design

我想为PHP Mailer App创建一个数据库,该程序将允许用户登录,一旦用户登录系统,他们就可以编写发送到:电子邮件,主题,从中选择HTML模板表格下拉菜单菜单。我有一个gd理解如何完成这些,但因为我不太喜欢设计数据库我决定在这里寻求帮助。

所以我确认了3张桌子:

Users[id, firstname, lastname, email, password] 
Message[id, send_to, subject, template_used, from, date, ip_address] 
Template[id, temp_name, temp_html].

我正在努力处理关系数据库概念,但这就是我所看到的:

用户1 .. * ----------- 1 .. *消息,消息1..1 ----------- 1..1模板, 模板1..1 -------- 1 .. *用户

不确定这些关系,如果用户和消息之间的关系是正确的,这是一个问题,其中两个表是1 .. * .....?

1 个答案:

答案 0 :(得分:0)

关系模型中的一个好的数据库要求表至少符合第三个规范化规则(3N)。请阅读关于1N 2N 3N的内容。现在,就是说,现有的关系应该减少到(一个到许多)。如果你期待一个美妙的RD,那就不会有很多很多。 让我们分析用户与消息表的关系: 情况1: 一个用户可以有很多消息,即(用户----消息)----(一对多) 一条消息可以用于许多用户,即(消息-----用户)-----一对多 这意味着向用户发送的消息具有多对多的关系。通过规范化规则,这是不正确的(为了参照完整性)。 这可以通过引入另一个充当中介的表来调用它(messageuser)来避免。该表将包含消息外键和用户外键的主键,因为它是主键,因此是复合键。 因此,我们注意到了什么:

(图:简单插图 - 不标准) - 我无法上传图片,以便按照网站的规则和政策向您展示。

我们现在有三个表,每个表有两个关系,每个表的形式为(一对多)。 即用户到usermessage(一个用户有一条带有他的id的消息)和消息给用户(一个消息发送给一个具有特定id的用户)。 这不是很好。