我正在尝试复制一个电子邮件服务提供商,在那里可以存储电子邮件,也可以根据订户发送电子邮件。我正在关注atm的数据结构,但我忍不住想我可能做错了什么。
如图中所示,指向订户、列表和订户列表关系。我正在尝试实现。。
订阅者可以是许多列表的一部分,但一个列表可以容纳许多订阅者。
这个图表对这件事有意义吗?
谢谢
最佳答案
我觉得不错。因为订阅服务器和列表之间存在多对多关系,所以需要一个映射表(subscriberlist)来保存这些关系。
如果你问的是整个急诊室,很难说这是不是你需要的。对于拥有多个列表的订阅者和拥有多个订阅者的列表,您这样做是正确的。
编辑:我不确定为什么订阅服务器表中有一个名为Lists的列。SubscriberList表应该保存订阅服务器和列表之间的所有映射,并且尝试在任何其他地方复制这些数据都会导致非规范化问题。
EDIT2:在这种多对多的关系中,我经常想到的典型例子是用户和角色。在任何复杂的web应用程序中,都有很多用户和多个角色。允许用户拥有多个角色(每个角色拥有多个用户)的唯一方法是创建一个映射表,如您在ERD中所示。
在这篇文章的三分之一的篇幅中,我们可以在“多对多关系”的标题下找到一个简短而切中要害的解释:http://www.deeptraining.com/litwin/dbdesign/FundamentalsOfRelationalDatabaseDesign.aspx