跳到正文

令和6年度 ITパスポート試験 問81

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

問81
頻出度★★★

一つの表で管理されていた受注データを,受注に関する情報と商品に関する情報に分割して,正規化を行った上で関係データベースの表で管理する。正規化を行った結果の表の組合せとして,最も適切なものはどれか。ここで,同一商品で単価が異なるときは商品番号も異なるものとする。また,発注者名には同姓同名はいないものとする。 受注データ

受注番号発注者名商品番号商品名個数単価
T0001試験花子M0001商品153,000
T0002情報太郎M0002商品234,000
T0003高度秋子M0001商品123,000
  • 上段表
    受注番号発注者名 / 下段表: 商品番号商品名個数単価
  • 上段表
    受注番号発注者名商品番号 / 下段表: 商品番号商品名個数単価
  • 上段表
    受注番号発注者名商品番号個数単価 / 下段表: 商品番号商品名
  • 上段表
    受注番号発注者名商品番号個数 / 下段表: 商品番号商品名単価
出典 令和6年度 ITパスポート試験 問81
解説

問 81

  • 错误ア

    订单一侧的表中没有商品编号,与商品表关联的外键随之丢失。此外,它把数量放进了商品表,但数量由订单编号决定(是每笔订单的值),并不依赖于商品编号,因此不能放在商品表中。错误。

  • 错误イ

    把数量放进商品表这一点是错误的。数量不是按商品固定的值,而是按每笔订单确定的(订单编号 → 数量),因此不属于以商品编号为主键的商品表。即使是同一商品,数量也会因订单不同而变化,会成为重复与矛盾的根源。

  • 错误ウ

    把单价保留在订单一侧的表中这一点是错误的。单价由商品编号唯一确定(商品编号 → 单价),若不移到商品表,相同商品编号的行就会反复出现单价,重复依然残留。商品表只有「商品编号、商品名」而缺少单价,因此规范化不彻底。

  • エ

    正解 正确答案是エ。整理原始订单数据的函数依赖可知:订单编号确定后,下单者姓名、商品编号、数量就唯一确定(订单编号 → 下单者姓名、商品编号、数量);商品编号确定后,商品名、单价就唯一确定(商品编号 → 商品名、单价)。关键在于:条件「同一商品但单价不同时,其商品编号也不同」保证了「商品编号 → 单价」这一依赖成立。因此,关于订单的表为「订单编号(主键)、下单者姓名、商品编号(外键)、数量」,关于商品的表为「商品编号(主键)、商品名、单价」。数量随每笔订单而变,故保留在订单一侧;单价由商品决定,故移到商品一侧以消除重复。这与エ的组合相一致。

ここがポイント
  • 基于函数依赖的规范化:整理为「订单编号 → 下单者姓名、商品编号、数量」与「商品编号 → 商品名、单价」,并按各自的依赖目标拆分表。
  • 属性归属的判断:数量按每笔订单确定,故放在订单表;单价、商品名由商品编号确定,故放在商品表;并以商品编号作为外键进行关联,从而消除重复。
用語
解答問81エ
练这一题

作答记录