0

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

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)

我想我不需要单独的电子邮件地址表,因为我只想要一个人,不管他们是否有更多。我似乎遇到的问题是有些人没有电子邮件地址。很多时候,我会将孩子存放在 people 表中。现在,如果我将电子邮件地址放在一个单独的表格中以避免我将拥有数千个空电子邮件字段,这似乎是更好的设计。

现在改变它是一个巨大的麻烦,因为该应用程序已经在生产中,但现在改变它而不是一两年后会成倍地容易。将电子邮件更改为另一张桌子是否值得一两天?

4

2 回答 2

4

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

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

于 2012-04-27T15:31:48.303 回答
1

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

请参阅数据库设计 - 空白字段,这也为您的问题提供了很多启示。

于 2012-04-27T15:32:59.707 回答