Postgresql

為電子郵件活動創建表格的最佳方法是什麼?

  • October 21, 2015

我有email_sent欄位表:

  • ID
  • 使用者身份
  • 模板名稱
  • sent_at
  • 打開的點擊次數

現在我需要保存為每封電子郵件發送的數據。我有幾個具有不同數據的廣告系列。例如,推薦給英語老師打電話的活動,如果使用者在到期日之前給老師打電話,服務將退還 10% 的費用。因此,對於每封電子郵件,我都需要保存teacher_id 和過期日期。我有幾種方法。

首先創建call_discount包含欄位的表:email_sent_id、teacher_id、expire。

其次創建email_sent_data帶有欄位的表:id、fieldname、value 和email_sent_to_data帶有欄位的表:email_sent_data_id、email_sent_data。但是我將擁有大量數據,並且很難做出正確的索引。

第三個用欄位創建表email_sent_data:id,teacher_id,expire。將列添加email_sent_data_id到表中email_sent。如果我有新的campaing,我會在email_sent_data.

我有postgresql 9.1。所以我不能使用 JSON。

沒錯,Postgres 9.1沒有json/jsonb數據類型。但是有一個額外的模組hstore提供同名的數據類型。

hstore自 Postgres 8.3 以來一直在核心版本中(它非常成熟)。對於僅文本數據並且沒有嵌套,它與 一樣好json,如果不是更好的話。(jsonb介紹了一些新的糖果。)

如果您只有幾十個稀疏填充的列,我也會考慮寬行,其中許多列只是 NULL。NULL 儲存在 Postgres 中非常便宜。

您還可以使用 EAV(實體屬性值)設計。討論陷阱的相關答案:

但請考慮先升級到目前版本的 Postgres。Postgres 9.1 於 2016 年 9 月達到 EOL。

引用自:https://dba.stackexchange.com/questions/117432