[ITパスポート]データベースの演算・管理[無料講座]

2020年2月27日

今回はITパスポートにおけるデータベースの表の演算や管理について学習していきましょう。

くろん
くろん
データベースって便利そうだけど、表を作った後はどういったことが出来るんだにゃ?
キュー
キュー
必要な部分だけ抜き出したりくっつけたり、自由自在やで!今回はデータベースで出来る演算を見て行こうか!

データベースの演算と管理

前回学習したように、ITパスポートで学習するリレーショナルデータベースは表形式で表されているものでした。

表だからこそ出来る演算だったり管理法だったりが存在するので、そのあたりを詳しく見ていきましょう!

表の演算

リレーショナルデータベースの表に対する操作の事を演算と呼び、特に以下の3つの演算がITパスポートではよく問われるので覚えておきましょう。

選択

表から特定の行を取り出すことを選択と呼びます。

例えば以下の表から「商品ID」が0001のものと0002のものを選択すると以下のようになります。

商品ID カテゴリ 商品名 在庫量 単価
0001 食品 りんご 7 300
0002 食品 みかん 12 240
0005 キッチン用品 洗剤 6 400
0016 ペット用品 虫かご 2 1,000

商品ID カテゴリ 商品名 在庫量 単価
0001 食品 りんご 7 300
0002 食品 みかん 12 240

射影

表から特定の列を取り出すことを射影と呼びます。

例えば以下の表から「商品名」と「在庫量」を射影すると以下のようになります。

商品ID カテゴリ 商品名 在庫量 単価
0001 食品 りんご 7 300
0002 食品 みかん 12 240
0005 キッチン用品 洗剤 6 400
0016 ペット用品 虫かご 2 1,000

商品名 在庫量
りんご 7
みかん 12
洗剤 6
虫かご 2

結合

複数の表から特定の列を元に表を合体させることを結合と呼びます。

以下の二つの表を「種類コード」を元に結合させると以下のような表になります。

名前 性別 毛並み 種類コード
チョロ パイド 001
ぷりん プディング 001
モナ 003
くろん 003
キュー 水色 893

+

種類コード 種類
001 ハムスター
002
003
・・・
893 アザラシ

名前 性別 毛並み 種類コード 種類
チョロ パイド 001 ハムスター
ぷりん プディング 001 ハムスター
モナ 003
くろん 003
キュー 水色 893 アザラシ
チョロ
チョロ
893・・・
モナ
モナ
893・・・

DBMSについて

データベースが用いられるのはパソコンに限られた話ではなく、何らかの予約システムや顧客情報等、いたるところで利用されています。

利用者が少ないうちは管理も容易ですが、利用者が数百、数千と増えていくに伴って同時にアクセスしたり更新したりすると不具合が発生する可能性も浮上していきます。

更に何らかの理由でデータに整合性が取れなくなったり、悪意のある第三者によって内容を書き換えられる、漏洩する等のインシデントが発生したら業務存続の危機に陥ります。

その対策のためにあるのがDBMS(DataBase Management System)です。特にリレーショナルデータベースを管理するものをRDBMSと呼びます。

トランザクションの管理

データベースの一連の処理をまとめたものをトランザクションと呼びます。例えば以下の表で、「りんごの価格を5%上げる」場合の処理を見てみましょう。

商品ID カテゴリ 商品名 在庫量 単価
0001 食品 りんご 7 300
0002 食品 みかん 12 240
0005 キッチン用品 洗剤 6 400
0016 ペット用品 虫かご 2 1,000

この時の流れとしては

  1. 商品名がりんごの行を検索する
  2. 検索した行の単価の値を参照する
  3. 単価の値に1.05をかける
  4. 掛け合わせて算出した値を更新する

と言ったものになります。

この1~4のまとまりを1トランザクションと呼びます。

トランザクションに関しては、まったく行われていない状態(1すら始まっていない状態)か、全て終わった状態(4が完了した状態)が求められており、3まで終わって放置されていると言ったような中途半端な状態はNGです。

