繁体   English   中英

数据库设计困境

[英]Database-design dilemma

我对我目前的项目有疑问。 它是某个组织的在线注册系统。

关于如何确定成员在某个“会议”中的出席率,我遇到了这个问题。

我的数据库中有一个名为“members”的表,其中包含有关其注册的所有信息以及“会议”表。 每年都有会议,会员注册成为该会议的参与者。 我需要为“管理员”设置一个查看功能,以查看谁参加了上一次会议。

我已经想到的是,我将在'members'表中添加'first_conference'列并设置一个类似'1'的值,如果该成员注册或参加'first_conference',那么如果管理员选择查看第一个出席会议中,“first_conference”列的值为“1”的成员将显示在页面中。

问题是它是每年一次,我找到了类似更好的算法。 因为如果我按照我的想法,我会像每年在表'成员'中添加新专栏,例如('second_conference','third_conference',...,'nth_conference')

这种关系被称为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表中添加该members的记录,然后将该成员的引用添加到此表中。

所以现在你不再需要触摸你的数据库,你可以通过使用你的membersconferencesconf_member表之间的join轻松生成你的视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM