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

前端之家收集整理的这篇文章主要介绍了数据库设计 – 关于表格设计的问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在为我的用户提供搜索选项.他们可以搜索城市名称.问题是我存储的城市名称是“圣路易斯”之类的东西.但即使用户输入“圣路易斯”或“圣路易斯”,我也希望找到圣路易斯.有关如何创建查找表的任何建议,以某种方式考虑到这一点?

解决方法

创建两个表.

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

一个包含一堆城市名称,一个外键将那些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');

猜你在找的MsSQL相关文章