名称和电子邮件地址的单独表格?

时间:2012-04-27 15:27:54

标签: database database-design relational-database

自从我开始研究数据库以来,我一直在做出最初的决定。我在辩论是否需要一个单独的电子邮件地址表。我的数据库如下所示:

people(id, first_name, last_name, email)
addresses(id, address, street, city, state, zip, latitude, longitude)
addresses_people(id, person_id, address_id)
phone_numbers(id, person_id, phone_number, type)

我认为我不需要单独的电子邮件地址表,因为我只想要一个人,无论他们有更多。我似乎遇到的问题是有些人不会有电子邮件地址。我经常会把孩子存放在人员表中。现在看来,如果我将电子邮件地址放在一个单独的表中以避免我将拥有的数千个空电子邮件字段,那么设计似乎会更好。

现在改变这个是一个很大的麻烦,因为应用程序已经在某种程度上已经投入生产,但现在改变它而不是从现在开始的一两年将会成倍地增加。将电子邮件更改为另一个表是否值得一两天?

2 个答案:

答案 0 :(得分:3)

在我看来,你过度工程了。可选的email字段很好。实际上有一个单独的表可能会带来更大的开销。

如果您希望用户拥有多个电子邮件,则单独表格的唯一原因是建立1-N关系模型。

答案 1 :(得分:1)

我相信没有必要改变它。连续一些字段是空的并不是大多数时候的大问题。事实上,它在大多数数据库中很常见。数据库的设计应该主要取决于您尝试建模的对象,而不是仅仅出于存储原因而将事物分成表,除非您有严重的存储限制或其他情有可原的情况。

请参阅Database design - empty fields,这也为您提出了很多问题。