gpt4 book ai didi

mysql - 数据库设计MySQL

转载 作者:行者123 更新时间:2023-11-29 19:23:13 25 4
gpt4 key购买 nike

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

例如,如果一个事件有 3 个 session ,让它们命名为 A、B、C。那么用户在填写完 session A 的反馈表单后,将出现 session B 表单,他必须填写该表单,并且然后是 C,但是如果用户填写了表单 A 并注销,然后再次登录后,他看到的表单将是 session B 表单。

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

事件表

id event_name form_id date  

这里的 form_id 来自反馈表单表,因为每个事件都会有不同类型的表单,如果是正常事件,那么我将在表中传递该 form_id,如果是事件 session ,那么我将保留 form_id 0

带有 session 表的事件

id event_id form_id 

Event_Users 表

id user_id event_id is_submitted

在这里,如果是正常事件,那么我可以将 is_subscribed 设为 1,但是对于要进行 session 的事件我应该做什么?我应该为此再做一张 table 吗?

我的反馈表单,用户反馈将被存储

id question_id user_id event_id session_id score

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

最佳答案

设计方法是识别数据库中表示的实体(现实世界的事物)。然后确定它们之间的关系。然后确定约束条件。

实体:

  • 每个事件一个事件
  • 每个 session 一次。如果事件只有一个 session ,这里仍然有一个项目。
  • 每人一名参与者
  • 每个评价一个评价

关系:

我使用符号 One ==< Many and Many >==< Many 这里。

  • 事件 ==< session 每个事件有一个或多个 session 。
  • 事件>==<参与者。参与者和事件之间的多对多关系。
  • ( session | 参与者) == 评估 每个参与者在每个 session 中进行零次或一次评估。 (零?是的,祝你好运,从每个参与者那里获得评估。)

约束

  • 事件 ==< session 某些(不是全部)事件仅限于一个 session 。

由此制作 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.

开放问题:

是否假定事件中的每个参与者都参加该事件的每个 session ?也就是说,Eve​​nt >-< Person 关系实际上应该是 Event >-< Session 关系吗?

关于mysql - 数据库设计MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42314403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com