0

以下のような関係を持つテーブルがあります。

ERD

互いにリンクされたカスケード ドロップ ダウン ボックスがあります。つまり、国を選択すると、その国の地域が地域ドロップ ダウンに読み込まれます。しかし今、ドロップダウンを Ajax ベースのオートコンプリート テキスト ボックスに変更したいと考えています。

私の質問は、いくつのテキスト ボックスが必要ですか? 「場所で検索」などのすべてに対して 1 つのテキスト ボックスを使用する必要がある場合は、テーブルのデザインを変更するか、国、地域、都市などごとに 1 つのテキスト ボックスを変更する必要があります。

このようなテキスト ボックスがある場合、ユーザーは自分が地域なのか都市なのかほとんどわからない可能性があります。たとえば、オークランド、ニュージーランドは都市ではなく地域です。

彼らは都市のテキストボックスで地域を検索し、地域のテキストボックスで都市を検索します...ドロップダウンができたので、そこから地域を確認できます。「オークランドは確実に地域にあるでしょう」

個々のテキスト ボックスから必要なものが見つからない場合があります。

データベースとインターフェイスの両方の観点から再設計するための提案が必要です。

4

1 に答える 1

2

あなたのスキーマは問題ありません。しかし、ユーザーが最低限必要としているのは次のようなものです: 1. 単語を入力するだけの Google スタイルの自由形式のテキスト フィールドですが... 2. 一致する結果のサブセットをコンボで表示します。スタイルファッション。

検索のような機能は、リレーショナル データベースが設計された目的ではありません。基本的に、それがあなたが直面している問題です。そうは言っても、MySQL は私の専門分野ではありませんが、合理的な全文検索サポート ( MySQL Full Text Search ) を備えているようです。

おそらく、各説明フィールドに FULLTEXT インデックスを設定して、5 つの異なるクエリを発行することができます。または、汚れたソリューションを使用する場合は、別の BUSINESS_SEARCH(business_id, concat_description) を用意してください。ここで、concat_description は、関連するすべての「説明」フィールドをまとめたものです。ただし、説明の更新を考慮する必要があります。

しかし、FULLTEXT を使用した場合のパフォーマンスへの影響はわかりません。自明でない場合は、これらのクエリをサーバーの別のコピーにオフロードします。

私の個人的な感覚では、完全に裏付ける証拠はありませんが、今後パフォーマンスの問題に遭遇することになるでしょう。アドオンを検討しましたか?クイック Google 検索エンジンは、PHP/mySQL で Google に似た検索エンジンを示します。大きな欠点は、まだ証明されていない/なじみのないテクノロジの落とし穴をすべて導入していることです。

どちらのアプローチでも、いくつかの研究が必要だと思います。

幸運を!

于 2012-08-05T03:43:38.923 に答える