データベース
データベースは大量のデータを整理して保存・管理する仕組みで、DBMSというソフトウェアが動かします。テーブルを分けて設計し、主キーと外部キーで関連付けます。
データベースとDBMSの役割、テーブル設計と主キー・外部キー、データ操作の基本、トランザクションによる信頼性の確保を理解し、説明できるようになります。
データベースは業務システムの中核であり、ITパスポート試験でも出題頻度の高い分野です。設計の考え方と、複数人が同時に使っても矛盾が起きない仕組みは、実務でも判断の土台になります。
データベースとDBMSの役割
データベースとは、仕事で扱う情報を一定のルールに従って整理し、必要なときにすぐ探し出せるようにした仕組みのことです。例えば会社の顧客管理では、名前や住所、注文履歴といった情報を日々大量に扱います。これを紙やばらばらのファイルで管理すると、検索にも更新にも時間がかかり、同じ内容を何度も入力する手間も発生します。データベースを使うことで、こうした情報を決まった形式でまとめて管理できます。
データベースを実際に動かすソフトウェアをDBMS(データベース管理システム)と呼びます。DBMSは、データを保存する場所を用意するだけでなく、複数の人が同時にアクセスしても内容が矛盾しないようにしたり、必要なデータを高速に検索できるようにしたりする役割を持っています。
DBMSの中でも広く使われているのが、データを行と列からなる表(テーブル)の形で管理するRDBMS(リレーショナルデータベース管理システム)です。表計算ソフトの表をイメージすると分かりやすいと思います。一方、近年は表の形にこだわらず、キーと値の組み合わせで管理するキーバリューストア(KVS)や、文書に近い形式のまま保存するドキュメント指向データベース、データ同士のつながりを重視するグラフ指向データベースといったNoSQLも広がっています。RDBMSは表に収まる整った情報、NoSQLはアクセスログのように形が定まりにくい大量のデータに向いています。使う場面に応じて選び分けられているという点を押さえておきましょう。
このように、データベースとDBMSは切り離せない関係にあります。データベースが「整理されたデータの集まり」だとすれば、DBMSはそれを「動かす仕組み」です。企業の基幹システムの多くがデータベースを中心に構築されているのは、大量のデータを安全かつ効率よく扱えるという、この仕組みの信頼性によるものです。試験では、データベースそのものとDBMSという管理ソフトウェアを取り違えないよう、役割の違いを意識しておくとよいでしょう。
データの設計と主キー・外部キー
業務で使うデータをテーブルに落とし込む前に、どんな情報があり、それぞれがどう関連しているかを整理する作業をデータ分析と呼びます。複数のシステムに散らばったデータを1つにまとめるデータの結合や、表記ゆれや重複を取り除いて整った状態にするデータクレンジングも、この段階で必要になります。
整理した情報の関連を図で表したものがE-R図です。「顧客」「注文」「商品」のような登場人物(エンティティ)と、それらのつながりを線で示します。テーブルの1件1件のデータをレコード、レコードを構成する項目をフィールド(項目)と呼び、複数のレコードをまとめたものがテーブル(表)、テーブルの集まりを保存する場所がファイルです。
テーブルの中でレコードを一意に特定するための項目を主キーといいます。主キーは値の重複や空欄(NULL)が許されません。一方、あるテーブルから別のテーブルの主キーを参照する項目を外部キーと呼びます。一言で区別すると、主キーは「自分のテーブルの中で1件を特定する項目」、外部キーは「他のテーブルとつなぐための項目」です。例えば注文テーブルの顧客IDは、顧客テーブルの主キーである顧客IDを参照する外部キーになります。検索を高速にするための索引をインデックスと呼びます。
こうして分けたテーブルには、データの重複や矛盾を防ぐために正規化という考え方も使われます。1つのテーブルに情報を詰め込みすぎず、目的ごとに分割しておくことが、後々の更新のしやすさにつながります。例えば注文テーブルに顧客の住所を毎回そのまま書き込むと、同じ顧客が何度注文しても住所を繰り返し入力することになり、引っ越しがあった際にはすべての注文データを更新する手間が発生します。顧客情報を別のテーブルに分けておけば、住所は顧客テーブルの1か所を直すだけで済みます。
このように、E-R図で関連を整理し、主キーと外部キーでテーブルをつなぎ、正規化で重複を防ぐという流れが、データ設計の基本的な考え方です。試験ではE-R図や正規化の詳細な作図・計算までは問われませんが、なぜテーブルを分けるのかという考え方は理解しておく必要があります。
データ操作(選択・射影・結合)
テーブルに整理されたデータを実際に使うには、目的に応じたデータ操作が必要です。関係データベースの代表的な操作には、新しいレコードを加える挿入、既存のレコードの内容を書き換える更新、そして条件に合ったデータだけを取り出す選択・射影・結合があります。
この3つは名前が似ていて混同しやすいので、一言で区別できるようにしておきましょう。選択は、テーブルの中から条件に合う「行」だけを取り出す操作です。例えば「注文テーブルから、注文日が今月の行だけを取り出す」といった場面で使います。射影は、テーブルの中から必要な「列」だけを取り出す操作です。「顧客テーブルから、氏名の列だけを取り出す」といった場面にあたります。結合は、複数のテーブルを共通する項目(主キーと外部キー)でつなぎ合わせ、1つの結果としてまとめる操作です。正規化によって分割されたテーブルは、この結合によって必要な情報をまとめて取り出せます。
整理すると、選択は行を絞り込み、射影は列を絞り込み、結合は複数の表を横につなげる操作です。実際の業務では、この3つを組み合わせて「今月注文があった顧客の氏名と注文日だけを一覧にする」といった使い方をします。まず結合で注文テーブルと顧客テーブルをつなぎ、選択で今月の行に絞り込み、射影で氏名と注文日の列だけを取り出す、という順序で考えると整理しやすくなります。
新しいレコードを加える挿入や、既存のレコードを書き換える更新も、日々の業務では頻繁に発生します。例えば新しい顧客が登録されたときは挿入、顧客が引っ越して住所が変わったときは更新を使います。データベースにテーブルを分けて設計しておくことで、こうした操作を狙った範囲だけに限定して行いやすくなります。
こうしたデータ操作を行うための標準的な言語がSQLです。試験ではSQLの細かい文法までは問われませんが、挿入・更新・選択・射影・結合という操作の名前と、それぞれが何を対象にしているのかは押さえておく必要があります。テーブルの設計と、この5つの操作の考え方をセットで理解しておくと、データベース分野全体の見通しがよくなります。
トランザクションと障害回復
複数の利用者が同時に同じデータベースへアクセスすると、データの矛盾が発生する恐れがあります。例えば同じ在庫データに対して2人が同時に在庫を減らす処理をすると、片方の更新結果が失われてしまうことがあります。これを防ぐ仕組みが同時実行制御(排他制御)です。あるデータを更新している間は、他の処理からのアクセスを制限することで矛盾を防ぎます。ただし、互いのロックが解除を待ち合ってどちらも処理を進められなくなるデッドロックが起きることもあり、DBMSはこれを検知して対処する仕組みを備えています。
データベースへの一連の処理をひとまとまりとして扱う単位をトランザクションと呼びます。銀行の口座間送金では「送金元の残高を減らす処理」と「送金先の残高を増やす処理」を1つのトランザクションとして扱い、両方が成功するか、両方とも実行されなかったことにするかのどちらかにします。この性質をまとめたものがACID特性(原子性・一貫性・独立性・永続性)です。複数のシステムにまたがる処理を確実に完了させるために、2相コミットメントという手法が使われることもあります。
トランザクションが正常に完了して結果を確定させる操作をコミット、途中で処理を取り消して元の状態に戻す操作をロールバックと呼びます。一言で区別すると、コミットは確定、ロールバックは取り消しです。障害からの回復では、定期的に記録するチェックポイントを基準に、記録前の状態へ戻すバックワードリカバリ(ロールバック)と、更新履歴を反映して障害直前まで復旧させるフォワードリカバリ(ロールフォワード)が使い分けられます。
どちらを使うかは障害の内容によって異なります。処理中のエラーで一部の更新だけがおかしくなった場合はバックワードリカバリで直前のチェックポイントまで戻し、記憶装置そのものが壊れるような大きな障害の場合は、バックアップからチェックポイントの状態を復元したうえで、フォワードリカバリによって更新履歴を反映し、障害の直前までデータを復旧させます。同時実行制御と障害回復の両方を備えていることが、企業がデータベースを安心して使い続けられる理由です。
この単元の確認問題
答えを見る前に、まず自分の言葉で答えてみてください。言葉にできないところが、そのまま本試験で止まるところです。
Q. データを行と列からなる表(テーブル)の形で管理するデータベース管理システムを何と呼びますか。
A. RDBMS(リレーショナルデータベース管理システム)
RDBMSは表(テーブル)形式でデータを整理・管理する方式であり、キーバリューストアなど表の形にこだわらないNoSQLと対比される代表的なDBMSだからです。
Q. テーブルの中でレコードを一意に特定するための、重複や空欄が許されない項目を何と呼びますか。
A. 主キー
主キーはテーブル内の各レコードを一意に特定するための項目であり、値の重複やNULL(空欄)を許さないことが定義の要件だからです。他のテーブルの主キーを参照する外部キーとは役割が異なります。
Q. テーブルの中から必要な「列」だけを取り出すデータ操作を何と呼びますか。
A. 射影
射影は列を絞り込む操作であり、行を絞り込む選択、複数の表をつなぎ合わせる結合とは対象が異なるためです。
データベースは、読んで分かることと、本番で点になることが別です。点にするための材料はこちらにまとめてあります。
- この単元の確認問題 あと1問
- この単元の問題 34問(どこをどう間違えたかまで解説)
- この単元のひっかけ(本試験がどう引っかけてくるか)
- この単元をそのままITパスポート専用AIチューターに質問できます
- 間違えた問題だけを自動で拾い直す復習リスト
「第9章 技術要素」の他の単元
この単元を、手を動かして確かめる
ITパスポートAIチューターでは、いま読んだ単元の四択問題をその場で解いて、 どこで間違えたかまで解説付きで確かめられます。 わからないところはITパスポート専用のAIチューターに訊けます。
この単元をアプリで開く 登録は無料。メールアドレスだけで始められます。