0

PHPで参加者イベント登録Webアプリを開発していますが、次の問題が発生しました。

大学でのテックフェストには複数のイベントがあり、約4000人の参加者がいます。登録デスクで、参加者はイベントにサインアップする必要があります(シングル/マルチプル)。ある時点で、管理者はイベントをロックして、参加者がそのイベントに登録できなくなるようにする必要があります(つまり、イベントはすでに開始されています)。次に、管理者は、各イベントにサインアップしたすべての人のリストを印刷できる必要があります(ロック後)。

私たちはこれを思いついた:

  • 'participant'テーブルの各イベントにBOOLEAN列があります
  • イベント入力のインターフェイスとして複数の選択フィールドがあります
  • 受信した配列をimplode()
  • 結果をexplode()
  • foreach explod()edイベントを設定し、参加者に対してBOOLEANを1に設定します

したがって、管理者が印刷を希望する場合は、event-nameのBOOLEANが1に設定されているすべての参加者を取得します

これは少し醜いように見えますが、誰かがこれを回避するためのより良いアイデアを持っていることを望んでいます。ありがとうございました。

4

1 に答える 1

4

正規化を使用できるようです。「各イベントのブール列」。つまり、50のイベントがある場合、50の列がありますか?2つをリンクするために、eventsテーブル、usersテーブル、および「events_users」テーブルを用意する方がはるかに理にかなっています。例:

create table events_users (
    user_id int,
    event_id int,
    primary key (user_id, event_id),
    foreign key (user_id) references users (id),
    foreign key (event_id) references events (id)
);

'lock'フィールドはイベントテーブルに入ります。次に、参加者を取得するのは次のように簡単です。

select user_id
from events_users
where event_id = XXX
于 2012-11-15T18:04:28.483 に答える