コンピューター100%

パソコン利用技術検定試験1級

パソコン利用技術検定試験
 このパソコン利用技術検定試験は、全国工業高等学校長会が主催する、ワープロ、表計算、データベース等の利用技術習得を目指す検定です。
 全体的にハードウェア、ソフトウェア、ネットワーク、マルチメディアを扱います。
 それに加えて3級ではワープロ、2級では表計算、1級ではデータベースを実技試験も含め、行います。
 ここでは1級を取り上げて、問題の傾向やテキストの演習問題の解説などを記していこうと思います。

1級のカリキュラム
データベース関連知識
SQL
パソコンのハードウェア、ソフトウェア
パソコンの周辺機器
ネットワーク関連
RASIS,法令

<<<ページ内リンク>>>

データベース関連知識
 データ管理・検索・整合性・DBMS,正規化、リレーショナルデータベースなど。
 アプリケーション、データベースサーバー、Webサーバーなど
 テーブル、クエリー、フォーム、レポートなど

・SQL
 データ定義、データ制御など
 種類、関数・演算子、データ紹介、挿入、更新、削除など

・パソコンのハードウェア、ソフトウェア
 DOS/V組み立てパソコンに必要な機器と組み立て方法(CPU,マザーボード、メモリ、ケース、ビデオカード、サウンドカードなど)
 システムの設定、OSのインストール、デバイスのインストール方法など。

パソコンの周辺機器
 HDDの構造、その他の補助記憶装置、ディスプレイの構造など

・ネットワーク関連、マルチメディア
 OSI,通信規約、ネットワークの構築、システム管理
 インターネット接続、電子商取引など
 伝送技術、通信サービスなど
 マルチメディアの利用、応用システムなど

・RASIS、法令
 信頼性、可動性、保守性、完全性、機密性
 電子通信事業法、電子商取引関連法、知的所有権など

データベース関連知識
1.
 データベースの利点は、データを複数人で共有できることです。
 フロッピーなどで共有するには手間がかかり、整合性が保てません。ファイル共有でも同時更新はできません。
2.
 テーブルの列を「フィールド」、行を「レコード」と呼びます。
 データ型には数値型、文字列形、Yes/No型、日付時刻型、通貨型などがあります。
3.
 コード化の祭は、英数字で、見やすく、拡張性を考慮したものがよいでしょう。
 データベースは、通常第三正規化まで行います。ただ、業務上ではわざと第一や第二で止めることもあるようです。
 テーブル間のリレーションは、フィールド名が異なっていてもデータ型が合っていれば行えます。
4.
 データベースを操作する祭、GUIを使ったものをQBE(Query By Example),コマンドを入力するSQL(Structured Query Language)があります。
 第一正規化とは、繰り返しのある項目を独立して、主キーを設定します。
 第二正規化は、主キーと関連する項目を独立させて、ほかのテーブルに分けることを言います。
 第三正規化は、主キー以外の項目で関連するものがあればそれを独立させます。
5.
 ロールバックとは、データベースの更新をキャンセルし、元に戻すことを言い、ロールフォワードは、データベースが壊れた場合などに、ある時点のバックアップからその後の更新ログを元に順を追って復元していくことを言います。
 インターネットを利用したショッピングサイトなどでデータベースにアクセスするにはCGI言語を用いたり、JSP,ASPなどの言語を使って処理を行います。
6.
 電話番号は()や-の記号があるのでテキスト型でも良いそうです。私だったら数値型にしますけどね。
7.
 データベースソフト(Access、桐、ファイルメーカーproなど)にはレポート印刷や、QBEで操作できるクエリー機能があります。

SQL
 SQLはデータベースを構築(定義)、検索(操作)するための言語です。  SQL-DDL(Data Definition Language):データベースの構築  SQL-DML(Data Manipulation Language):データベースの検索    データ操作  照会(SELECT),挿入(INSERT),更新(UPDATE),削除(DELETE)    照会するためのSQL書式  SELECT 結果表示 FROM 表 WHERE 条件 GROUP BY グループ化する列 HAVING グループ化した後の条件 ORDER BY 並び替え(ASC:昇順 DESC:降順)    挿入するためのSQL書式  INSERT INTO 表 (列名,列名,・・・) VALUES (値,値,・・・)  例)「商品」表に品番50,品名ビデオカメラを挿入する → INSERT INTO 商品(品番,品名) VALUES(50,ビデオカメラ)    更新するためのSQL書式  UPDATE 表 SET 列名=値,列名=値,・・・ WHERE 条件(条件をつけないとすべてのレコードが対象になります)  例) 「商品」表の品番30の品名をプラズマTVに変更する → UPDATE 商品 SET 品名=プラズマTV WHERE 品番=30    削除するためのSQL書式  DELETE * FROM 表 WHERE 条件(条件をつけないとすべてのレコードが対象になります)  例)「商品」表の品番15を削除する → DELETE * FROM 商品 WHERE 品番=15

