1

私は現在、タグに基づいてウェブサイトを推奨するアプリケーションを構築しています。

私のウェブサイトでは、ユーザーが登録すると、興味が記入されます。これは関心の例です。

football, model trains, hockey

したがって、これはコンマで区切られます。したがって、ユーザーが登録をクリックすると、データベースに保存されます。これが私のデータベースの設計です。

userID |  name     | interest
001    | John Doe  | sports, model trains, hockey

その一方で、私のサイトには、Web サイトの URL をアップロードし、それに関連するタグを作成するユーザーもいます。したがって、これはそのための私のデータベース設計です。

    postID  |  title           | tags
     001    |  techcrunch.com  | technology,softwares,startups
     002    |  nba.com         | basketball,sports,all-star
     003    |  tmz.com         | gossip, showbiz

このロジックは、NBA.com にはスポーツのタグがあり、John Doe の興味にはスポーツのタグがあるため、NBA.com をユーザーの John Doe におすすめしたかったということです。

それを行う方法はありますか?フォローアップの質問です。データベースの設計は正しいですか、それともすべてのタグを格納する新しいテーブルを作成する必要がありますか。みたいな感じです(定かではありませんが)。

あなたの助けは非常に高く評価され、報われるでしょう! 前もって感謝します!:)

4

4 に答える 4

2

データベースを正規化して、別のテーブルにタグがあり、データベースに接続するための関係テーブルがあるようにします。そのような:

ユーザーテーブル:

UserId Name
001    John Does

TagUserRelation

UserId TagId
001     001

タグテーブル:

TagId TagName
001   Sports

TagUrlRelation

TagId Url
001   nba.com
001   nhl.com

パフォーマンスを向上させるために、必要な結合を使用してインデックス付きビューを作成し、それらを操作するためのストアドプロシージャを実装することで続行しました。

前述のように、代替手段は全文検索ですが、これははるかに遅く、この場合、一般的に適切なデータベース設計とは見なされません。

于 2012-10-09T07:35:42.723 に答える
1

これは、を使用して行うことができます full text search

ここを参照してください

于 2012-10-09T07:34:43.130 に答える
1

単一のタグを保持する2つの別個のテーブルを作成する必要があります。各人または投稿に複数のタグがあります。必要に応じて、複数列の主キーを作成できます。

userID | interest
001    | sports
001    | model trains
001    | hockey
...

投稿の場合も同じです。

postID | tags
003    | gossip
003    | showbiz
...

これにより、効率的なSQLを作成する機会が大幅に増えます。

于 2012-10-09T07:35:21.657 に答える
1

タグを別々に保管する方がはるかに良いでしょう。タグ用のテーブルと、さらに 2 つのテーブルがあります。1 つはユーザーとタグの関係用、もう 1 つは投稿とタグの関係用です。

users
----------------------------------------
userId |   name    |   password   | ....
  1    | John Doe  | $p$fgA       |  

tags
--------------------
tagId  | tagname
1      | basketball
2      | hockey

user_interests
----------------------------
id   |   user_id  |  tag_id
1    |  1         |  1
2    |  1         |  2

post_tags
--------------------------
id  |  post_id  |  tag_id
1   |  1        |  2  

次に、JOINs を使用して必要な情報を取得します

于 2012-10-09T07:39:55.983 に答える