use*_*841 0 database database-design
我有一个数据库,其中有几个表有一列email用于存储电子邮件地址.因为这是用于调查,所以很多值都是相同的,更可能在名称,地址等方面相同.
我应该只有一个主Emails表,然后是一个email_id列吗?这样我只存储一次电子邮件字符串,而不是多次存储在表中.但是,如果我想确定我只存储唯一的电子邮件,那么索引检查字符串的唯一性的长度是不是有一些限制,因此我可以存储多个长电子邮件地址的副本?
在调查数据库中,我们存储他们提交的电子邮件地址.如果他们选择加入邮件列表,我们会将这些唯一的(每个成员身份一封电子邮件)存储在邮件列表成员资格表中,因此该表中可能有多个相同的地址,具体取决于他们加入的俱乐部数量.现在我正在添加一个表来跟踪退回电子邮件,因为这是电子邮件地址的属性,而不是调查或邮件列表成员资格.我在想,"这是很多字符串连接!"
这是"One True Lookup Table"的形式吗?
我应该只有一个主电子邮件表,然后是一个email_id列?
它实际上并不重要.
索引检查字符串的唯一性的长度是不是有一些限制,因此我可以存储多个长电子邮件地址的副本?
不,没有限制.独特意味着独特,而不是"某些随机限制".
我在想,"这是很多字符串连接!"
所以?字符串连接并不是非常慢.如果您可以证明这些字符串连接是应用程序中最糟糕的瓶颈,那么用整数FK替换字符串连接可能会加快速度.
直到你可以证明这些字符串连接是你最糟糕的问题,不要担心它们.
担心如何正确使用电子邮件地址的业务规则.在您能证明自己遇到问题之前不要进行优化.