0

現在、1 つのテーブル (articles) と 6 つの行を持つ非常に単純な MySQL データベース (articlesDB) があり、次のように設定されています。

 -------------------------------------------------------------------------------------
id (int) | articletitle | articleorganization | articledate | articleurl |  articletags
 -------------------------------------------------------------------------------------

データベースの目的は、記事に関する情報を保存することと、それらの記事に適用された「タグ」を保存して、フォームを介したクエリの任意の組み合わせで記事を検索できるようにすることです。

id は自動インクリメントされますが、記事のタイトル、構成、日付、URL、およびタグはすべて、PHP で作成されたエントリー フォームから入力されます。問題は、正しいタグのスペルが記事に適用されるようにする方法が必要なことです。そのため、チェック ボックスを使用する方法を考えていました。そうすれば、正しく (一貫して) 綴りのタグのみを適用できます。

ただし、この方法でチェックボックスを実装するには、実際にはデータベース内に複数のテーブルが必要になることがわかりました。1 つは記事データ用、1 つはタグ用、もう 1 つはタグと記事データの相互参照用です。

//記事情報

 ----------------------------------------------------------------------
id | articletitle | articleorganization | articledate | articleurl
 ----------------------------------------------------------------------

// タグ情報

 --------------
id  | articletag
 --------------

// 記事とタグの参照

 -------------------------------
id  |  articleid  |  articletagid
 -------------------------------

ただし、この後、MySQL クエリのロジックを構築するまでどのように進めればよいかわかりません。

3 つの別々のテーブルにデータを挿入する必要があると思いますが、正確にどこに何が必要なのかわかりません。

どこを見るべきかについての助けや手がかりは大歓迎です。

4

2 に答える 2

1

最も簡単な方法は、ユーザーにタグを入力してフォームを投稿させることです。フォーム処理ファイルで、タグテーブル内のすべてのタグをSELECTクエリで検索します。それらが一致しない場合はエラーメッセージを表示し、そうでない場合は記事テーブルに新しいエントリを作成し、最後に必要な数のTagOnArticle(またはそれを呼び出すもの)エントリを追加します。

この状況をモデル化する方法は次のとおりです。

データベース関係

ここで、すべての有効なタグを取得する場合は、次を使用します。

SELECT tag_name FROM Tag

そして、結果をユーザーが入力したものと比較します。

于 2012-06-18T20:17:25.593 に答える
0

辞書データベースを設定したいようです。私はそこで仕方がない。しかし、あなたは論理について言及しました...私はあなたが最も近い一致を抽出することを参照していると思いますか?

残念ながら、この仕事に最適なのは「ファジーロジック」(人工知能)であり、これは非常に面倒です(私の意見では)。次善の策はLevenstein関数です。

于 2012-06-18T20:22:31.977 に答える