パソコンの周辺機器
・ハードディスク
 磁気記録方式の補助記憶装置で、磁気メディアが数枚入っています。
 トラックは同心円状の記憶領域で、さらにセクタに分割されます。
 磁気ヘッドは磁気メディアを上下からはさむようになっているので、磁気メディアの数の倍あります。。
 ファイルの書き込み、削除を繰り返していると、ファイルの断片化が起こります。それを直すのがデフラグです。
 デフラグについては処理速度を上げるに詳しく書いてありますので参照ください。
 RAID(レイド)とは、複数のハードディスクを1台のハードディスクとして扱う技術。
 RAID0が分散して書き込み、速度を上げるストライピング、RAID1が同じデータを書き込んで信頼性をあげるミラーリング、RAID0にエラー訂正機能を加えたRAID5などがある。
 アクセス時間はシーク時間+サーチ時間+データ転送時間。
・光ディスク装置
 CD-ROM,CD-R,CD-RW,DVD
・光磁気ディスク装置
 MO
・PCカード FAX,SCSIカード、ネットワークカード、ハードディスクカードなどに使われる。
・OCRとディジタルカメラ
 VGA(640*480)で撮影するには、640x480=30200ドット ほぼ 30万画素が必要。
・ディスプレイ装置 CRT,液晶がある
・NIC

実技の解説
 実技は[ZenSQL]というソフトを用いて、SQLを作る問題です。  SQLの書き方に慣れておかないとなかなか解けません。  テキストに載っている練習問題の答えのSQLを解説していきたいと思います。

1
(2)

select 商品仕様在庫.品番,コンピュータ.品名,商品仕様在庫.在庫 from 商品仕様在庫,コンピュータ where 商品仕様在庫.分類番号=コンピュータ.分類番号
これは在庫している商品をすべて出力するものです。ただし、[コンピュータ]表の[品名]を出力する必要があるので[分類番号]で二つの表を結合しています。
(3)
select 商品仕様在庫.品番,コンピュータ.品名,商品仕様在庫.分類番号,商品仕様在庫.在庫 from 商品仕様在庫,コンピュータ where 商品仕様在庫.分類番号=コンピュータ.分類番号 and 商品仕様在庫.在庫<10 order by 商品仕様在庫.在庫 desc
これは、(2)に、分類番号を表示し、在庫量が10以下のものだけを表示させたものです。また、在庫量の降順なので、[order by]句を使い、[desc]を指定しています。

2
(2)

select 商品.分類,sum(売上.売上数量*商品価格.販売価格) as 売上 from 商品,売上,商品価格 where 商品.品番=商品価格.品番 and 商品.品番=売上.品番 group by 商品.分類,売上.売上日 having 売上.売上日=#4/16/2001#
これは、分類ごとに、日付で集計した数値を出す必要があるので、[group by]で、グループ化することを指示しています。その上で、ある特定の日付を指定するため[having]を使っています。このように、グループ化した後に条件を指定するには、[where]ではなく[having]を使います。また、[売上]という列名を[as]を利用してつけています。 (3)
select sum((商品価格.販売価格-商品価格.仕入価格)*売上.売上数量) as 利益 from 商品価格,売上 where 商品価格.品番 = 売上.品番 group by 売上.売上日 having 売上.売上日=#4/17/2001#
こちらは、分類で分ける必要がないので、日付だけでグループ化を行い、[having]で日付を指定しています。

3
(2)

select 顧客ID,顧客名,count(伝票.発送者ID) as 回数 from 伝票 inner join 顧客 on 顧客.顧客ID=伝票.発送者ID group by 顧客.顧客ID,顧客.顧客名 order by count(伝票.発送者ID) desc
このSQLの特徴は、表の結合を[inner join]を使っていることです。[where]を使わなくても[表 inner join 表 on 列=列]とすることで表の結合を行えます。そして、[count]関数で数の集計を行い、顧客ごとに表示しています。
(3)
select 顧客.顧客ID,顧客.顧客名,sum(料金.料金) as 請求金額 from 顧客,料金,伝票 where 伝票.サイズ=料金.サイズ and 顧客.顧客ID=伝票.発送者ID group by 顧客.顧客ID,顧客.顧客名
これは、顧客ごとに、料金を合計した請求金額を求めています。

4
(2)

