跳到正文

平成27年度 春期 ITパスポート試験 問86

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

問86
頻出度★★★

P 社は,セキュリティを確保するために自社ビルを 10 の区画に分け,各区画への入退室を IC カードで行うシステムを導入し,その管理方法についての検証を始めた。この IC カードを使った入退室管理(以下,入退室管理という)の概要は次のとおりであり,入退室管理で用いるデータベースの構造(一部)を図 1 に示す。 〔入退室管理の概要〕 (1) 社員は一つの部署に所属し,IC カードを 1 人 1 枚貸与される。IC カードはカード固有の IC カード番号をもつ。IC カードの情報は IC カード登録表に登録される。 (2) 社員の入退室が許可されている区画は個別に決められており,許可された区分の情報が入退室許可表に登録される。入退室が可能な場合で,その区画が所属部署の入っている区画の場合は “1”,それ以外で入退室が必要と認められた区画の場合は “2” が,入退室許可表の許可区分に登録される。 (3) 各区画には IC カードリーダが設置されており,入退室が許可された IC カード番号を読み取ったときだけドアを解錠し,入退室の記録を入退室記録表に記録する。このとき,入室の場合は “1”,退室の場合は “−1” を入退室記録表の入退室区分に記録する。 なお,P 社は,社員に対して午前 0 時までに退社することを義務づけている。 入退室許可表のレコードを一意に決めるための主キーとして,適切なものはどれか。ここで,下線は主キーを表す。

  • 社員番号区画番号許可区分(下線:社員番号)
  • 社員番号区画番号許可区分(下線:社員番号, 区画番号)
  • 社員番号区画番号許可区分(下線:社員番号, 許可区分)
  • 社員番号区画番号許可区分(下線:社員番号, 区画番号, 許可区分)
出典 平成27年度 春期 ITパスポート試験 問86
解説

問 86主键是「能唯一识别表中的记录,并且不含多余列的最小列组合」

  • 错误ア

    如果只把员工编号作为主键,一名员工就只能拥有一行记录。但实际上一名员工会拥有多个区域的出入许可,因此会存在员工编号相同的多行,无法唯一确定一条记录。

  • イ

    正解 门禁许可表是保存「哪位员工、可以进入哪个区域、以何种许可类别进入」的表,是中介员工与区域之间多对多关系的关联表(交叉表)。一名员工可以拥有多个区域的许可,反过来一个区域也可以许可给多名员工,因此仅凭员工编号或仅凭区域编号,都会出现取值相同的多行,无法唯一确定一条记录。只有把员工编号和区域编号这两列组合起来,才能把「该员工对该区域的许可」唯一确定为一行。剩下的许可类别,在这个组合确定之后就随之确定,属于依赖于主键的属性,所以不纳入主键。因此,在员工编号和区域编号两列上加下划线的 イ 才是合适的主键。

  • 错误ウ

    员工编号与许可类别的组合无法保证唯一性。许可类别只是「随时可进入」「限定时段」这样少数几个分类取值,同一名员工可能以相同的许可类别拥有多个区域的行。而且许可类别本身是由主键决定的依赖属性,把它作为主键的组成列并不恰当。

  • 错误エ

    把三列全部作为主键确实能让每一行唯一,但仅用员工编号和区域编号这两列就已经保证了唯一性,许可类别是多余的。主键必须是能唯一识别记录、且不含多余列的最小列组合(最小性),包含冗余列的 エ 不适合作为主键。

ここがポイント
  • 主键是「能唯一识别表中的记录,并且不含多余列的最小列组合」。当单独一列无法保证唯一时,就使用由多个列组合而成的复合主键(联合主键)。
  • 在表示多对多关系的关联表(交叉表)中,两端实体的键组合起来构成主键,其余的列则是依赖于该主键的属性。
用語
解答問86イ
练这一题

作答记录