2012-07-19 71 views
1

我试图复制一个电子邮件服务提供商,其中可以存储电子邮件,也可以根据订户发送电子邮件。我专注于数据结构atm,但我不禁想到我可能做错了什么。这个ERD有意义吗?

正如您在图中看到的那样,可以看到订阅者,列表和订阅者列表关系。我试图实现..

用户可以是许多列表的一部分,但列表可以容纳许多用户。

这张图在这个问题上有意义吗?

感谢

enter image description here

+0

有具有SubscriberListID没有意义的。你永远不会用它来查找这种关系,你永远不会想要将它作为数据检索。最好只使用SubscriberID和ListID作为主键。 – 2012-07-19 18:47:01

+0

谢谢,我将删除那 – 2012-07-19 19:50:14

回答

2

我看不错。因为订户和列表之间有多对多的关系,所以您需要一个映射表(用户列表)来保存关系。

如果你问的是整个ERD,很难说它是否是你需要的。关于拥有许多用户的列表和列表的订阅者,您正在这样做的方式就是要走的路。

编辑:我不知道为什么你有一个名为列在订户表中的列。 SubscriberList表应该包含订阅者和列表之间的所有映射,并试图在任何其他地方复制此数据以产生非规范化问题。编辑2:我经常想到的这种多对多关系的典型例子是用户和角色。在任何复杂的Web应用程序中,您都有大量的用户和多个角色。允许用户拥有多个角色(并且每个角色拥有多个用户)的唯一方法是创建一个映射表,如您在ERD中所示。

一个不错的简短而中肯的解释能的方式约1/3被发现这篇文章标题为“多到多的关系”下了下来:http://www.deeptraining.com/litwin/dbdesign/FundamentalsOfRelationalDatabaseDesign.aspx

+0

对不起,列表列是从ERD的第一个版本,并没有被删除 – 2012-07-19 18:41:55

+0

这是所有好东西,谢谢澄清 – 2012-07-19 18:46:55

+0

没问题,很高兴我可以帮助。 – 2012-07-19 18:48:45