数据库设计myqsl

时间:2017-02-18 11:13:53

标签: mysql database

我想为Events.Events设计一个数据库可以是两个类型的正常事件和带有session的事件。每个事件都有一些参与者,如果事件结束,那么他们必须在事件结束后给出反馈,然后他们有填写单个反馈表单,但如果事件有会话,那么每个会话都会有一个单独的反馈表单(这里我很困惑如何设计它),用户必须根据事件会话填写该反馈表单。

例如,如果一个事件有3个会话,请将它们命名为A,B,C。然后,用户填写后会填写会话A的反馈表,会话B表格将出现,他必须填写该表格,然后C,但如果用户填写表格A并退出,再次登录后,他看到的表格将是会议B表格。

现在我的数据库设计如下所示

活动表

id event_name form_id date  

这里form_id来自反馈表格,因为每个事件都会有不同类型的表单,这里如果是正常事件,那么我在表中传递form_id如果它的事件会话然后我保持form_id 0

会话表的事件

id event_id form_id 

Event_Users表

id user_id event_id is_submitted

这里如果正常事件,那么我可以使is_submitted 1,但我应该怎么做会有会话的事件?我为此制作另一张桌子?

我的反馈表单,用户feedbak将成为商店

id question_id user_id event_id session_id score

我知道这个问题有点令人困惑,但请再次阅读,如果可能,请尝试给我一个解决方案

1 个答案:

答案 0 :(得分:0)

设计方法是识别数据库中表示的实体 - 现实世界的东西。然后确定它们之间的关系。然后确定约束。

实体:

  • 每个活动一次
  • 每个会话一个会话。如果活动只有一个会话,那么这里还有一个项目。
  • 每位与会者的参与者
  • 每次评估评估一次

的关系:

我正在使用符号 One ==<许多很多> ==<很多在这里。

  • 事件==<会话每个事件一个或多个会话。
  • 事件> ==<参与者。参与者与活动之间的多对多关系。
  • (会话|参与者)==评估每个会话中每个参与者的评估为零或一个评估。 (零?是的,祝每个参与者都能获得评价。)

约束

  • 事件==<会话一些(而非全部)事件被限制为只有一个会话。

从此

创建RDMS表

由于多对多关系,您需要每个实体的表和event_person的连接表。

event:         unique event_id                                 descriptive attributes.
session:       unique session_id  FK event_id                  descriptive attributes
person:        unique person_id                                descriptive attributes.
event_person:  FK person_id       FK event_id
eval           unique eval_id     FK session_id  FK person_id  descriptive attributes.

未解决的问题:

参与活动的每个参与者都参与该活动的每个会话吗?也就是说,如果事件> - <人际关系实际上是事件> - <会话关系?