Mysql 事件管理模式设计

Mysql 事件管理模式设计,mysql,database-design,Mysql,Database Design,我正在设计一个活动管理系统(用于个人活动,如B日等+公司活动+竞选活动)。这些关系是:事件属于活动,事件有天,天有会话。同时,这些(活动、事件、日期、会话)中的每一项都可以具有相同的属性,如预算、目标、任务等。那么这些属性应该存储在自己的表中,如事件任务、事件目标、事件预算表中,还是应该作为列放入(事件、营地、日期、会话)表中 还有其他属性,如:地点、地点内的区域、邀请的人员、参加的人员等,这些属性适合上述每个属性,因此我可以再次将它们组合到各自的表中,如事件位置、露营位置、天数位置、会话位置,

我正在设计一个活动管理系统(用于个人活动,如B日等+公司活动+竞选活动)。这些关系是:事件属于活动,事件有天,天有会话。同时,这些(活动、事件、日期、会话)中的每一项都可以具有相同的属性,如预算、目标、任务等。那么这些属性应该存储在自己的表中,如事件任务、事件目标、事件预算表中,还是应该作为列放入(事件、营地、日期、会话)表中

还有其他属性,如:地点、地点内的区域、邀请的人员、参加的人员等,这些属性适合上述每个属性,因此我可以再次将它们组合到各自的表中,如事件位置、露营位置、天数位置、会话位置,或在每个级别使用一个位置表将它们拆分,并为每个级别设置标志


当然,这只适用于促销活动,而不是个人活动。

我的意见是,如果它是一个参数(如位置描述或最大预算值),它应该放在每个表中


如果可能有很多关系,比如活动有很多人参加,那么应该有单独的表格。

@koressak答案是正确的。基本上,如果一个活动只能有一个预算,那么将该预算存储在与该活动相同的表中。。。其他人也一样。但是想一想,如果你需要保留一段时间内预算数字的历史。。。e、 g.如果预算增加。你需要记录历史吗?如果没有,则上述情况可以;否则,将其拆分到单独的表中。如果您使用一个表来存储所有这些预算,它将起作用,但您的代码将更加复杂。

我想说,您拥有的表越多,数据库就越有表现力和灵活性。因此,如果每个参数都位于父表中,那么如果我需要向用户显示一个指标:“显示事件发生的所有位置”我必须连接这4个表才能提取所有位置?如果每个模型必须具有您指定的每个属性,我个人会考虑每个模型。例如,为什么活动应该有一个位置,当有许多事件发生时,这些都有位置?但要回答您的问题-如果您想显示事件的每个位置,只需选择一个表即可。如果要显示某个活动的每个事件,则只需一次加入。