微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

数据库设计 – 关于表格设计的问题

我正在为我的用户提供搜索选项.他们可以搜索城市名称.问题是我存储的城市名称是“圣路易斯”之类的东西.但即使用户输入“圣路易斯”或“圣路易斯”,我也希望找到圣路易斯.有关如何创建查找表的任何建议,以某种方式考虑到这一点?

解决方法

创建两个表.

一个包含有关城市的一切.

一个包含一堆城市名称,一个外键将那些naes与第一个表的id相关联.所以你在city和city_names之间有一对多的关系.

现在唯一的问题是区分每个城市的一个名称,即首选名称.我们可以通过以下两种方式实现:1)第一个表可以有一个到第二个表的fk,它保存为首选名称的id.但是,这会产生循环依赖.更好的是,2)只需在第二个表is_preffered中添加一个布尔/位列.

create table city (id not null primary key,other columns ) ;

create table city_name (
 id not null primary key,city_id int references city(id),name varchar(80),is_preferred bool  
) ;

然后获取所有名称,首先使用首选名称

select name from city_names where city_id = ? 
   order by is_preffered desc,name;

这还有一个额外的好处:如果你没有覆盖每个城市和城镇,你可以使用第二个表格来映射你没有覆盖的城镇/村庄/县到你所在的主要城市:

insert into city_name(city_id,name) values
 ( $id-for-New-York-City,'New York'),( $id-for-New-York-City,'Manhattan'),'Big Apple'),'brooklyn');

原文地址:https://www.jb51.cc/mssql/77123.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