我的数据库中是否应该有一个主电子邮件地址表?

use*_*841 0 database database-design

我有一个数据库,其中有几个表有一列email用于存储电子邮件地址.因为这是用于调查,所以很多值都是相同的,更可能在名称,地址等方面相同.

我应该只有一个主Emails表,然后是一个email_id列吗?这样我只存储一次电子邮件字符串,而不是多次存储在表中.但是,如果我想确定我只存储唯一的电子邮件,那么索引检查字符串的唯一性的长度是不是有一些限制,因此我可以存储多个长电子邮件地址的副本?

在调查数据库中,我们存储他们提交的电子邮件地址.如果他们选择加入邮件列表,我们会将这些唯一的(每个成员身份一封电子邮件)存储在邮件列表成员资格表中,因此该表中可能有多个相同的地址,具体取决于他们加入的俱乐部数量.现在我正在添加一个表来跟踪退回电子邮件,因为这是电子邮件地址的属性,而不是调查或邮件列表成员资格.我在想,"这是很多字符串连接!"

这是"One True Lookup Table"的形式吗?

S.L*_*ott 6

我应该只有一个主电子邮件表,然后是一个email_id列?

它实际上并不重要.

索引检查字符串的唯一性的长度是不是有一些限制,因此我可以存储多个长电子邮件地址的副本?

不,没有限制.独特意味着独特,而不是"某些随机限制".

我在想,"这是很多字符串连接!"

所以?字符串连接并不是非常慢.如果您可以证明这些字符串连接是应用程序中最糟糕的瓶颈,那么用整数FK替换字符串连接可能会加快速度.

直到你可以证明这些字符串连接是你最糟糕的问题,不要担心它们.

担心如何正确使用电子邮件地址的业务规则.在您能证明自己遇到问题之前不要进行优化.