如何在MySQL中为每个“事件”ID存储多个用户ID

时间:2016-06-06 06:13:54

标签: mysql

我对MySQL完全不熟悉。 我正在建立一个大学课程系统,每个课程(“活动”)都有许多学生(“用户”)签署了该课程。

我想要构建一个MySQL表,每个课程ID将存储所有登录的学生ID。我发现了两种方法:

  1. 序列化学生ID(例如使用json)
  2. 为每位具有课程ID和学生ID的新学生创建一个新行
  3. 由于学生ID的序列化/反序列化,第一种方法存在性能问题,第二种方法会导致表格快速爆炸。

    你觉得我应该怎么做?有更好的解决方案吗?

    谢谢!

2 个答案:

答案 0 :(得分:3)

您的案例是user_id映射。

你将有3张桌子。

  1. 用户
  2. 活动
  3. User_Events
  4. 第三个表将存储映射,它应包含两列,event_iduser_id

    User将是event_id表的外键,类似地,Event将是user_id, event_id 1 2 1 3 2 1 3 4 表的外键。然后,您可以通过查询中的联接来检索数据。

    所以,如果您的用户ID为1,2和3

    以及ID为1,2,3,4的类似课程

    以下是您将如何代表在课程中签名的学生。

    sitename/index.php?q=profile

    这意味着,用户1在课程2和3中签名,用户2在课程1中签名,用户ID为3,当然ID为4。

答案 1 :(得分:0)

每个学生/用户都可以参加多个课程/活动。

每个课程/活动可以包含多个学生/用户。

所以你需要一个包含所有关系的桥表:

  • user_event(userid,eventid)

对userid + eventid有唯一约束。

(您可以在表格中添加技术ID(例如user_event_id),但这不是必需的。)