跳到正文

平成23年度 秋期 ITパスポート試験 問57

这道题的解析和你的作答记录。

問57
頻出度★★★

社員数が 50 人で,部署が 10 ある会社が,関係データベースで社員や部署の情報を管理している。“社員”表と“部署”表の関係を示した E-R 図はどれか。ここで,1 人の社員が複数部署に所属することはない。下線のうち実線は主キーを,破線は外部キーを表す。E-R 図の表記は次のとおりとする。 〔表記法〕 [a]——[b] aとbが,1対1の関係であることを表す。 [a]——▶[b] aとbが,1対多の関係であることを表す。 [a]◀——[b] aとbが,多対1の関係であることを表す。 [a]◀——▶[b] aとbが,多対多の関係であることを表す。 社員

社員コード社員名部署コード

部署

部署コード部署名

(社員表:社員コードは実線下線(主キー),部署コードは破線下線(外部キー)。部署表:部署コードは実線下線(主キー)。)

出典 平成23年度 秋期 ITパスポート試験 問57
解説

問 57

  • 错误ア

    [员工]——[部门] 是 1 对 1 的表示法,意思是每 1 名员工都对应 1 个专属的部门。但是 50 名员工只有 10 个部门,无法让每个人分别对应各不相同的部门。而且如果真是 1 对 1 的关系,两者本来就可以合并成 1 张表,这也与 50 人、10 个部门这一数量前提不符。

  • 错误イ

    [员工]——▶[部门] 是 1 对多,也就是读作 1 名员工对应多个部门。这与题干中「1 名员工不会同时隶属于多个部门」正面冲突。把箭头的方向读反时最容易选到它,是典型的错误选项。

  • ウ

    正解 多重性要从两个方向分别数过去才能确定。首先,因为「1 名员工不会同时隶属于多个部门」,所以与 1 名员工对应的部门恰好只有 1 个。反过来,50 名员工却只有 10 个部门,因此 1 个部门里会有多名员工隶属。于是 员工:部门 = 多:1,也就是「多对 1」的关系。〔表示法〕中定义 [a]◀——[b] 为多对 1,把 a 代入员工、b 代入部门,就得到 [员工]◀——[部门],这正是选项 ウ。从表的结构上也能得到印证:员工表的部门编号是虚线下划线=外键,它引用的是部门表的主键部门编号。外键的放置方式是让「多」侧的表去引用「1」侧的主键,这与员工为多侧、部门为 1 侧的读法一致。

  • 错误エ

    [员工]◀——▶[部门] 是多对多,意思是两个方向上都有多个相互对应。从部门一侧看员工有多名,这一点没错,但从员工一侧看部门也变成了多个,这一点违反了条件。另外,如果是多对多,只在员工表中放 1 个部门编号是表达不出来的,需要一张连接两者的对应表(关联实体),因此也与题中给出的表结构不符。

ここがポイント
  • 多重性(基数)是通过从两个方向数「对方有多少条与之对应」来确定的。员工→部门是 1 条(1 人 1 个部门),部门→员工是多条(50 人分到 10 个部门),所以 员工:部门 = 多:1。题目中 50 和 10 这两个数量,正是提示哪一侧是「多」的线索。
  • 在 1 对多(多对 1)的关系中,「多」侧的表会把「1」侧的主键作为外键持有。本题中员工表里放入了部门编号作为外键(虚线下划线),仅凭这一点就能判断员工是多侧、部门是 1 侧。
  • E-R 图中的箭头不能按背下来的通用规则去读,而要按题干中定义的〔表示法〕来读。本题中定义 [a]——▶[b] 为 1 对多、[a]◀——[b] 为多对 1,所以箭头尖端所指的一侧就是「多」。如果先入为主地认为箭头尖端是「1」侧,就会把 イ 和 ウ 弄反。
用語
解答問57ウ
练这一题

作答记录