我对MySQL完全不熟悉。 我正在建立一个大学课程系统,每个课程(“活动”)都有许多学生(“用户”)签署了该课程。
我想要构建一个MySQL表,每个课程ID将存储所有登录的学生ID。我发现了两种方法:
由于学生ID的序列化/反序列化,第一种方法存在性能问题,第二种方法会导致表格快速爆炸。
你觉得我应该怎么做?有更好的解决方案吗?谢谢!
答案 0 :(得分:3)
您的案例是user_id
映射。
你将有3张桌子。
第三个表将存储映射,它应包含两列,event_id
和user_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)
每个学生/用户都可以参加多个课程/活动。
每个课程/活动可以包含多个学生/用户。
所以你需要一个包含所有关系的桥表:
对userid + eventid有唯一约束。
(您可以在表格中添加技术ID(例如user_event_id),但这不是必需的。)