select 社員.社員ID, 社員.社員名, sum(勤務.退勤時間-勤務.出勤時間) as 勤務時間 from 社員,勤務 where 社員.社員ID=勤務.社員ID and 勤務.日付 between #04/16/2001# and #04/19/2001# group by 社員.社員ID,社員.社員名
日付の期間を[between]を使って求めています。この日付の期間内のデータの中から社員ごとの勤務時間を算出しています。
(3)
select 社員.社員ID, 社員.社員名, (sum(勤務.退勤時間-勤務.出勤時間))*社員.時間給 as 給与 from 社員,勤務 where 社員.社員ID=勤務.社員ID and 社員.社員ID=6 and 勤務.日付 between #04/15/2001# and #04/20/2001# group by 社員.社員ID,社員.社員名,社員.時間給
これは(2)に、日付範囲を変え、特定の一人だけ抽出し、給与を計算する式を与えたものです。

5
(2)

select 顧客.顧客ID,顧客.顧客名,count(利用者ID) as 利用回数 from 顧客 inner join 使用記録 on 顧客.顧客ID = 使用記録.利用者ID where 使用記録.利用日=#05/03/2001# group by 顧客.顧客ID,顧客.顧客名 having 顧客.顧客ID=1
[inner join]を用いて[顧客]表と[使用記録]表を結合させます。ある日を特定した上で、顧客ごとグループ化します。 そして、[having]句を用いて一人の顧客を特定しています。
(3)
select 顧客.顧客ID,顧客.顧客名,sum(使用記録.通常使用料金) as 使用料金 from 顧客 inner join 使用記録 on 顧客.顧客ID = 使用記録.利用者ID group by 顧客.顧客ID,顧客.顧客名,使用記録.利用日 having 使用記録.利用日=#05/03/2001#
[sum]関数を使い、顧客ごとにグループ化して顧客ごとの利用料金を求めています。さらに日付でもグループ化し、日付には[having]で日を指定しています。

6
(2)

select ソフトウェア.製品名,制作会社.会社名,ソフトウェア.価格 from ソフトウェア,制作会社 where ソフトウェア.会社ID=制作会社.会社ID and ソフトウェア.分類='表計算'
少し表の数が増えただけで問題は簡単。普通のSQL。
(3)
select 制作会社.会社名,ソフトウェア.製品名,導入数.導入数,導入数.導入場所 from 制作会社,ソフトウェア,導入数 where 制作会社.会社ID=ソフトウェア.会社ID and ソフトウェア.製品ID=導入数.製品ID order by 制作会社.会社名
これも3つのテーブルを結合するだけでいいと思ったのに[order by]を使わないと不正解になる。SQLを記述する欄には[order by]は載ってないのに。
それに、問い1の主キーの会社IDの属性、[c]という文字が入っているのにもかかわらず数値型ですか???

7
(1)回答を見てみると答えが記入されていない。上のほうが「2年身長」、下は「1年体重」でしょう。
(2)

select 名簿.ID,名簿.氏名,身長.3年身長,体重.3年体重 from 名簿,体重,身長 where 名簿.ID=体重.ID and 身長.ID=名簿.ID and 身長.3年身長<=170 and 体重.3年体重>=60
テキストのほうの問題には身長170cm以下、体重60kg以上の生徒を抽出すると書いてあるのに、解答を見ると身長170cm以下、体重60kg以下の生徒を抽出するSQLが書かれています。
その上、ソフトのほうに表示される問題には「身長体重が170cm未満,体重60sより重い生徒を抽出」となっていて、「以下」と「未満」、「以上」「より重い」という違いがありてんでばらばら。

これでは絶対に正しい解答は出せません。
(3)はさらにひどい。
問題は「[視力]cの生徒を[学年][クラス]ごとにごとにグループ化して、学年、氏名、右視力、左視力の一覧表を作成するためのSQLを作成しなさい。」というのに、
解答が「 SELECT 視力.視右, 視力.視左, Count(視力.視右) AS 人数 FROM 視力 GROUP BY 視力.視右, 視力.視左;」
とはまったく意味がわかりません。
学年とクラスでグループ化するように書いてあるのに解答では視力でグループ化しているし、「視力cの生徒」というのが右なのか左なのか、総合なのか、その場合どうやって総合を決めるのかなどがかかれていません。また、テキストのほうの表には「視力右」なのに実際は「視右」だったりと不整合がありすぎて問題をやる気が起きませんでした。

8
(1)解答はこのようになっていますが、間違いだらけです。
表名項目名
生徒ID
所属委員会部活動ID
この解答は次の3つの点が間違っています。
1.「生徒」という表は存在しない
2.仮に「生徒」表を「名簿」表に読み替えたとしても、「名簿」表には「ID」は存在しない。あるのは番号。
3.同じく「所属委員会部活動」には「ID」は存在しない。
正しくは
表名項目名
名簿番号
所属委員会部活動番号
になるでしょう。ほんとに、答えを書くとき表名を確認していないことが明らかですね。
生徒の一覧だから表の名前は「生徒」だろう。管理番号は「ID」だろう。という思い込みもあるかもしれません。
(2)

