Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 模式设计的问题_Mysql_Entity Relationship - Fatal编程技术网

Mysql 模式设计的问题

Mysql 模式设计的问题,mysql,entity-relationship,Mysql,Entity Relationship,我正在设计一个具有以下实体的数据库: Student\u detail:将id作为主键,并保留一些属性。 事件:包含有关不同事件的详细信息事件编号为主键。(大约有32个活动) 参与:是学生详细信息和事件之间的关系,两者的PK均为FKs。 Team\u with:这是一个从student\u detail表到自身的关系,它有8个participant列,一个Team\u id列,一个for\u event\u no列(FK到event\u no)。所有participant列都是指向student

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

Student\u detail
:将
id
作为主键,并保留一些属性。
事件
:包含有关不同事件的详细信息<代码>事件编号为主键。(大约有32个活动)
参与
:是
学生详细信息
事件
之间的关系,两者的PK均为FKs。
Team\u with
:这是一个从
student\u detail
表到自身的关系,它有8个
participant
列,一个
Team\u id
列,一个
for\u event\u no
列(FK到event\u no)。所有
participant
列都是指向
student\u detail.id
的FKs。

此列的一行表示特定事件的团队。
数字是8,因为所有项目的最大团队规模都是8。
事件具有不同数量的允许团队规模。
为了避免为不同的事件创建30个不同的表格,我设计了带表格的团队。

因此,查询长度正在增加。这个设计好吗?我想听听这方面的建议。

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

teams (team_id PK, for_event_no FK)
team_members (team_id PK/FK, student_detail_id PK/FK)
然而,强制执行8人的最大团队规模可能会更加困难。我不认为这是一个重大问题,因为你说不同的事件允许不同的团队规模,所以8的限制可以被纳入该机制,不管它是如何实现的


参加一项活动与参加该活动的团队成员有什么区别?在
事件
学生详细信息
之间已经存在一种关系-直接在你的
团队中与
,并在我的建议中传递<代码>参与\u可能是多余的,除非可以不作为团队的一部分参与。

每个活动都有不同的团队规模。这些团队规模的最大值为8(有一个团队规模为8的活动,其余的都小于8)。甚至我也开始认为,
中有一个参与
团队
是多余的。那么,在
参与
中,我会包括
团队id(int)
是领导者(bool)
列,并删除
团队
每个事件中一个学生可以属于多个团队吗?不,但是他可以参加多种活动。你的想法听起来不错。如果您有
团队(团队id PK,事件编号FK)
,则您可以从
参与的
中删除
事件编号
,除非您想使用它对
(学生详细信息id,事件编号)
实施唯一约束。