模式设计问题
Issues with Schema Design
我正在设计一个具有以下实体的数据库:
Student_detail
: 有 id
作为 PK 和休息一些属性。
Event
: 有不同事件的详细信息。 event_no
是PK。 (大约有32个事件)
Participates_in
: 是 student_detail
和 event
之间的关系,它们的 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 的限制可以纳入该机制,但它已经实施。
参加活动和加入与该活动相关的团队有什么区别? Event
和 Student_detail
之间已经存在关系 - 直接在您的 Team_with
中,并在我的建议中传递。 Participates_in
可能是多余的,除非不属于团队也可以参与。
我正在设计一个具有以下实体的数据库:
Student_detail
: 有 id
作为 PK 和休息一些属性。
Event
: 有不同事件的详细信息。 event_no
是PK。 (大约有32个事件)
Participates_in
: 是 student_detail
和 event
之间的关系,它们的 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 的限制可以纳入该机制,但它已经实施。
参加活动和加入与该活动相关的团队有什么区别? Event
和 Student_detail
之间已经存在关系 - 直接在您的 Team_with
中,并在我的建议中传递。 Participates_in
可能是多余的,除非不属于团队也可以参与。