select 所属委員会部活動.委員会,count(所属委員会部活動.委員会) as 人数 from 所属委員会部活動 group by 所属委員会部活動.委員会
これは珍しくまともに解けた問題です。「部活動顧問」表には「HR長」や「資格検定」などの委員会名が含まれていないので使えません。
(3)
select 所属委員会部活動.部活動,部活動顧問.ID,名簿.氏名,部活動顧問.担当者名 from 所属委員会部活動,部活動顧問,名簿 where 所属委員会部活動.番号=名簿.番号 and 部活動顧問.部活動名=所属委員会部活動.部活動 order by 部活動顧問.部活動名 asc
問題どおりにSQLを作成するとこのようになりますが、解答例と比べても、採点しても不正解になってしまいます。
テキスト、ソフトのほうの問題では「部活動名,ID,氏名,顧問名」を出力するよう求められています。
しかし、解答を見てみると「部活動名,(生徒の)番号,氏名,顧問名」が出力されています。
問題で「ID」を出すよう求められているのですから、「番号」を出すはずがありません。
ここで「ID」が使われているのは委員会や部活動の通し番号ですから、部活動名に対応するIDを出すのだろうと考え、フィールドを「部活動顧問.ID」にすると間違っている始末です。
しっかりと問題に則してSQLを作成しても問題と解答では表の項目名が違うために答えが不正解になるのではやる気もおきません。演習問題7、8の4問中3問がこうではやってられません。どのような作り方をしているんでしょうか?
こんな調子ではこの資格をとったってたいしたスターテスにはならないな・・・そんな気がしてなりません。

9
(2)

select 生徒.生徒ID,生徒.氏名,科目名.科目名 from 生徒,科目名,選択科目 where 科目名.科目ID = 選択科目.科目ID and 生徒.生徒ID = 選択科目.生徒ID and 生徒.生徒ID>1105 and 生徒.生徒ID<1115
「ID」は、全角ということに注意。ソフトのほうでは半角で入力しても区別されないのか、実行できてしまうのに、採点してみると区別するようで不正解になってしまいます。
それはともかく、「生徒IDが1105から1115を選択し、」と問題にあるのに、「生徒.生徒ID>1105 and 生徒.生徒ID<1115」としては1105と1115は入らなく、1106〜1114までの生徒になってしまいます。これは問題文どおりに解釈すると等号をつけた「生徒.生徒ID>=1105 and 生徒.生徒ID<=1115」というようになるのではないでしょうか?
ああ、ここでも問題と解答のずれがある・・・。
(3)
SELECT 生徒.生徒ID, 生徒.氏名, ハードウェア.得点 FROM ハードウェア,生徒 WHERE ハードウェア.生徒ID = 生徒.生徒ID and ハードウェア.得点>=30;
これは普通ですね。レベルとしてもかなり低いほうでしょう。

10
(2)

select 生徒.氏名,資格名.資格名,主催.主催 from 生徒,取得資格,資格名,主催 where 生徒.生徒ID=取得資格.生徒ID and 取得資格.資格ID=資格名.資格ID and 資格名.資格ID=主催.資格ID and 生徒.生徒ID<=1107 order by 生徒.生徒ID asc
問題「生徒IDが1107以下の氏名、資格名、主催の一覧表を作成するためのSQL文を作成しなさい」
ここから「生徒ID」を出力するべきだと読み取れますか?ほとんどの人が氏名、資格名、主催だけを出力すると思います。私もそうしました。
ところが、答えを見ると「生徒ID」も出力されていて不正解になりました。
はっきり生徒IDも入れることを書くべき!

(3)
select 資格名.資格名,count(取得資格.資格ID) as 取得人数 from 資格名,取得資格 where 資格名.資格ID=取得資格.資格ID group by 資格名.資格名,取得資格.資格ID order by count(取得資格.資格ID) desc
問題は「[資格名]ごとにグループ化して,生徒の取得した資格ごとの人数をカウントし,資格名,取得人数(降順)の一覧表を作成するためのSQL文を作成しなさい。」
出力する項目は「資格名」と「取得人数」です。
しかし、このとおりにやっても不正解です。ああ、また・・・。
そうです、解答は「取得人数」でなくて「取得者数」になっていたのです!
問題文と解答でつけてる名前が違う。こんな問題できる人いません!

この滅茶苦茶さにはあきれ果てるしかありません。 しっかり問題文どおりにSQLを作成した・・・のにもかかわらず解答が問題と違うため、不正解になる。 ものすごいフラストレーションがたまりますね。受ける人があまりいないのも分かる気がする。 でも意外と、テキストの前半の筆記問題の演習問題はミスがないんですよね。どういうこっちゃ? 最後になって急いで仕上げたんじゃないの??全国工業高等学校長協会の先生方。

ページ内検索
文章内から検索:
ランキング
著作権表記
Copy right © Ship.
PR