数据库
首页 > 数据库> > 如何在MySQL中使用别名对城市进行建模

如何在MySQL中使用别名对城市进行建模

作者:互联网

给定位置(城市)可以具有名称以及可以通知的其他别名.我需要在数据库中对此进行建模.

可以使用城市或其任何别名执行搜索:

对于例如

市:

>姓名:洛杉矶
>别名:洛杉矶

指定搜索条件时,我可以指定洛杉矶或洛杉矶,它应该返回相同的结果(例如好莱坞).

我正在考虑使用一对多关系来做这件事,其中一个城市可以有很多别名,而且许多别名可以映射到一个城市.

在进行搜索时,我使用city和cityAlias表的连接来查找正确的城市.

有没有更好的方法来处理这个?

编辑:
(对于遇到相同问题/要求并碰巧来到此页面的任何人)
请看我的答案,因为我最终使用了它,但标记的答案可以帮助您识别独特的城市.

解决方法:

我可以添加到您的解决方案中的唯一方法是,您可以先尝试在城市表中查找完全匹配,如果没有,则加入别名.这样你就可以跳过一些非常昂贵的连接.

另一件需要注意的事情是,这种双表解决方案可能会遇到重复条目的问题.我不是在谈论不同城市的相同别名(可以使用唯一列进行检查),但是匹配城市名称的别名.这些“重复条目”的示例后面是详细说明:

城市

ID | Name
---------
1  | Los Angeles
2  | New York

别名

ID | CityId | Name
------------------
1  | 1      | LA
2  | 2      | NY
3  | 2      | Los Angeles

我知道这不应该发生……但是你知道摩尔定律:)这些跨表复制可能会给你一个查找表中的麻烦(我想你正在使用它们作为一个“猜测”城市实际上是什么试图在他/她写“LA”时选择用户.但是如果用户写了“洛杉矶”,你将不得不决定是否优先考虑城市或别名.我知道我提供的例子有点傻但作为一个非美国公民,我无法提供更好的例子.但是那里有很多城市,每个都有很多别名…我不会冒险:)

首先检查城市表将使城市优先于其他城市的等同命名别名.或者,您可以在插入之前检查城市的别名是否已作为城市名称出现.

这就是我能想到的全部:)

标签:mysql,database,database-design,erd
来源: https://codeday.me/bug/20190530/1184534.html