跳到正文

平成30年度 春期 ITパスポート試験 問81

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

問81
頻出度★★★

顧客名と住所, 商品名と単価, 顧客が注文した商品の個数と注文した日付を関係データベースで管理したい。正規化された表として, 適切なものはどれか。ここで, 下線は主キーを表し, 顧客名や商品名には, それぞれ同一のものがあるとする。

  • 顧客
    顧客番号(主キー)顧客名住所
    商品
    商品番号(主キー)商品名単価
    注文
    注文番号(主キー)顧客番号商品番号個数日付
  • 顧客
    顧客番号(主キー)顧客名住所
    商品
    商品番号(主キー)商品名単価
    注文
    注文番号(主キー)顧客名商品名個数日付
  • 顧客
    顧客番号(主キー)顧客名住所日付
    注文
    注文番号(主キー)顧客名商品名単価個数
  • 商品
    商品番号(主キー)商品名単価個数
    注文
    注文番号(主キー)商品番号顧客名住所日付
出典 平成30年度 春期 ITパスポート試験 問81
解説

問 81

  • ア

    正解 ア 把 3 个表按各自对应的实体进行了恰到好处的划分。顾客表为「顾客编号(主键)、顾客姓名、地址」,商品表为「商品编号(主键)、商品名称、单价」,订单表为「订单编号(主键)、顾客编号、商品编号、数量、日期」。顾客姓名和商品名称可能重复,无法唯一识别,但 ア 在订单表中用顾客编号、商品编号(外键)来引用顾客表和商品表,因此能够正确地确定是哪位顾客、哪件商品。此外,地址只放在顾客表中,单价只放在商品表中,数量和日期只放在订单表中,同一事实不会在多处重复。这是一种不会发生更新异常的规范化设计,满足全部要求。

  • 错误イ

    顾客表和商品表是合理的,但订单表不是用顾客编号、商品编号,而是用可能重复的「顾客姓名」「商品名称」来引用顾客和商品。若存在同名的顾客或商品,就无法唯一确定,也无法正确连接。引用应当用作为主键的编号来进行,因此不恰当。

  • 错误ウ

    顾客表中混入了属于每笔订单的属性「日期」,导致 1 位顾客只能持有 1 个日期,会发生更新异常。此外,订单表中持有商品固有的「单价」(也没有商品表),并且用名称来引用,存在冗余、划分不足,没有实现规范化。

  • 错误エ

    商品表中混入了属于每笔订单的属性「数量」,订单表中重复持有顾客固有的「地址」(也没有顾客表),并且顾客也是用可能重复的顾客姓名来引用。属性没有配置到正确的实体上,存在冗余,不是规范化的设计。

ここがポイント
  • 规范化:把各属性配置到它所从属的实体的表中,不让同一事实重复(地址属于顾客、单价属于商品、数量和日期属于订单)。表与表之间的关联用外键来连接。
  • 主键与引用的原则:像顾客姓名、商品名称这样可能重复的值无法用于唯一识别,因此引用和连接要用主键(顾客编号、商品编号)来进行。
用語
解答問81ア
练这一题

作答记录