模式设计问题

Issues with Schema Design

我正在设计一个具有以下实体的数据库:

Student_detail : 有 id 作为 PK 和休息一些属性。
Event : 有不同事件的详细信息。 event_no是PK。 (大约有32个事件)
Participates_in : 是 student_detailevent 之间的关系,它们的 PK 都是 FK。
Team_with : 这是一个从 student_detail table 到自身的关系,它有 8 participant 列,一个 team_id 列,一个 for_event_no 列( FK 到 event_no)。所有 participant 列都是 student_detail.id 的 FK。

此列的一行表示特定事件的团队。
数字 8,因为所有项目中的最大团队人数为 8。
活动允许的团队规模可变。
我设计了 team_with table 以避免为不同的事件创建 30 个不同的 table。
因此,查询长度正在增加。这是好的设计吗?我想对此提出建议。

团队中所有成员的成员资格是否相同?如果一个团队中有 8 个固定角色,我会同意你的设计。如果没有,我建议:

teams (team_id PK, for_event_no FK)
team_members (team_id PK/FK, student_detail_id PK/FK)

但是,强制执行 8 人的最大团队规模可能会更加困难。我不认为这是一个严重的问题,因为你说不同的事件允许不同的团队规模,所以 8 的限制可以纳入该机制,但它已经实施。

参加活动和加入与该活动相关的团队有什么区别? EventStudent_detail 之间已经存在关系 - 直接在您的 Team_with 中,并在我的建议中传递。 Participates_in 可能是多余的,除非不属于团队也可以参与。