- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我计划通过将 Locations 表中的 locationID 提供给 User 表中的每个用户来规范化,而不是为共享同一位置的多个用户输入重复的用户位置,这样我就不必重复输入 Country、State、City在用户表中,所以我节省了磁盘空间。 (美国,康涅狄格州,伍德黑文)
在几个用户说第 12 个用户可以输入 USA,NY, Albany 之后,这个条目被输入到 Locations Table 的第 12 行。当用户输入他的位置信息(国家、州、城市)时,我需要在输入新记录之前检查位置表以查看该记录是否存在。问题是您无法为 State 和 City 列编制索引,因为它们与国家(分别为 Afghanistan 、Alabama、Azirben、Country、State 和 City)不匹配。
是否有一种有效的方法可以对州和城市进行排序,使其与按字母顺序索引的国家/地区名称保持一致(我希望在阿富汗以 A 开头的州和以 A 开头的城市将阿富汗国家列为第一行依此类推,假设阿富汗是国家列表中的第一个国家。
我相信即使具有单独 Locations 表的规范化方法节省了磁盘空间,但搜索记录的时间,如果不在 Locations 表中则插入,然后在用户表中插入 LocationsID 的时间成本更高。我的断言正确吗?
最佳答案
这是数据库规范化的一个典型陷阱:规范化只是为了空间。
空间很便宜。
从函数依赖的角度考虑:元组 (Country, State, City) 应该是函数依赖,但您没有任何依赖于它的信息,也没有它的组件(至少您没有告诉我们)。或者,您可以具有某些功能依赖项,例如 State->Country 或 City->Coutry,State(但您已经知道全局数据库不是这种情况)。
您同样可以将它作为单个属性“Country;State;City”,它不会影响您的设计(从功能依赖的角度来看;从搜索数据的角度来看它会影响)。
换句话说,如果您有任何特定于元组(国家、州、城市)的信息,或者您有想要在元组本身内强制执行的功能依赖性,您可能希望规范化此表。
如果你不这样做,那么不要为了空间而对其进行标准化。空间从来都不是标准化背后的主要动机(更新/插入/删除异常是主要原因)。
这样说吧。你会为了节省空间而规范化一个人的名字和姓氏吗?
如果你还想这样做,那么不用担心索引如何对数据进行排序。那不应该是你的担心。您可以在(国家、州、城市)上创建基于树的索引——默认情况下——然后您可以搜索给定的国家或国家/地区,或国家/地区/州/城市(您始终可以使用基于树的索引中的前缀)。您可以在具有任意属性组合的表上创建任意数量的索引。但这会占用空间,并会减慢插入速度,但我怀疑无论如何该表中的内容都不多。
我的建议是,不要规范化这些数据。
--伤害
关于mysql - 索引国家、州、城市的难度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16654914/
这个问题在这里已经有了答案: Where am I? - Get country (10 个答案) How can I get my Android device country code with
有办法检查吗?我有一个应用程序 URL,除非用户有英国应用商店,否则我不想打开该 URL。不幸的是,这个应用程序在许多国家/地区都可用,因此当我在链接上添加“gb”时,它会被重定向到用户的本地区域。
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足 Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以
获取设备当前区域的最佳方法是什么?假设用户在德国并使用意大利语作为设备语言。如果我使用 Locale.getDefault(),那么国家和语言就会相互映射,即语言是it,国家是IT。我想要的是它和DE
有人可以给我一个示例或教程,其中显示国家及其代码的下拉列表我的代码显示错误的新西兰语言代码,它显示 mi-NZ 而不是 en-NZ ASP.NET protected void Page_Load(o
我是 Ajax 和 PHP 的新手,遇到动态下拉国家和州的问题。 虽然我已经检查了 stackOverflow 中的所有答案,但我无法清楚地了解我们应该如何成功地编写代码以获得所需的结果。 count
我一直在开发一个注册表单应用程序,其中使用了几个微调器小部件。微调器用于选择国家、州和城市。因此,这些微调器需要以某种方式相互连接(下面的代码将展示我如何尝试实现这一点)。 表单代码: fragmen
如果你去http://profile.microsoft.com并编辑您的个人信息,您将选择您的国家。选择国家/地区后,城市和/或州信息会根据该国家/地区的预期变化。有没有人有任何关于如何实现这一目标
我有一个带有经纬度坐标的 data.frame: df<-data.frame( lat=c(40, 30, 40.864), lon=c(0, 20, 1.274) )
我正在尝试在将与 django-allauth 一起使用的注册表中添加 django-countries。按照说明 https://github.com/SmileyChris/django-coun
嗨,我想为国家和州实现下拉列表。州下拉列表应根据所选国家/地区更改其值。 是否有任何插件或 gem 可以在 Rails 中执行此操作。 最佳答案 试试卡门插件: http://autonomousma
我的服务器上安装了基于PHP的Youtube克隆系统。 几个国家使用相同的系统。假设我有3个域都指向同一系统: www.site.hr www.site.ba www.site.rs 他们都重定向到一
在我的 Azure DNS 和域提供商中设置后,我想使用我的国家/地区域名 mydomain.id,但我仍然无法在应用服务中验证我的域。我已经仔细检查了所有内容,我认为我的设置已经正确。现在我想知道我
最近,我们开始遇到向网络应用程序的用户呈现过时的国家/地区列表的问题。 我们目前有一些数据库表来存储本地化的国家/地区名称及其地区(州)。然而,随着地球的发展,该列表在不断演变,并且事实证明维护起来很
This is the third iteration of this question as errors have been solved (在一些人的感激帮助下)。为了避免对到底发生了什么感到困
全部, 我们的应用程序需要有关 ISO 国家和货币的数据(其中数据必须是最新的)。我们确实从 ISO 自己购买了国家/货币数据,但是我们仍然需要对数据执行大量手动操作,以及编写我们自己的工具来读取数据
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我想使用 PHP 和 jQuery 执行以下操作 https://www.careerbuilder.com/share/register.aspx?sc_cmp1=JS_LoginASPX_RegN
假设我们有一个包含所有国家/地区代码的代码列表。国家代码是 Countries 表的主键,它在数据库中的许多地方用作外键。在我的应用程序中,国家通常显示为多个表单的下拉列表。 一些过去曾经存在的国家不
我想根据语言环境获取当前日期/时间。如果我传递 locale 对象,我需要获取国家/地区的相关日期/时间。 最佳答案 从 Java 8 开始,您有 LocalDateTime 和 ZonedDateT
我是一名优秀的程序员,十分优秀!