跳到正文

令和5年度 ITパスポート試験 問59

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

問59
頻出度★★★

関係データベースで管理された“会員管理”表を正規化して,“店舗”表,“会員種別”表及び“会員”表に分割した。“会員”表として,適切なものはどれか。ここで,表中の下線は主キーを表し,一人の会員が複数の店舗に登録した場合は,会員番号を店舗ごとに付与するものとする。 会員管理

店舗コード店舗名会員番号会員名会員種別コード会員種別名
001札幌1試験 花子02ゴールド
001札幌2情報 太郎02ゴールド
002東京1高度 次郎03一般
002東京2午前 桜子01プラチナ
003大阪1午前 桜子03一般

店舗

店舗コード店舗名

会員種別

会員種別コード会員種別名
  • 会員番号会員名
  • 会員番号会員名会員種別コード
  • 会員番号店舗コード会員名
  • 会員番号店舗コード会員名会員種別コード
出典 令和5年度 ITパスポート試験 問59
解説

問 59规范化与复合主键:单独无法唯一的项目要做成复合主键

  • 错误ア

    主键只有会员编号而不包含店铺代码。会员编号按各店铺分别赋予,会跨店铺重复(1 在札幌、东京、大阪都存在),因此无法唯一识别。此外还缺少会员类别代码,无法表示各会员的会员类别,造成信息丢失。

  • 错误イ

    虽然含有会员类别代码,但主键只有会员编号而没有店铺代码,因此无法唯一识别跨店铺重复的会员编号。错误之处在于没有构成复合主键。

  • 错误ウ

    主键为「店铺代码+会员编号」是正确的,但缺少会员类别代码。会员类别是依赖于「店铺代码+会员编号」这一组合的属性(午前 樱子在东京为白金卡、在大阪为普通),若舍弃它就无法还原原来的会员管理表,也就不是无损分解。

  • エ

    正解 规范化的关键在于「会员编号按各店铺分别赋予」这一条件。实际上,会员编号=1 在札幌、东京、大阪中都存在,仅凭会员编号无法唯一识别一名会员。因此会员表的主键必须采用「店铺代码+会员编号」这一复合主键。接下来看各列分别依赖于哪个键:会员姓名和会员类别代码由「店铺代码+会员编号」这一组合决定(例如午前 樱子在东京的会员类别代码为 01=白金卡,在大阪为 03=普通,同一会员编号在不同店铺的会员类别也不相同)。另一方面,店铺名仅由店铺代码决定、会员类别名仅由会员类别代码决定,因此分别分离到店铺表和会员类别表中。最终会员表为「店铺代码(主键)、会员编号(主键)、会员姓名、会员类别代码(外键)」,这是能够无遗漏地还原原表的无损分解。这与选项エ一致。

ここがポイント
  • 规范化与复合主键:单独无法唯一的项目要做成复合主键。根据会员编号按各店铺分别赋予这一条件,与店铺代码组成的复合键(店铺代码+会员编号)成为会员表的主键。
  • 基于函数依赖的属性分配(无损分解):店铺名依赖于店铺代码、会员类别名依赖于会员类别代码,因此分离到另外的表中。另一方面,会员姓名与会员类别代码依赖于整个复合键,因此保留在会员表中,使其能够无遗漏地还原原表。
用語
解答問59エ
练这一题

作答记录