跳到正文

平成21年度 春期 ITパスポート試験 問93

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

問93
頻出度★★☆

フィットネスジムに勤める A さんは,会員管理システムのデータを基に,PC のデータベースソフトを利用して,利用状況の分析を行うことにした。図 1 に示す構造をもつ会員管理システムの会員表及び入館表から,20 代 ~ 50 代の会員についてのデータを 1 か月分取得した。 図1 会員表及び入館表のデータ構造 - 会員表:会員番号,会員名,性別,年齢 - 入館表:会員番号,日付,入館時刻 利用状況の分析を始めるために,取得した会員表及び入館表から図 2 に示す構造をもつ会員利用分析表を作成した。 図2 会員利用分析表のデータ構造 - 会員利用分析表:会員番号,会員名,性別,年齢,日付,入館時刻 作成した会員利用分析表のデータを基に,表に示す性別年代別利用者数一覧を作成した。人数は延べ人数であり,1 か月間の利用回数を表している。 表 性別年代別利用者数一覧

性別年代人数(人)
男性20 代56
男性30 代114
男性40 代227
男性50 代295
男性小計692
女性20 代100
女性30 代215
女性40 代348
女性50 代227
女性小計890

図2に示す会員利用分析表の作成方法について,適切なものはどれか。

出典 平成21年度 春期 ITパスポート試験 問93
解説

問 93

  • ア

    正解 正确答案是 ア。要创建的会员使用情况分析表的项目是「会员编号,会员姓名,性别,年龄,日期,入馆时刻」,其中会员姓名、性别、年龄只存在于会员表中,日期、入馆时刻只存在于入馆表中。也就是说,必须把横跨两个表的项目汇总到同一行里。在关系数据库中完成这一操作的运算就是连接 (join):只要把两个表中共有的会员编号作为连接键,就能为入馆表中每一条入馆记录,配上具有该会员编号的会员表中的会员姓名、性别、年龄,形成一行。这样才第一次可以在同一行中处理「谁 (性别、年代)」和「何时入馆」,从而统计出表中所示的按性别和年代划分的累计人次。另外,一名会员在一个月内可能多次入馆,因此连接结果的行数等于入馆记录的条数,这正好可以直接用于累计人次的汇总。

  • 错误イ

    排序只是改变表中行的排列顺序,并不会增加项目 (列);而投影是从一个表中取出所需列的运算。即使把会员表按会员编号排序,再从入馆表中取出若干列,两者仍然是各自独立的表,不会被整合到同一行中。会员姓名、性别、年龄与日期、入馆时刻无法排列在同一行里。

  • 错误ウ

    选择 (selection) 是从一个表中取出符合条件的行的运算,能取出的列只有该表本身拥有的列。即使以入馆表的会员编号为条件对会员表进行选择,结果中包含的也只有会员表的「会员编号,会员姓名,性别,年龄」,得不到分析所需的日期和入馆时刻。这是把筛选行的运算与把列连在一起的连接混淆了。

  • 错误エ

    把入馆表按会员编号排序,也只是改变行的顺序;接着再对会员表进行选择,得到的仍然只有会员表的列。与 ウ 一样,日期、入馆时刻与会员属性无法凑在同一行中,因此做不出图2 的结构。排序可以作为分析的预处理,但它不是把表与表联系起来的运算。

ここがポイント
  • 关系数据库的基本运算有三种:选择 = 取出符合条件的「行」,投影 = 取出所需的「列」,连接 = 以共有的项目为键把多个表合并成一个表。当所需项目横跨多个表时,要使用的就是连接。
  • 连接键要选择两个表中共同存在的项目。本题中,会员表和入馆表双方都有的会员编号就是键;由于 1 条会员记录对应多条入馆记录,连接结果的行数等于入馆记录的条数,可以用于统计累计使用次数。
用語
解答問93ア
练这一题

作答记录