【问题标题】:Event management schema design事件管理架构设计
【发布时间】:2011-06-03 19:55:39
【问题描述】:

我正在设计一个活动管理系统(用于个人活动,如生日等 + 公司活动 + 活动活动)。关系是事件属于一个活动,事件有天,天有会话。同时,每一个:(Campaign、Event、Day、Session)都可以具有相同的属性,如预算、目标、任务等。所以这些应该存储在自己的表中,如 event_mission、event_goal、event_budget 表还是应该它们会作为 (event, campaing, days, session) 表中的列放入?

还有其他属性,例如:位置、位置内的区域、邀请的人、参加的人等,因此我可以再次将它们组合到自己的表中,例如 event_loc、campaing_loc、days_loc、 session_loc 或在每个级别使用一个位置表将它们分解,并为每个级别设置标志。

当然,这仅适用于促销活动而非个人活动。

【问题讨论】:

  • 我会说你拥有的表最多,你的数据库更具表现力和灵活性。

标签: mysql database-design


【解决方案1】:

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

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

【讨论】:

  • 因此,如果每个参数都在父表中,那么如果我需要向用户显示一个指标:“显示事件发生的所有位置”我必须加入这 4 个表才能拉出所有位置?
  • 我个人会考虑每个模型是否必须具有您指定的每个属性。例如 - 为什么活动应该有一个位置,当有很多事件发生并且这些事件有位置时?但要回答您的问题 - 如果您想显示 Event 的每个位置,您只需选择一张桌子。如果您想显示一个活动的每个事件,那么它就是一个加入。
【解决方案2】:

@koressak 的答案是正确的。基本上,如果一个广告系列只能有一个预算,则将该预算存储在与该广告系列相同的表中......其他的规则相同。但是请考虑一下您是否需要保留预算数字随时间变化的历史记录...例如如果增加预算。你需要保留历史吗?如果没有,那么上面的就可以了;否则将其拆分为单独的表格。如果您使用一个表来存储所有这些预算,它会起作用,但您的代码会更加棘手。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2017-10-15
    • 1970-01-01
    • 2021-11-20
    • 2018-05-13
    相关资源
    最近更新 更多