0

サイト内の各ユーザーが、入力する項目のカンマ区切りのリストを入力できる場合 (事前に決められたリストからではなく!)、ユーザーごとにそのリストをどのように MySQL に保存して、ユーザー間で項目を照合できるようにする必要がありますか?同じアイテム?

  1. 彼らが入力したコンマ区切りの文字列をVARCHARDB に保存すべきではないことはわかっていますが、どのように保存すればよいのでしょうか? ItemsList各行が a である新しいテーブルを作成する必要がありUserID -> ItemNameます (たとえば、ユーザー ID 101が「マッチ、ガン、アルコール」と入力した場合、3 行をItemsListasに追加します101 -> 'Matches', 101 -> Gun, 101 -> Alcohol) ?

  2. その場合、PRIMARY KEYそのテーブルには何を使用する必要がありますか?

  3. indexesアイテムの検索とマッチングの両方をできるだけ速く行うには、何を設定する必要がありますか?

  4. 最後に、別のユーザーと共通のアイテムを少なくとも 1 つ持つすべてのユーザーを見つけるには、どのクエリを使用する必要がありますか?

4

2 に答える 2

0

入力を JSON 文字列としてテーブルの TEXT 列に格納できますか? そうすれば、ユーザーが新しいアイテムを追加する必要があるときはいつでも、JSON 文字列を取得して表示/更新できます。これを行うと、入力ごとに新しい行を作成するわけではありません。この場合の主キーはユーザー ID であり、PK は既にインデックスであるため、追加のインデックスを作成する必要はありません。

入力はコンマで区切られるため、コンマで分割してリストにし、リストを JSON オブジェクトとしてシリアル化します (DB に保存します)。

于 2013-05-07T15:43:32.360 に答える