跳到正文

平成21年度 秋期 ITパスポート試験 問100

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

問100
頻出度★★★

I社は,企業に対してPC関連機器の販売を行っており,販売管理業務の情報をデータベースによって管理している。図1に示すデータベースとデータベース管理システムの印刷機能を使って,販売時に図2の請求書を発行する。 各商品の販売単価は適宜変更され,新たな販売単価とその更新日時が販売単価表の該当レコードに上書きされる。また,取引を行う企業(以下,取引先という)の担当者は原則1人であるが,取引先によっては部署ごとに1人存在することがある。取引先コードは,取引先ごとに採番する。 **図1 販売管理業務に関するデータベースの構造** 商品表

商品コード商品名分類コードメーカコード仕入先コード

販売単価表

商品コード販売単価更新日時

取引先表

取引先コード取引先名

取引先担当者表

取引先コード部署名所在地名前役職電話番号

**図2 請求書の様式** - 表題: 請求書 - 右上: 平成YY年MM月DD日 - 宛先欄 (左側): - [取引先名] [部署名] - [役職] [名前]様 - [所在地] [電話番号] - 本文: 下記のとおりご請求申し上げます。 - 発行者欄 (右側): 東京都文京区本駒込×丁目××番×号/株式会社 I - 右側: 伝票番号 XXXXXXXXXX - 明細表 (見出し行のみ。データ行は空欄):

商品コード商品名数量単価金額

- 合計欄 (明細表の下部。「合計」の行に「税抜」「消費税」「総額」の見出しがあり,その下の値セルは空欄):

合計税抜消費税総額

図2の請求書を表として記録することになった。請求書の表を作成するに当たり,伝票番号,日付,取引先コード,部署名,商品コード,数量,単価の七つの項目を記録することにした。これらの項目を正規化して記録するとき,表の構成として適切なものはどれか。

  • 1つの表
    伝票番号日付取引先コード部署名商品コード数量単価
  • 表1
    伝票番号日付取引先コード部署名/ 表2:商品コード数量単価
  • 表1
    伝票番号日付取引先コード部署名/ 表2:伝票番号商品コード数量単価
  • 表1
    伝票番号日付/ 表2:取引先コード部署名/ 表3:商品コード数量単価
出典 平成21年度 秋期 ITパスポート試験 問100
解説

問 100规范化的第一步是把重复项目(明细行)拆到另一个表里

  • 错误ア

    它把全部 7 个数据项放进了 1 个表。对于有多条明细行的发票来说,相同的单据编号、日期、交易对象代码、部门名称就要按行数重复保存。重复项目没有被分离出去,等于没有做规范化,而且会引起更新时的数据不一致(更新异常)。

  • 错误イ

    把明细部分拆出来这一点是好的,但明细表〔商品代码、数量、单价〕中没有单据编号,因此无法确定哪条明细行属于哪张单据。把表连接起来也还原不出原来的发票,作为拆分方式并不恰当。

  • ウ

    正解 一张发票里混杂着两类数据项:单据编号、日期、交易对象代码、部门名称属于「一张发票只确定一个值」的项目;商品代码、数量、单价则属于「有多少明细行就重复多少次」的项目。规范化的第一步就是把这个重复部分分离出去,放进另一个表(第一范式)。ウ 把它拆成了单据头表〔单据编号、日期、交易对象代码、部门名称〕和明细表〔单据编号、商品代码、数量、单价〕。明细表带有单据编号,就能追溯「这条明细属于哪张单据」;明细表的主键是〔单据编号+商品代码〕,单据编号则作为指向单据头表的外键发挥作用。这样拆分后既能还原出原来的发票,也不会重复记录日期和交易对象代码,因此 ウ 是恰当的。

  • 错误エ

    它拆成了单据编号与日期、交易对象代码与部门名称、明细这 3 个表,但每个表都缺少与其他表相连的键。既无法追溯交易对象代码和部门名称属于哪张单据,也无法追溯明细属于哪张单据,同样还原不出原来的发票。这是拆分过度、关联被切断的例子。

ここがポイント
  • 规范化的第一步是把重复项目(明细行)拆到另一个表里。把单据的表头部分和明细部分分开是最基本的形式。
  • 拆分表之后,一定要在拆出去的那一侧保留指向原表的数据项(外键,这里是单据编号)。没有它就无法连接,也就还原不出原始数据。
用語
解答問100ウ
练这一题

作答记录