Bri*_*ins 1 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)
Run Code Online (Sandbox Code Playgroud)
我想我不需要一个单独的电子邮件地址表,因为我只想要每人一个,无论他们是否有更多。我似乎遇到的问题是有些人没有电子邮件地址。我经常将孩子存储在 people 表中。现在看来,如果我将电子邮件地址放在单独的表中,以避免出现数千个空电子邮件字段,那么设计会更好。
现在改变这一点是一个巨大的麻烦,因为该应用程序已经在某种程度上投入生产,但现在改变它而不是一两年后会容易得多。是否值得花一两天时间将电子邮件更改到另一张桌子?
在我看来,你的设计过度了。可选email字段很好。实际上,拥有一个单独的表可能会带来更大的开销。
使用单独的表的唯一原因是,如果您希望用户拥有多个电子邮件,则可以对 1-N 关系进行建模。