跳到正文

平成29年度 春期 ITパスポート試験 問69

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

問69
頻出度★★★

ある会社の社員の情報処理技術者試験の受験状況の一部を次に示す。この表を関係データベースで管理するために,二つの表に分割する方法として,適切なものはどれか。ここで,この会社には同姓同名の社員がいるものとする。

社員ID社員名生年月日試験種別試験日合否
0001佐藤 花子1985/4/29ITパスポート2013/4/21合
0002鈴木 一郎1990/11/3基本情報技術者2013/4/21否
0003高橋 二郎1992/2/11ITパスポート2013/4/21否
0001佐藤 花子1985/4/29基本情報技術者2013/10/20合
0003高橋 二郎1992/2/11ITパスポート2013/10/20合
  • 表1
    社員ID社員名生年月日
    表2
    社員ID試験種別試験日合否
  • 表1
    社員ID社員名生年月日
    表2
    社員名試験種別試験日合否
  • 表1
    社員ID社員名生年月日試験日
    表2
    社員ID社員名試験種別合否
  • 表1
    社員ID生年月日試験日
    表2
    社員ID社員名試験種別合否
出典 平成29年度 春期 ITパスポート試験 問69
解説

問 69

  • ア

    正解 原来的一张表中混杂着员工本身的信息(员工姓名、出生年月日)和每一次考试的信息(考试类别、考试日期、合格与否)。由于员工会多次参加考试(例如员工ID 0001 的佐藤花子在 2013/4/21 和 2013/10/20 共考了 2 次),若保持为一张表,相同的员工姓名、出生年月日就会被反复重复记录,成为浪费空间和更新错误的根源。因此,将其拆分为每名员工占 1 行的“员工表(员工ID、员工姓名、出生年月日)”和每次考试占 1 行的“考试表(员工ID、考试类别、考试日期、合格与否)”,再用员工ID将两个表关联起来。由于题目写明“存在同姓同名的员工”,能唯一确定某个人的不是员工姓名,而只有员工ID,因此考试表一侧也必须用员工ID来引用员工表。这一拆分正好对应选项ア,所以ア是恰当的。

  • 错误イ

    表2(考试表)一侧用员工姓名而不是员工ID来做关联。题目明确写有“存在同姓同名的员工”,仅凭员工姓名无法唯一确定某条考试记录属于谁(会与另一个同名的员工弄混)。由于无法与员工表正确对应,所以不恰当。

  • 错误ウ

    它把表示一次考试的考试类别、考试日期、合格与否拆开了——只把考试日期放到表1(员工表)一侧,而把考试类别、合格与否放到另一张表。同一次考试的信息被拆散,无法看出哪个考试日期对应哪个考试类别和合格与否。而且员工拥有多个考试日期,导致员工表无法做到每名员工只占 1 行,员工姓名、出生年月日仍会重复。所以不恰当。

  • 错误エ

    它把同属员工属性的员工姓名和出生年月日拆到了不同的表里,而且还把出生年月日和考试一侧的考试日期放进了同一张表。相关项目的归组被打乱,一次考试的信息(考试类别、考试日期、合格与否)也被拆得只剩考试日期被单独分离出去。项目分配不正确,所以不恰当。

ここがポイント
  • 规范化的基本思路:把混在一张表中的“实体(员工)的信息”和“业务/事件(考试)的信息”,拆分为每名员工占 1 行的员工表和每次考试占 1 行的考试表,再把主键(员工ID)作为外键来关联两个表。
  • 主键的选取:当存在同姓同名时,员工姓名无法唯一识别个人,因此要用员工ID作为主键/连接键。表示一次考试的考试类别、考试日期、合格与否要放在同一张表中。
用語
解答問69ア
练这一题

作答记录