0

我有如下关系的表:

ERD

我有相互链接的级联下拉框,即当您选择国家时,该国家下的区域将加载到区域下拉列表中。但现在我想将下拉菜单更改为基于 Ajax 的自动完成文本框。

我的问题是,我应该有多少个文本框?我是否应该为“按位置搜索”之类的所有内容设置一个文本框,我需要更改表格设计,或者为每个国家、地区、城市等设置一个文本框,

如果我有这样的文本框,用户可能不知道,很少有地方是区域还是城市,例如新西兰的奥克兰是一个区域而不是城市。

他们可以在城市文本框中搜索区域并在区域文本框中搜索城市......现在他们有一个下拉列表,他们可以从中看到他们的区域,“奥克兰肯定会在该区域中”

我可能无法从单个文本框中找到我想要的,

我需要一些关于从数据库和界面的角度重新设计的建议。

4

1 回答 1

2

您的架构很好。但听起来用户至少想要的是: 1. 谷歌风格的自由格式文本字段,他们可以输入单词,但是...... 2. 在组合中显示匹配结果的子集-风格时尚。

所以这是交易:类似搜索的功能不是关系数据库的设计目标,这基本上就是您遇到的问题。也就是说,MySQL 虽然不是我的专业领域,但似乎确实具有合理的全文搜索支持(MySQL 全文搜索)。

也许您可以在每个描述字段上都有 FULLTEXT 索引并发出五个不同的查询。或者,如果您愿意使用肮脏的解决方案,请使用单独的 BUSINESS_SEARCH(business_id, concat_description) ,其中 concat_description 只是所有相关的“描述”字段组合在一起;尽管您需要考虑描述更新。

但我不知道 FULLTEXT 对性能的影响是什么。如果不重要,我会将这些查询卸载到服务器的单独副本。

我个人的感觉——完全没有证据支持它——是你会遇到性能问题。你考虑过加装吗?一个快速的谷歌搜索引擎在 PHP/mySQL 中显示了类似谷歌的搜索引擎。最大的缺点是您正在引入尚未经过验证/不熟悉的技术的所有陷阱。

对于任何一种方法,我认为你都有一些研究适合你。

祝你好运!

于 2012-08-05T03:43:38.923 回答