我正在使用php开发参与者事件注册Web应用程序并遇到以下问题:
我们在大学里有多个活动,有大约4000名参与者。在注册台,参与者必须报名参加活动(单人/多人)。有一次,管理员必须能够锁定事件,以便参与者不再注册该事件(意味着事件已经开始)。然后,管理员需要能够打印出已注册每个事件的所有人的列表(在锁定之后)。
我们想出了这个:
所以当管理员想要打印时,请将事件名称的BOOLEAN设置为1的所有参与者
这看起来有点难看,我们希望有人有更好的想法来解决这个问题。谢谢。
答案 0 :(得分:4)
听起来你可以使用一些规范化。 “每个事件的布尔列”。所以,如果你有50个活动,你有50个专栏?有一个事件表,一个用户表和一个“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