mysql表重新设计想法(关系)

时间:2012-08-04 21:43:43

标签: mysql sql ajax database database-design

我的表格如下所示:

ERD

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

我个人的感觉 - 完全没有证据支持它 - 是你将遇到性能问题。你考虑过一个附加组件吗?快速谷歌搜索引擎显示Google-like Search Engine in PHP/mySQL。最大的缺点是你要介绍一种未经证实/不熟悉的技术的所有陷阱。

对于这两种方法,我认为你已经为你做了一些研究。

祝你好运!