将用户地址存储到欧洲数据库的最佳方式?

时间:2015-04-11 20:12:03

标签: mysql database database-design relational-database

我想将用户的地址(country-region-town)存储到数据库中。该数据库是欧洲应用程序的核心。我有一张国家和国家的表格,我有两张桌子,一张用于地区,一张用于城镇。 那么,将用户地址存储到数据库中的最佳方法是什么?

我可以在foreach国家创建不同的表,并将它们“user_italian”,“users_french”重命名为“idUsers”和“idTown”列,我应该将它们与相应的城镇表连接起来。这很简单,但这种模式并不能说服我,因为表格太多了。

或者我可以使用“idUsers”和“idCountry”(外键)创建一个表“users_country”,我应该将区域和国家记忆到另一个带有“idUsers”,“region”和“town”的表“users_address”中,但是使用字符串日期类型,例如:

用户(idUsers:1,电子邮件:useremail@mail.com,psw:secrethashedpsw,token:secrettoken)

国家/地区(idCountry:1,国家/地区:“英国”)

users_country (idUsers:1,idCountry:1(请参阅英国))

users_address (idUsers:1,地区:“英格兰”,城镇:“伦敦”,邮编:SW1H 0TL(示例))

此模式也不能说服我,因为数据库不会被标准化,但实现起来很简单!而查询选择它也很简单。我可以创建关于“users_region”,“users_town”和“users_zip”的不同表格,但是使用字符串存储并不能说服我。

任何人都可以帮助我?

1 个答案:

答案 0 :(得分:1)

每个国家一张桌子? NO!

拥有一个users表。它会

计划A:地址以及城市+地区+国家/地区。

计划B:地址加上ID链接到(规范化的)城市表。 Cities包含城市+地区+国家/地区。

例如,

规范化国家会增加复杂性而不会增加任何好处。

相关问题