Sta*_*bie 5 mysql database database-design relational-database
查看:http : //maps.googleapis.com/maps/api/geocode/json? address= 1600+Amphitheatre+Parkway,+Mountain+View,+CA& sensor= false
我正在使用MySQL。
给定部分或完整的地址,Google Map API将返回以下内容:
"address_components" : [
{
"long_name" : "1600",
"short_name" : "1600",
"types" : [ "street_number" ]
},
{
"long_name" : "Amphitheatre Pkwy",
"short_name" : "Amphitheatre Pkwy",
"types" : [ "route" ]
},
{
"long_name" : "Mountain View",
"short_name" : "Mountain View",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Santa Clara",
"short_name" : "Santa Clara",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "California",
"short_name" : "CA",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "United States",
"short_name" : "US",
"types" : [ "country", "political" ]
},
{
"long_name" : "94043",
"short_name" : "94043",
"types" : [ "postal_code" ]
}
]
Run Code Online (Sandbox Code Playgroud)
假设我正在开发一个应用程序,其中:
我应该如何存储从Google获得的地址成分,以便可以查询以下内容:
一种非常简单的方法是将单个地址组件存储在一张表中:
TABLE: account
- account_id (PK)
- street_number
- route
- locality
- administrative_area_level_2
- administrative_area_level_1
- country
- postal_code
Run Code Online (Sandbox Code Playgroud)
Google不会提供的任何信息都将保留为空白(例如,如果帐户所有者未提供街道号,则Google API也不会返回street_number)。我认为这将是最简单的查询。但是,此数据不会被标准化。
另外,我可以将数据库设计为具有多个表,例如:
TABLE: country
- country_id (PK)
- name
TABLE: administrative_area_level_1
- administrative_area_level_1_id (PK)
- country_id (FK)
- name
Run Code Online (Sandbox Code Playgroud)
... 等等
这可能会规范化数据,但查询可能会很麻烦。另外,信息丢失也可能会引起一些问题。例如,如果谷歌的回报是什么country,并administrative_area_level_2跳过administrative_area_level_1(我不知道这甚至有可能)? administrative_area_level_2需要administrative_area_level_1_idF作为其FK-如果没有FK,模型就会崩溃。
另一个想法可能是使用嵌套集或邻接模型。数据将被规范化,并且可能能够更好地处理丢失的信息。
我的直觉是,最简单的模型(允许冗余数据的模型)对我来说是最佳选择。数据不是来自我,而是来自Google,我想我只需要这些数据,这样我就可以进行这些按位置搜索。也许我不会遇到异常?
关于如何对此建模的任何建议?
在开始担心如何对从 Google 地图检索的数据进行建模之前,您可能需要先查看服务条款: http: //code.google.com/apis/maps/terms.html。特别注意 10.1.3(a):
“您不得复制、翻译、修改或创建任何内容或其任何部分的衍生作品(包括创建或贡献数据库),或公开展示任何内容或其任何部分......”
我想说,这几乎明确禁止了您尝试构建的应用程序类型。如果您想查询 Google 拥有的有关您帐户所有者之一的地址信息,您必须使用 Google 的 API 来完成此操作,而不是复制他们的数据并在您自己的应用程序中执行此操作。
| 归档时间: |
|
| 查看次数: |
2635 次 |
| 最近记录: |