跳到正文

平成25年度 春期 ITパスポート試験 問55

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

問55
頻出度★★★

関係データベースを使い“社員”表と“部署”表を作成して社員情報を管理する。“社員”表と“部署”表に,必要に応じて設定する主キーと外部キーの適切な組合せはどれか。ここで,社員は必ず“部署”表に存在する部署に所属するものとし,社員データの追加や更新をするときには,参照制約を利用して整合性を確保するものとする。 社員

社員コード社員名入社年生年月日部署コード

部署

部署コード部署名
出典 平成25年度 春期 ITパスポート試験 問55
解説

問 55主键是唯一标识表中行的列,不允许重复值和空值(NULL)

  • 错误ア

    主键的设置虽然正确,但把外键写成了「无」。没有外键,参照约束就不会生效,因此即使把“部门”表中不存在的部门代码录入员工数据,DBMS 也无法阻止。这样就无法满足题目要求的「利用参照约束确保完整性」这一条件,所以是错误的。

  • イ

    正解 主键是「唯一标识表中每一行的列」,因此在一名员工占一行的“员工”表中是员工代码、在一个部门占一行的“部门”表中是部门代码,各自成为主键。接下来,“员工”表的部门代码列表示该员工所属的部门,其值指向“部门”表主键(部门代码)的值。像这样引用其他表主键的列就是外键。设置外键后,参照约束(参照完整性约束)便会生效,当试图用“部门”表中不存在的部门代码添加或更新员工数据时,DBMS 会予以拒绝,因此题目中「员工必定隶属于『部门』表中存在的部门」这一条件可以自动得到遵守。所以,主键是“员工”表的员工代码和“部门”表的部门代码、外键是“员工”表的部门代码,即イ为正确答案。

  • 错误ウ

    由于“员工”表没有设置主键,员工代码重复的行也能被登记,无法唯一标识员工。另外,员工代码并不是引用其他表主键的列,所以不属于外键。能够成为外键的只有“员工”表的部门代码。

  • 错误エ

    如果把“员工”表的部门代码设为主键,其取值就不允许重复,同一个部门便无法有多名员工隶属。另外,“部门”表的部门代码是被引用一方的主键而不是外键,员工代码也不引用其他表,因此同样不能成为外键。这是主键与外键的角色互换了的组合,参照的方向也是相反的。

ここがポイント
  • 主键是唯一标识表中行的列,不允许重复值和空值(NULL)。标识一名员工的是员工代码,标识一个部门的是部门代码。
  • 外键是引用其他表主键的列,设置在一对多关系中「多」的一方(这里是员工)。设为外键后参照约束便会生效,DBMS 会拒绝添加或更新在被引用方不存在的值,从而保持完整性。
用語
解答問55イ
练这一题

作答记录