2012-11-15 22 views
0

我開發PHP中的參與者事件註冊的Web應用程序和所遇到如下問題選擇參加:優化的SQL表,誰註冊了特定的事件

我們有我們的tech-多個事件在大學舉行,約有4000人蔘加。在註冊處,參加者必須註冊參加活動(單人/多人)。有一點,管理員必須能夠鎖定事件,以便參與者不能再註冊該事件(意味着該事件已經開始)。然後,管理員需要能夠列出所有爲每個事件註冊的人員列表(在LOCKing之後)。

我們想出了這一點:

  • 必須在「參與者」表中的每個事件布爾列
  • 有多個選擇字段作爲接口事件輸入
  • 破滅()的接收陣列
  • 爆炸()的結果
  • 組的foreach explod()的事件中,設置作爲BOOLEAN 1針對參與者

所以當管理員想要的打印,獲得其中Boolean對於事件名稱設置爲1

這看起來有點醜的所有參與者,而我們希望有人有更好的主意來解決這個問題。謝謝。

回答

4

聽起來像你可以使用一些規範化。 「每個事件的布爾列」。所以如果你有50個活動,你有50個專欄?它將使遠更有意義的事件表,用戶表,和「events_users」表把兩者聯繫起來,e.g:

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) 
); 

「鎖定」字段進入事件表。然後讓參與者一樣容易:

select user_id 
from events_users 
where event_id = XXX 
+0

感謝一堆,馬克! :) –

+0

我一開始並不認爲它可以支持多個事件註冊,但現在我得到它 - 爲每個事件插入一個($ user_id,$ event_id)對,對不對?我真的很感激你回覆得有多快;儘管我花了一天時間來了解所涉及的概念。乾杯。 –