2013-01-09 56 views
0

什麼是存儲電子郵件列表數據庫的已發送電子郵件的有效方式?我在解決這個問題時遇到了一些麻煩。電子郵件列表數據庫設計

眼下,簡化我有這樣的事情:

Lists: 
ID, 
Name 

Subscribers: 
ID 
Email 
Name 

ListSubscribers: 
ID 
SubscriberID 
ListID 

Messages: 
ID 
Title 
Content 
ListID 

到目前爲止好...問題是搞清楚什麼是存儲發送和發送電子郵件,以及一個有效的方法郵件發送狀態。

例如,我可能有數百個列表,每個列表擁有數以萬計的用戶。要知道每個郵件的狀態,我將不得不細節存儲每個消息:

MessageStatus: 
ID 
MessageID 
SubscriberID 
Status (processing, sent, soft bounce, hard bounce) 

列表和成千上萬的用戶屈指可數這可以膨脹到數百萬條消息的,在短短几天。

有沒有更有效的方法來做到這一點?

+0

恰巧,我最近爲我編寫和維護的程序添加了郵件列表功能;我問客戶她是否想跟蹤電子郵件的內容以及他們發送給誰。她想出了一個簡單的答案:向客戶發送每封郵件的副本。這樣,客戶就知道每封電子郵件的內容以及發送給誰,而無需將其存儲在數據庫中。 –

回答

1

既然你問這個問題,我會假設由MessageStatus表佔用的空間量將是你的問題。然而,你應該挑戰這個假設。

既然你需要管理的空間爲MessageStatus,你可以從一個工作表的角度進行操作而非審計日誌 - 當然,除非你需要有一個審計日誌一些原因。

要做到這一點,請按照您的定義使用您的MessageStatus表,除非當記錄達到「發佈」狀態時,刪除它而不是更新它。這樣,您只有儘可能多的記錄,還有尚未發送的電子郵件。

1
  • 列表(表): ListID(PK), LISTNAME

  • 訂戶(表): SubscriberID(PK), ListID(FK), 姓, 姓氏, EmailAddress的

  • 電子郵件(表): EMAILID(PK), ListID(FK), 主題, 內容, SendDate

+0

這種設計可能存在問題:雖然知道電子郵件的內容以及發送給哪個列表,但在發送電子郵件的日期,不一定知道誰是該列表的成員。 –

相關問題