我对我当前的项目有疑问。它是某个组织的在线注册系统。
我对如何确定某个“会议”中成员的出席率存在这个问题。
我的数据库中有一个名为“members”的表,其中包含有关其注册的所有信息以及“会议”表。每年都有会议,会员注册成为该会议的参与者。我需要为“管理员”设置一个查看功能,以查看谁参加了上一次会议。
我已经想到的是,我将在'members'表中添加'first_conference'列并设置一个类似'1'的值,如果该成员注册或参加了'first_conference',那么如果管理员选择查看出勤率在第一次会议中,“first_conference”列的值为“1”的成员将显示在页面中。
事情是它是一年一度的,我找到了类似更好的算法。因为如果我按照自己的想法行事,我会像每年在表格'成员'中添加新专栏一样,例如('second_conference','third_conference',...,'nth_conference')
答案 0 :(得分:2)
这种关系称为many-to-many
,这意味着每个成员将有多个会议,每个会议将有多个成员。
你应该通过使用第三个表来打破这种关系,我们可以将其称为conf_members
,其列类似于id, member_id, conference_id, attended
,然后每当你召开会议时,你都会在conference
中创建一个新行表格,例如新会议ID为10
,然后您向会员发送邀请,并为每个新邀请添加新行,例如:
id, member_id, conference_id, attended
1 , 2 , 10 , 0
1 , 5 , 10 , 0
1 , 4 , 10 , 0
1 , 3 , 10 , 0
会员出席后,您将参加人数从0
更改为1
如果您正在邀请尚未成为会员的人,则应在members
表中添加该记录,然后将该成员的引用添加到此表中。
所以现在您不再需要触摸数据库,并且可以在join
,members
,conferences
表之间使用conf_member
轻松生成视图。