2012-07-19 45 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

相關問題