そのため、データベースでは以下の2つの操作が用意されています。

  • コミット・・・トランザクションによって行われたすべての処理を確定し、データベースに反映させる処理です。
  • ロールバック・・・一連の処理による変更を取り消します。

トランザクションの処理はコミットまたはロールバックによって終了します。

排他制御

データベース上では複数のトランザクションが実行され、場合によっては1つのデータに対して異なるトランザクションがほぼ同時に実行されるような状況も考えられます。

例えばりんごを購入する処理を見てみます。

商品ID カテゴリ 商品名 在庫量 単価
0001 食品 りんご 7 300
0002 食品 みかん 12 240
0005 キッチン用品 洗剤 6 400
0016 ペット用品 虫かご 2 1,000
  1. お客さんから購入個数を聞く
  2. 購入個数が在庫量より少ないかを確認
  3. 購入個数×単価によって金額を求める
  4. 代金受け取り後、在庫量-購入個数を新しい在庫量として表に反映させる

ここで、Aさんがりんごを5個購入し、2の処理を終えたとします。

そのタイミングでBさんがりんごを4個購入しようとすると、データベースはまだAさんの4の処理を終えていないため、在庫が7個のままと認識し、Bさんにもりんごを4個売る処理をしてしまいます。

しかし実際は2個しか残っていないため売ることが出来ず、不具合が発生してしまいます。

このような事態を避けるために、複数のトランザクションを実行した場合、データベースの整合性を維持する機能を同時実行制御と呼びます。

特に、トランザクションの処理中にほかのトランザクションを排除する処理を排他制御と呼び、操作中のデータにはロックを掛けることで他のトランザクションがアクセスできないようにします。

ここで注意なのが、複数のトランザクションが共通の資源をお互いに占有してしまい、相手の資源が解放されるまで待ち続け、永遠に処理が進まない状態が起こることがあります。

これをデッドロックと呼び試験でも頻出なので、同時に覚えておきましょう。

障害回復

悪意を持った第三者からの攻撃や、予期せぬ操作をさせた場合、データベースが破損して整合性が取れなくなってしまったり業務が出来なくなってしまったりします。

そうすると企業倒産だったり顧客からの苦情や訴訟も最悪考えられます。そこで、DBMSでは以下の2つのファイルを取得しています。

  • バックアップファイル・・・データベースをそのまますべてコピーしたファイル
  • ログファイル・・・トランザクションの開始時点と終了時点の状態を更新する度に出力したファイル

これらを用いることで、万が一の場合迅速にデータを復旧することが出来ます。

スポンサーリンク

データベースの演算と管理・例題

実際に例題を解いて問題に慣れていきましょう。

問題

問1

関係データベースで管理している"担当社員"表,"地区"表及び"顧客"表を結合して,A表を得た。結合に用いた"顧客"表はどれか。ここで,下線のうち実線は主キーを,破線は外部キーを表す。(H.30/秋)

ア 

顧客コード 顧客名 代表者名

イ 

顧客コード 顧客名 代表者名 社員コード

ウ 

顧客コード 顧客名 代表者名 地区コード

エ 

顧客コード 顧客名 代表者名 社員コード 地区コード

問2

次のa~dのうち,DBMSに備わる機能として,適切なものだけを全て挙げたものはどれか。(H.28/秋)

a.ウイルスチェック
b.データ検索・更新
c.テーブルの正規化
d.同時実行制御

ア a,b,c
イ a,c
ウ b,c,d
エ b,d

解説(クリックで展開)

データベースの演算と管理・まとめ

今回はデータベースの演算と管理について学習しました。

基本的な3つの演算に加え、DBMSの機能も良く問われるところなのでしっかりと押さえて置いてください。

カズ
カズ
特に赤文字の所は絶対覚えよう!

次回は表計算について学習していきます。


スポンサーリンク