2012-08-04 109 views
0

我有像下面的关系表:MySQL表重新设计理念(关系)

ERD

我已经级联下拉相互关联,即箱子当您选择该国报告的国家,地区将在下拉菜单中加载。但是现在我想将下拉菜单更改为基于Ajax的自动完成文本框。

我的问题是,我应该有多少个文本框?我应该有一个像“按位置搜索”这样的文本框,我需要更改表格设计,或每个类似国家,地区,城市等的文本框,

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

他们可能在城市文本框从中寻找地区区域文本&搜索城市......现在,他们有一个下拉菜单,就可以看到自己的区域,“奥克兰将在那里以区域为确保”

我可能没有找到我想要的个人文本框,我需要一些关于从数据库&接口的角度重新设计的建议。

+0

你如何设置一个像“郊区,城市,地区,国家”输入格式的文本框,你可以在文本框提示中让用户知道,然后你发送字符串到你的php,用逗号分解“,”将它转换为一个数组,然后从最后一项开始寻找国家,当你有你的国家ID继续进行并且在前一项数组输入(因此区域)中选择你的区域时on ... allthought你可以通过做一些检查和猜测数组的长度来使这个更快,也就是说,如果数组只有2个项目可能是城市,国家 – Onheiron 2012-08-04 21:54:38

+0

你正在设计哪个国家? (如美国有国家,英国有县等) – Cups 2012-08-04 21:55:30

+0

我现在正在为新西兰做它,可能是澳大利亚之后... – 2012-08-04 21:57:53

回答

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。最大的缺点是你正在引入尚未被证实或不熟悉的技术的所有缺陷。

对于任何一种方法,我认为你有一些研究切出来给你。

祝你好运!

+0

由...方式,你可能想为UI创建一个单独的问题。 – hythlodayr 2012-08-05 03:56:46

+0

我之前正在考虑对商业数据进行索引,现在作为临时解决方案,我正在考虑为现有结构的位置编写文本搜索查询...我会尽快发布并提出建议..谢谢 – 2012-08-05 05:14:20