我开发PHP与MySQL的&一个网站,用户可以注册。在注册表格中,他们需要填写国家,州和城市。我想知道是否将它保存到我的数据库是个好主意。我很困惑,因为Facebook,谷歌和其他人都有自动完成表单,这些输入标签暗示了你的国家,州,甚至城市。有什么更好? DataBase与否的国家,州和城市?
回答
您不应单独保存所有三个,如country_id
,state_id
和city_id
。原因是这是多余的信息。一个城市隐含属于属于一个国家的国家。你没有被保存为单独的值获得的任何信息,并且只引入搞乱了数据(因为你可以日本,华盛顿,柏林保存为一组,这是无效的和不一致的信息)的风险。
你应该在数据库中创建一个分层树。有一个父母国家的城市有一个父母国家。然后,您只需要向用户询问他们的城市,并且所有其他信息都是隐含的。你从哪里得到这些数据是一个不同的话题。例如,您可以尝试Google的API。
这取决于你的业务需求。如果你想提供区域化服务(已logc根据用户的地理区域),然后是的,你一定要在DB保持区域。另一方面,你将不得不设计你的数据库来保存你的区域(在1-n关系中至少有3个表格,或者与父/子关系有1个表格),并用有效数据填充该数据库 - 你会不会拥有来自世界各地的所有国家/州和城市?
一般情况下,我建议你到具有只读的国家名单,因此用户只能选择但不能添加。然后,对于州和省,有一个预先加载的列表,但允许用户添加一个。 (你可以从任何你想要的互联网数据库或服务中预先加载这个列表,比如雅虎)。
在所有情况下,这是一个很好的加分,对他们(因为可用性)和你(因为这将减少数据复制)
希望这有助于。欢呼声
问题是你想让它适用于世界上的每个人,还是仅仅为了美国的地址 - 也是你想要收集信息的目的。
如果您的网站是电子商务,并且您希望收集送货地址,则需要对输入的验证质量有相当高的质量 - 否则UPS不会将这些内容交付给客户。
如果在另一方面,你只是想拥有的,人们是一个相当不错的主意,但它有邮寄地址质量不是必需的,只用一个免费的网络服务像PlaceFinder
http://developer.yahoo.com/geo/
它应该允许你让用户只需输入地址,而不必将其分解到城市/州/国家,只需将产生的地点ID(woeid)存储在数据库中。
CREATE TABLE `pl_countries` (
`countryID` int(4) NOT NULL auto_increment,
`iso` char(2) NOT NULL,
`name` varchar(80) NOT NULL,
`printable_name` varchar(80) NOT NULL,
`iso3` char(3) default NULL,
`numcode` smallint(6) default NULL,
`top_flag` tinyint(1) NOT NULL,
`status` tinyint(1) NOT NULL,
PRIMARY KEY (`countryID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE `cities` (
`city_id` bigint(20) NOT NULL auto_increment,
`countryID` bigint(20) NOT NULL,
`city` varchar(30) NOT NULL default '',
`top_city` tinyint(1) NOT NULL,
PRIMARY KEY (`city_id`),
KEY `country_id` (`country_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
使用上述结构进行城市到国家的映射。您还可以标记顶级城市和国家。
还要考虑到,有些城市同名,但位于不同的国家。里加是拉脱维亚首都,里加也在美国密歇根州。
- 1. 国家城市州名单
- 2. 桌面视图与国家/州/城市
- 3. 从城市和州获取国家
- 4. 国家,州和城市的PHP库
- 5. 按国家,州和城市汇总
- 6. 国家,城市和城镇
- 7. Ruby on Rails - 选择国家和州时,加载州和城市
- 8. 与国家和城市/州/区填充mySQL数据库
- 9. 获得所有国家的州和城市在一个查询
- 10. 管理国家,州和城市的数据库
- 11. TreeView。美国各州和城市
- 12. 如何区分Excel中的城市,州和国家
- 13. 下拉的国家,城市,州与邮政编码
- 14. iPhone - 验证美国城市和州
- 15. 在一个城市和州或国家Python的当前时间
- 16. 从地址获取城市,州和国家的最佳途径
- 17. 国家:他们的州/省和城市名单
- 18. 从Google表格的经纬度获取城市,州和国家
- 19. 在NoSQL中存储国家,州,城市和邮政编码
- 20. Ruby on Rails中的国家,州和城市
- 21. 像国家/州和城市一样下降像
- 22. 使用jQuery填充基于国家和州的州和城市下拉菜单
- 23. 限制谷歌地图API,只显示城市,州和国家
- 24. 通过州和国家获取城市Google API
- 25. 加载国家/州/市
- 26. 国家/城市/州/商业数据库结构
- 27. 所有国家,州,城市SQL转储脚本
- 28. 获取国家,州和市的API
- 29. 拉Foursquare城市和国家位置
- 30. 获取某个国家/州的城市名称
那州/省/地区呢? – Tech4Wilco