基本情報技術者試験 第3章「技術要素」(データベース) – よく出る問題と抑えておきたいポイント

技術
#Satou
kihonjyoho3-ic

こんにちわ、佐藤です。

今回は、基本情報技術者試験、第3章「技術要素」になります。この章は試験の中でも出題数が多いテクノロジ系の中、特に出題数が多い章となっており、午前の要と言えること間違いなしです。

とりわけ重要な章ということで、「データベース」「ネットワーク」「セキュリティ」の3つに分割してお届けしたいと思います。
本ブログでは目標を「データベース」に入れて、勉強していきましょう。


今回の内容

今回は、幅広い対象範囲の中、「技術要素」の中の「データベース」に焦点を当てて、書いていきます。

  1. 押さえておきたい項目
  2. よく出る問題
下記、全体の試験範囲の詳細です。

試験範囲の詳細

  • 第1章 基礎理論
  • 第2章 コンピュータシステム
  • 第3章 技術要素
  •   -データベース
      -ネットワーク
      -セキュリティ
  • 第4章 開発技術
  • 第5章 プロジェクトマネジメント
  • 第6章 サービスマネジメント
  • 第7章 システム戦略
  • 第8章 経営戦略
  • 第9章 企業とホーム



  • この章は主に「データベース」「ネットワーク」「セキュリティ」の3分類に分かれており、個別の技術について取り上げています。
    章全体のボリュームは多いのですが、それぞれ独立して学習できます。
    ただしデータベース、ネットワーク、セキュリティは切り離して考えられない関わりを持っています。

    以下、抑えておきたい項目です。



    データの特徴で異なるデータベース

    データベースとは業務で扱う関連性のあるデータを統合し、組織的に管理・蓄積したものです。データの冗長性を極力排除し、多目的な利用(検索や更新)が効率的にできるようになっています。


    関係データベース データを2次元の表によって表現したデータベース。非構造型。
    階層型データベース HDB(Hierarchical Database)。レコード間に階層構造を持たせ、親レコードと子レコードはポインタで結合。
    網型データベース NDB(Network Database)。レコード間に、それぞれつながりを持たせた形で表現。
    オブジェクト指向データベース OODB(Object Oriented Database)。データと手続きを一体化(カプセル化)して表現。
    ハイパテキストデータベース 複数の文書をそれぞれリンクさせた形で持たせたデータベース。
    マルチメディアデータベース テキストだけでなく、静止画や動画、音楽などを管理できるデータベース。
    XMLデータベース タグを用いてデータの構造と意味を表す。

    データベースのモデル

    データベースを構築するには、現実世界のデータをどのように構造化して、コンピュータ内部で表現するかを考えなくてはなりません。これをデータのモデル化といいます。
    モデル化に関して、1978年にANSI(アメリカ規格協会)が3段層のデータモデルを提唱しています。これらの具体的な定義をスキーマ(schema)と呼びます。

    1. 概念スキーマ
    2. コンピュータの制約に依らない、現実世界のデータ関係を明らかにします。データベース化の対象となる個々のデータの意味や相互関係を定義します。

    3. 外部スキーマ
    4. 利用者(またはアプリケーションソフト)から見たデータの形を定義します。関係データベースでは、ビューが該当します。

    5. 内部スキーマ
    6. 記憶装置上に同データを格納しアクセスするのかといった、データベースの物理的な情報(物理構造)を定義します。関係データベースでは実表が該当します。


    データベース管理システム

    データベース管理システム(DBMS)は、利用者との間に介在して、データベースの管理を効率よく行うソフトウェア(ミドルウェア)です。次のような機能を持ちます。

    1. データベースの定義機能
    2. データベースの作成を行う機能で、データの論理構造(スキーマ)を決定し、与えられた論理構造から物理構造を決定します。実際の定義は、データ定義書(DDL:Data Definition Language)で行います。

    3. データベースの操作
    4. データに指示を出し、データベースへの操作を行います。データベースへの操作は、データの格納場所やアクセス方式など詳細な情報を知らなくても可能です。実際の操作は、データ操作言語(DML:Data Maniqulation Language)で行います。

    5. データベースの管理機能
    6. 複数の利用者が同時に同じデータに対する更新要求を行っても、データに矛盾が生じないようにする機能です。排他制御、コミットメント制御、アクセス制御、データ制御などがあります。


    SQLによるデータベースの操作

    1. 追加(INSERT)
    2. (1) INSERT INTO 表名 VALUES (列のデータ, ・・・)
      (2) INSERT INTO 表名 SELECT ・・・


    3. 更新(UPDATE)
    4. UPDATE 表名 SET 列名 = 式 [WHERE 条件]


    5. 削除(DELETE)
    6. DELETE FROM 表名 [WHERE 条件]


    7. 問合せ(SELECT)
    8. SELECT 列名 FROM 表名 [WHERE 条件]

    条件を指定する句には下記があります。
  • GROUP BY句
  • HAVING句
  • ORDER BY句
  • LIKE述語
  • EXISTS演算子


  • 集約関数には下記があります。
  • AVE(列名)
  • COUNT(*)
  • MAX(列名)
  • MIN(列名)
  • SUM(列名)



  • データベースの仕事単位はトランザクション

    トランザクションとは、データベースに対するひとまとまりの要求単位を指します。大規模なデータベースになると多くのトランザクションが集中し、多大な負荷がかかることで障害が発生することがあります。

    このような障害に対して、保管されているデータを保護するため、データベースには次のような4つの特性を備えていることが求められます。これを各特性の頭文字をとってACID特性と呼びます。


    1. Atomicity(原始性)
    2. データベースに対する操作を最小単位まで細分化したとき、処理単位が「操作する」、「操作しない」のどちらかである性質です。

    3. Consistency(一貫性)
    4. 更新処理などでデータが変更された場合に、構成する複数のデータに矛盾が生じないという性質です。

    5. Isolation(分離性)
    6. 救数のトランザクションが同時にデータベースをアクセスしても相互に干渉せず、順序づけて実行した場合の結果と一致するという性質です。

    7. Durability(持続性)
    8. いったん更新したデータベースの内容が消失することはないという性質です。


    重複するアクセスを防ぐ排他制御

    DBMSには、複数の利用者(プログラム)が同時にデータに対する更新要求を行っても、データに矛盾が起こらないようにする機能が必要となります。このデータの一貫性を保つ機能が排他制御機能です。

    具体的には、あるプログラムがデータの更新のためのアクセスを行っている間は、他のプログラムからの同一データのアクセスを禁止(ロック:lock)しておき、先のプログラムの処理が完了してから、ロックを解除(アンロック:unlock)する制御を行います。



    障害からの回復のための方策

    データベースに障害が発生した場合の業務への影響は、通常のファイルよりはるかに多きいため、障害からの迅速な回復(リカバリ:recovery)機能は非常に重要です。

    1. バックアップの取得
    2. 業務終了後などのタイミングでデータベース全体のバックアップを別の記憶媒体にとっておきます。このバックアップデータをアーカイブ(archive)と呼び、これには基準となるデータが破壊されても、それを再現するのに必要なすべての情報を含んでいます。

    3. ログの取得
    4. レコードの更新前後の内容を、ログファイルに書き込みます。ここで、更新前の内容を更新前イメージ、更新後の内容を更新後イメージと呼びます。

    5. ロールバック処理
    6. 障害が発生したときは、その時点のデータベースの内容と、更新前イメージを使用して、障害発生直前の状態までデータベースを復元します。これをロールバック処理、またはバックワードリカバリと呼び、通常DBMSが自動的に行います。

    7. ロールフォワード処理
    8. ロールバック処理で復元できない場合は、最新のバックアップファイルと更新後のイメージとを使用して、障害発生直前の状態までデータベースを復元します。これをロールフォワード処理、またはフォワードリカバリと呼びます。

    以上、抑えておきたい項目でした。
    それでは、何問かよく出る問題を選抜しましたのでチャレンジしてみましょう。



    RDBMSにおけるスキーマの説明として、適切なものはどれか


    ア: 実表ではない、利用者の視点による仮想的な表である。
    イ: データの性質、形式、他のデータとの関連などのデータ定義の集合である。
    ウ: データの挿入、更新、削除、検索などのデータベース操作の総称である。
    エ: データベースの一貫性を保持するための各種制約条件の総称である。

    ヒント
    スキーマとは、データベースの定義情報を記述したもの。

    解答:イ



    2.文字列のワイルドカード指定

    ”BOOKS”表から書名に”UNIX”を含む行をすべて探すために次のSQL文を用いる。
    aに指定する文字列として、適切なものはどれか。ここで書名は”BOOKS”表の”書名”列に格納されている。

    SELECT * FROM BOOKS WHERE 書名 LIKE ‘a’


    ア: %UNIX
    イ: %UNIX%
    ウ: UNIX
    エ: UNIX%

    ヒント
    問題は「”UNIX”を含む」

    解答:イ



    3.ACID特性

    トランザクションのACID特性のうち、原子性の記述として、適切なものはどれか。


    ア: データベースの内容が矛盾のない状態であること。
    イ: トランザクションが正常終了すると、更新結果は障害が発生してもデータベースから消失しないこと。
    ウ: トランザクション処理がすべて完了かまったく実行されていないかで終了すること。
    エ: 複数のトランザクションを同時に実行した場合と順番に実行した場合の処理結果が一致すること。

    解答:ウ



    4.ログファイル

    DBMSにおけるログファイルの説明として、適切なものはどれか。


    ア: システムダウンが発生したときにデータベースの回復処理時間を短縮するため、主記憶上の更新データを定期的にディスクに書き出したものである。
    イ: ディスク障害があってもシステムをすぐに復旧させるため、常に同一のデータのコピーを別のディスクや別のサイトのデータベースに書き出したものである。
    ウ: ディスク障害からデータベースを回復するため、データベースの内容をディスク単位で複写したものである。
    エ: データベースの回復処理のため、データの更新前後の値を書き出してデータベースの更新記録を取ったものである。

    解答:エ




    まとめ

    お疲れさまでした。以上となります。

    データベースは奥が深い!基本情報技術の先の応用技術者、さらにはスペシャリストまで奥行きがあります。個人的にはパズルみたいで楽しいと思いました。
    応用情報の取得も目指している方は、是非「正規化」まで抑えておいてください。
    それでは次回の「ネットワーク」でまたお会いしましょう!




    《関連記事》
    基本情報技術者試験 第2章「コンピュータシステム」 – よく出る問題と抑えておきたいポイント
    基本情報技術者試験 第1章「基礎理論」 – よく出る問題と抑えておきたいポイント