1

MySQLデータベースで多対多の関係を築くことを目標に、構築する別のブリッジに到達しました。

現在のテーブル:
ユーザー(id、name)
タグ(id、name)
User_Tags(user_id、tag_id)

目標は次のとおり
です。タグを取得して、一意の制約があるデータベースに#fb挿入する機能が必要です。タグが存在する場合は、タグを返します。Tagsnameid

tag.idと現在のユーザーをにuser.id挿入したいと思いますUser_TagsUser_Tagsユーザーの最も一般的に使用されるタグを追跡し、使用頻度順にリストに表示できるようにしたいので、テーブルに固有の制約はありません。

私は現在、プリペアドステートメントを使用してPHPでこのプロジェクトを開発しています。
さらに、私のユーザー数はまだかなり少ないため、パフォーマンスは現在問題ではありませんが、着実に成長しており、将来的に問題になる可能性があります。

4

1 に答える 1

3

MySQLのONDUPLICATEKEY UPDATELAST_INSERT_ID(expr)を使用して、タグIDが挿入されているか、すでに存在しているかに関係なく、タグIDを取得できます。

INSERT INTO
  Tags
  (name) 
VALUES
  (:name)
ON DUPLICATE KEY UPDATE
  id = LAST_INSERT_ID(id)

INSERT INTO
  User_Tags
  (user_id, tag_id)
VALUES
  (:userid, LAST_INSERT_ID())
于 2010-05-09T07:34:47.257 に答える