将信息/电子邮件地址存储为列中的csv列表?

时间:2014-01-03 19:59:40

标签: mysql sql sql-server oracle

我在考虑将电子邮件存储为表格列中的csv列表。这将由我的代码使用,该代码将提取电子邮件ID,然后向他们发送电子邮件。

我也将SMTP服务器信息存储在同一个表中。对于每一行,我都有一个起始地址,几列用于smtp服务器信息,最后一个地址用于将电子邮件ID存储为csv。

为什么不应该这样做?

1 个答案:

答案 0 :(得分:3)

尊敬的是,这是一个令人惊讶的坏主意。不要这样做。如果你这样做,抱歉。我知道,因为我已经做到了。当我这样做时,这似乎是一个很好的简化,但我错了。

如果将某种垃圾存储在需要使用子字符串或正则表达式处理进行处理的列中,您将系统地击败任何RDBMS系统的最重要目的:快速搜索和更新的能力。

花点时间做正确的事。创建一个email表。许多系统不允许复制电子邮件,但其他系统则允许复制。如果您的系统不允许复制,请使用此表格布局。

  email_address    varchar(255)   primary key
  user_id          reference to id number in your user table (guessing it's a user)
  user_order       a small integer for the 1st, 2nd, 3rd, email etc.

在(user_id,user_order)

上放置复合索引

如果您的系统允许电子邮件重复,请使用此表格布局

  user_id          reference to id number in your user table 
  user_order       a small integer for the 1st, 2nd, 3rd, email etc.
  email_address    varchar(255)  

您的主键是复合键(user_id,user_order)。您还应该在email_address上添加索引,以便找到特定的索引。

这些表中的任何一个都可能还需要一个名称字段,因为许多电子邮件地址的结构如下:

           "Neuman, Alfred E." <aen@madmag.com>

有关更多示例,请参阅RFC822的附录A.