[说明]
某地区举行篮球比赛,需要开发一个比赛信息管理系统来记录比赛的相关信息。
[需求分析结果]
1.登记参赛球队的信息。记录球队的名称、代表地区、成立时间等信息。系统记录球队的每个队员的姓名、年龄、身高、体重等信息。每个球队有一个教练负责管理球队,一个教练仅负责一个球队。系统记录教练的姓名、年龄等信息。
2.安排球队的训练信息。比赛组织者为球队提供了若干个场地,供球队进行适应性训练。系统记录现有的场地信息,包括:场地名称、场地规模、位置等信息。系统可为每个球队安排不同的训练场地,如表3-9所示。系统记录训练场地安排的信息。
|
{{B}}表3-9 训练安排表{{/B}}
|
{{B}}球队名称{{/B}} |
{{B}}场地名称{{/B}} |
{{B}}训练时间{{/B}} |
|
解放军 |
一号球场 |
2008-06-09 14:00-18:00 |
|
解放军 |
一号球场 |
2008-06-12 09:00-12:00 |
|
解放军 |
二号球场 |
2008-06-11 14:00-18:00 |
|
山西 |
一号球场 |
2008-06-10 09:00-12:00 |
|
3.安排比赛。该赛事聘请有专职裁判,每场比赛只安排一个裁判。系统记录裁判的姓名、年龄、级别等信息。系统按照一定的规则,首先分组,然后根据球队、场地和裁判情况,安排比赛(每场比赛的对阵双方分别称为甲队和乙队)。记录参赛球队、比赛时间、比分、场地名称等信息,如表3-10所示。
|
{{B}}表3-10 比赛安排表{{/B}}
A组:
|
{{B}}甲队…乙队{{/B}} |
{{B}}场地名称{{/B}} |
{{B}}比赛时间{{/B}} |
{{B}}裁判{{/B}} |
{{B}}比分{{/B}} |
|
解放军…北京 |
一号球场 |
2008-06-17 15:00 |
李大明 |
|
|
天津…山西 |
一号球场 |
2008-06-17 19:00 |
胡学梅 |
|
B组
|
{{B}}甲队…乙队{{/B}} |
{{B}}场地名称{{/B}} |
{{B}}比赛时间{{/B}} |
{{B}}裁判{{/B}} |
{{B}}比分{{/B}} |
|
上海…安徽 |
二号球场 |
2008-06-17 15:00 |
丁鸿平 |
|
|
山东…辽宁 |
二号球场 |
2008-06-17 19:00 |
郭爱琪 |
|
|
4.所有球员、教练和裁判可能出现重名情况。
[概念模型设计]
根据需求阶段收集的信息,设计的实体联系图和关系模式(不完整)如下。
1.实体联系图(图3-20)
【正确答案】
【答案解析】[问题2]
根据补充后的E-R图,球队与球员之间的1:N联系应通过将1端实体(球员)的主码(球队名称)加入到N端实体(球员)对应的关系中来表达。这类联系也可通过独立的一个关系来表达,如球队-球员 (球队名称,队员编号),这样会对查询增加多余的连接操作,因此一般不采用这种方法。
同样,球队与教练之间的1:1联系也应通过将一方的主码增加到另一方实体对应的关系中,来表达联系。
训练和比赛为多对多联系,只能独立成一个关系模式,取该联系相关联的各实体的码及联系自有的属性构成。如比分和分组应该是比赛的属性,再加上球队、裁判、场地的码,即构成“比赛记录”的关系模式。比赛记录关系模式的主键可以是“{{U}}场地名称,比赛时间{{/U}}”,也可以是“{{U}}裁判,比赛时间{{/U}}”,或者是“{{U}}甲队,比赛时间{{/U}}”,再或者是“{{U}}乙队,比赛时间{{/U}}”。其外键是“甲队,乙队,场地名称,裁判”。
同理,训练是球队和场地的多对多联系,训练开始时间和结束时间为训练的属性,加上球队的码和场地的码,构成“训练记录”关系模式。训练记录关系模式的主键可以是“{{U}}球队,开始时间{{/U}}”,也可以是“{{U}}场地名称,开始时间{{/U}}”,或者是“{{U}}球队,结束时间{{/U}}”,再或者是“{{U}}场地名称,结束时间{{/U}}”。其外键是“球队名称,场地名称”。