如何在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