ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

mysql – 数据建模:地理位置的层次结构

2019-06-06 19:01:28  阅读:240  来源: 互联网

标签:mysql database database-design data-modeling


我希望我的用户能够指定他们的位置,以便我可以在地图上绘制它们.给定地址,我使用Google Maps API获取其纬度/经度坐标并将其存储在数据库中.

此外,我希望允许用户根据位置搜索其他用户.使用谷歌地图API,我也可以获得国家/州/城市的地址(或纬度/经度坐标).我的问题是我不知道如何以这样的方式存储国家/州/市:

>数据与特定用户相关联
>没有数据冗余

我认为问题是如果User-1和User-2都输入导致该国家为“USA”的地址,我想我需要知道User-1和User-2都来自美国 – 并且“USA”仅在DB中存储一次.

当用户搜索其他用户时,我想我应该只让他们在美国搜索用户,如果我实际上有来自美国的用户.这意味着,假设User-1和User-2是来自美国的唯一2个用户,如果User-1和User-2删除他们的个人资料,我不应该再允许在美国搜索用户.

我的想法在概念上是错误的吗?在任何情况下,我应该如何建模这些信息?我正在使用MySQL.

解决方法:

你的目标和意图是正确的(不要放弃它们!),你可能需要一些帮助来克服这条线,就是这样.您对数据建模和规范化的理解和经验越多,就越容易理解.所以做尽可能多的研究和锻炼(SO或网络不是学习任何东西的好方法).

>出于装载和维护目的,最好确保您拥有适用于地理位置的标准化自顶向下结构.您可以通过您的理事会,县或邮局提供的信息(通常是免费的)加载它.这将消除外部参考表的手动数据输入.

>这是一个高度标准化的数据模型,5NF.
>但是可以做更多的规范化;更多可以删除的重复.除非你真的感兴趣,否则它是不值得的,例如.你需要搜索LastNames等.
.
>这是一家公用事业公司,以确保潜在客户不提供虚假的街道位置.
>地址是特定的房屋或单元(公寓),并且不会重复.居住在同一地址的两个人将使用一个地址行.
>此结构处理“任何”地理位置.请注意,有些国家没有国家;有些国家没有县;一些城镇没有郊区;不是将所有这些异常构建到数据模型中,而是将层次结构保持为“干净”.您仍然需要在SQL中处理它(无论模型是否简单,没有例外,或者它是否有例外;因为这是现实世界),而不是为无状态国家显示State.您只需要一个非State状态的行,其StateCode为CHAR(0),用于标识条件.
>我已经放置了经度&在郊区级别的纬度,假设这是您的用户可以通过GoogleMaps轻松选择的,并且因为街道级别将具有限制(可能是细粒度,并且会导致重复;或者对于具有很长街道的城市而言不够精细) .容易改变.
>目前,我建议您不要担心在同一个国家/地区识别用户,首先看看您是否可以处理SQL来识别同一个郊区的用户(不是Street,这很容易).之后,我们可以处理城市,县,乡等.
>我认为您确定的其他搜索是毫不费力的;看你是否同意

无论如何,这只是让你入门的东西;在最终确定之前有一些互动.

Link to GLS Data Model(加上你的另一个问题的答案)

Link to IDEF1X Notation适用于那些不熟悉关系建模标准的人.

标签:mysql,database,database-design,data-modeling
来源: https://codeday.me/bug/20190606/1189299.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有