我正在设计一个具有以下实体的数据库:
Student_detail
:将id
作为PK并保留一些属性
Event
:有关于不同事件的详细信息。 event_no
是PK。 (大约有32个事件)
Participates_in
:student_detail
与event
之间的关系,其PK均为FK。
Team_with
:这是student_detail
表与其自身的关系,它有8个participant
列,一个team_id
列,一个for_event_no
列(FK到event_no) 。所有participant
列都是student_detail.id
的FK。
本栏的一行表示特定事件的团队
数字8因为,所有赛事的最大球队规模是8
事件具有可变数量的允许团队规模
我设计了team_with表,以避免为不同的事件创建30个不同的表
因此,查询长度正在增加。这是好设计吗?我想为此提出建议。
答案 0 :(得分:0)
团队中的所有成员都有平等的会员资格吗?如果团队中有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
可能是多余的,除非参与是可能的,而不是团队成员。