我想将用户的地址(国家/地区)存储到数据库中。该数据库是欧洲应用程序的核心。我有一个国家表,每个国家都有一个表,一个表用于地区,一个表用于城镇/城市。
那么,将用户地址存储到数据库中的最佳方法是什么?
我可以为每个国家/地区创建不同的表格,并使用“ idUsers”和“ idTown”列将其重命名为“ users_italian”,“ users_french”,然后将它们与相应的城镇表关联。很简单,但是这种模式不能说服我,因为会有太多的表。
或者,我可以使用“ idUsers”和“ idCountry”(外键)创建一个表“ users_country”,并且应该将区域和国家/地区存储到另一个表“ users_address”中,并使用“ idUsers”,“ region”和“ town”但要使用字符串日期类型,例如:
用户(idUsers:1,电子邮件:useremail @ mail.com,psw:secrethashedpsw,令牌:secrettoken)
国家(idCountry:1,国家/地区:“英国”)
users_country(idUsers:1,idCountry:1(参考英国))
users_address(idUsers:1,区域:“ England”,镇:“ London”,邮政编码:SW1H 0TL(示例))
同样,这种模式不能说服我,因为数据库不会被规范化,但是实现起来很简单!并且查询选择它也很简单。我可以为“ users_region”,“ users_town”和“ users_zip”创建不同的表,但是使用字符串存储并不能说服我。
有人可以帮助我吗?
最佳答案
每个国家一张桌子?没有!
有一个users
表。它将有
计划A:地址以及城市,地区和国家。
方案B:链接到(标准化的)城市表的地址和ID。 Cities
包含城市+地区+国家。
例如,对国家进行规范化会增加复杂性而不会带来任何好处。