1

問題は次のとおりです。

ユーザーは、必須フィールドに自分の情報を入力します。次に、ユーザーはチェック ボックス (ユーザーは複数選択可能) で選択を選択し、データベース (チェック ボックスの値) に保存されます。

例えば:

David は 2 つの選択肢を選択しました。例えばスポーツ。デビッドはバスケットボールとバレーボールを選びました。私のデータベースでは、次のようになります。

| id |  firstname  |  lastname  |  sports      |
| 1  | David       |  White     |  Basketball  |
| 2  | David       |  White     | Volleyball   |

私の主な問題は、情報を変更または削除する必要がある場合、1 行だけが変更または削除されることです。これは大きな問題です。特定のスポーツを選択したユーザーの数を表示しているため、爆発または内破のようにすることはできません。

どうすればこの問題を解決できますか?

4

1 に答える 1

1

テーブルを正規化する必要があるようです。個人データを格納するテーブルを作成できます。

 person = (personid, firstname, lastname, other fields related to person)

および選択肢を格納するテーブル:

 sport = (sportid, name, other data related to sport)

そして最後に、関係を管理するテーブル:

 PersonSport = (personid, sportid)

次に、上記のシナリオでは、データは次のようになります。

 Person
 personid    Firstname    Lastname
  1          David        White
  2          Sam          Black

Sport
sportid       name
1             Basketball
2             Football
3             Tiddlywinks

 PersonSport
 Personid   Sportid
   1        1
   1        2
   2        3
   2        1

スポーツを選択したユーザー数をカウントするには:

  Select count(*) from PersonSport where sportid = 1;
于 2012-12-22T11:59:41.430 に答える