データベース方式

ボキタロー
ボキタロー

データベースって、いろんな情報(データ)を保存しておくためのものだよね?

snack
snack

そうっすよ。

ボキタロー
ボキタロー

普通のファイル保存でもよくない?なんでわざわざデータベースなんか使うの?

snack
snack

データベースはただデータを蓄積するだけじゃなく、それを効率的に活用することまでを目的としてるんすよ。

目標・データベース及びデータベース管理システム(DBMS:Database Management System)の意義,目的,考え方を理解する。
説明・体系的に構成された数値,文字列などのデータの集合物であるデータベースと,データを構造的に蓄積し,それらの一貫性を保ち,効率的に取り出すための機能を備えたものであるデータベース管理システムについて,その意義,目的,考え方を理解する。
データベース方式の概要

データベースの目的

データベース(Database)とは、大量の情報(データ)を整理して、効率的に保存・検索・更新・管理するための仕組みやシステムのことです。ただデータを蓄積するだけではなく、データベース管理システムや他のソフトウェアを利用して、蓄積されたデータの有効活用を目的とします。

データベースの目的

  1. データの効率的な管理
    大量のデータを整然と管理し、無駄なく利用できるようにする。
  2. データの検索・更新の迅速化
    必要なデータをすばやく検索・変更・削除できる。
  3. データの共有と同時利用
    複数の人やアプリが、同時にデータを使っても矛盾が起きないようにする。
  4. データの整合性と信頼性の確保
    間違ったデータが登録されたり、破損したりしないように守る。
  5. データの安全性の確保
    アクセス制御やバックアップによって、不正アクセスや障害から守る。
参考

データを保存・保持するための仕組みを総称してデータストアと呼び、ファイルシステムからデータベース、クラウドストレージなど、さまざまな形態を含みます。データベースはデータストアの一種であるということができます。

データベースモデル

データベースモデルとは、データの構造・関係・ルールを定義する枠組みのことで、データベースがどのように情報を整理・保存・関連付けるかを決める重要な設計要素です。

リレーショナル型データベース(関係データベース・関係データモデル)

リレーショナル型データベースは、現在最も広く使われているデータベースモデルの一つで、次のような特徴をもちます。

データを行(レコード)と列(フィールド・カラム)で構成されたテーブル(表)で管理

各テーブルは主キーで識別され、外部キーで他のテーブルと関連付けられる

主キーとは、データベースにおいてテーブル内の各行(レコード)を一意に識別するための列(または列の組み合わせ)のことで、外部キーとは、別のテーブルの主キーを参照する列(フィールド)のことです。

以下の顧客表では、顧客IDが分かれば顧客の名前と電話番号が特定できます。また、メニュー表ではメニューIDが分かれば商品名と価格が特定できるため、これらがそれぞれのテーブルの主キーとなります。

さらに注文表では顧客IDとメニューIDによって、顧客表とメニュー表を参照することができるため、これらが外部キーとなります。

なお、主キーには重複しない & NULL(データが空)でない必要があります。以下の顧客表の例では、「名前」の列はデータの重複がある(同姓同名がいる)ため主キーになれません。また、「電話番号」の列にはNULL(電話を持っていない等)があるためこの列も主キーにはなれません。

参考

主キーは1つの列である必要はなく複数の列を組み合わせて主キーとすることもできます。これを複合主キーといいます。また、外部キーについても主キーと同様に複数の列をまとめて1つの外部キーとして設定することができます。これを複合外部キーといいます。

データの操作は主にSQLを使って行う

SQL(Structured Query Language)とは、リレーショナル型データベースを操作・管理するための標準的な言語です。

例えば、顧客表から名前の列を取得したい場合は、

SELECT 名前 FROM 顧客表;

のように書きますが、ITパスポート試験でSQL文の書き方までは問われません。

NoSQL

NoSQL(Not Only SQL)は、従来のリレーショナル型データベースとは異なるアプローチでデータを管理する非リレーショナル型データベースの総称です。特に、大規模なデータ処理や柔軟なデータ構造を必要とするアプリケーションに向いています。

階層型データベース

親子関係を持つ木構造(ツリー構造)でデータを管理するデータベースモデルです。古くからあるデータベースモデルで、特に1960〜70年代に企業の業務システムで広く使われました。

ツリー構造のため、1つの親に対して複数の子を持てますが、子は1つの親だけを持つのが原則です。

ネットワーク型データベース

階層型データベースの制約を克服するために開発された柔軟な構造を持つデータベースモデルで、1960年代後半に登場しました。

データ同士の関係を網の目のようにつながった状態で表現します。

さらっと学習【その他のNoSQL】

ドキュメント指向データベース

JSONやBSONなどの形式でドキュメント単位でデータを格納。

グラフ指向データベース

ノード(実態)とエッジ(関連)で構成されたグラフ構造で、複雑な関係性を扱う。

キー・バリュー型データベース

単純なキーと値のペアでデータを保存。なお、保存したいデータ(value:値)に対し、対応する識別子(key:キー)を組み合わせて格納するデータストア(データの保管場所)のことをキーバリューストア(KVS)と呼びます。

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

データベース管理システム(DBMS:Database Management System)とは、データベースを効率的・安全に扱うためのソフトウェアのことです。なお、リレーショナル型データベースのDBMSはRDBMS(Relational DataBase Management System)と表現されることもあります。

データベースが情報そのもの(データの集合)であるのに対して、DBMSはデータの操作・管理機能を提供するソフトウェア(システム)をいいます。

DBMSは次のような機能を備えています。

  1. データ定義機能
    テーブルの作成、主キーや外部キーの設定など、データベースの構造(スキーマ)を定義します。
  2. データ操作機能
    データの追加、更新、削除、検索を行います。
  3. データ検索機能
    ユーザーからの問い合わせ(クエリ)を効率的に処理します。
  4. トランザクション管理機能
    複数の操作をまとめて1つの単位(トランザクション)として処理します。
  5. 同時実行制御
    複数ユーザーが同時にアクセスしても、データの整合性を保ちます。
  6. 障害回復機能
    システム障害発生時にデータを復旧します。
  7. データ保護
    アクセス制御により、ユーザーごとの権限設定や不正アクセスの防止を行います。
  8. データの整合性維持
    データの正確さや一貫性を保証します。
  9. バックアップとリストア
    データの定期的なバックアップと、必要に応じて復元できる機能です。
  10. データベースカタログ管理
    データベースに関するメタデータ(データのデータ)を管理します。
MEMO

トランザクション管理機能、同時実行制御、障害回復機能については別の単元で詳しく学習します。

確認○×問題

問1

データベースの論理的構造を規定した論理データモデルのうち、関係データモデルとは、データ同士の関係を木構造で表現したモデルである。

答え:×

設問の文章は階層型データベースの説明です。なお、関係データモデル(関係データベース)とは、データの集まりを表形式で表現するモデルです。

問2

関係データベースにおいて、レコード(行)を一意に識別するための情報を主キーと言い、表と表を特定のフィールドで関連付けることもできる。

答え:〇

正しい記述です。主キーとは、データベースにおいてテーブル内の各行(レコード)を一意に識別するための列(または列の組み合わせ)のことです。

問3

関係データベースの主キーの設定に関する次の記述中、適切なものは2つある。

  1. 値が他のレコードと重複するものは主キーとして使用できない。
  2. 主キーの値は数値でなければならない。
  3. 主キーは複数フィールドを組み合わせて設定することができる。
  4. 主キーに設定したフィールドの値に1行だけならNULLを設定することができる。
  5. 主キーに設定したフィールドの値を更新することはできない。
  6. 主キーに設定したフィールドは他の表の外部キーとして参照することができない。

答え:〇

  1. 適切です。主キーは一意性を有する(他のレコードと重複しない)ことが必要です。
  2. 不適切です。主キーは数値である必要はありません。文字や複数の列を組み合わせた複合キーも主キーとして設定できます。ただし、高速に検索できる、コンパクトでシンプル、変更が起きにくいなどの理由から、特別な理由がない限り、数字(数値ID)を主キーにするのが推奨されます。
  3. 適切です。関係データベースでは、複数の列(フィールド)を組み合わせて1つの主キーとして設定することができます。これを複合主キーと呼びます。
  4. 不適切です。主キーにはNULL値を一切設定できません。
  5. 不適切です。主キーの値は技術的には更新可能です。ただし、主キーは一意な識別子なので、原則として「変更されない値」であるべきです。また、主キーが他のテーブルの外部キーとして参照されている場合、更新は整合性エラーの原因になるため、「更新すべきでない」とされる場合が多いです。
  6. 不適切です。主キーは、他の表の外部キーとして参照されるために使われるのが一般的です。

よって、適切な記述は1.と3.の2つです。

問4

条件①〜⑤によって、関係データベースで管理する”従業員”表と”部門”表を作成した。”従業員”表の主キーとして、最も適切なものは「部門コード」である。

〔条件〕
① 各従業員は重複のない従業員番号を一つもつ。
② 同姓同名の従業員がいてもよい。
③ 各部門は重複のない部門コードを一つもつ。
④ 一つの部門には複数名の従業員が所属する。
⑤ 1人の従業員が所属する部門は一つだけである。

答え:×

〔条件〕④に「一つの部門には複数名の従業員が所属する」とあるため、部門コードが重複する可能性があります。そのため、部門コードを主キーとするのは不適切です。

また、〔条件〕②に「同姓同名の従業員がいてもよい」とあるため、従業員名も重複する可能性があり、主キーとするのは不適切です。

この問題の場合、重複のない従業員番号を主キーとするのが適切です。

MEMO

生年月日は言うまでもありませんが、住所も重複の可能性があるため(例えば同居している夫婦など)、主キーとするのは不適切です。

問5

関係データベースの操作を行うための言語はFAQである。

答え:×

関係データベースの操作を行うための言語はSQL(Structured Query Language)です。なお、FAQ(Frequently Asked Questions) とは「よくある質問」のことで、問い合わせ対応の手間を減らし、ユーザー自身が迅速に解決策を見つけられるようにするためのものです。

問6

次のa~gのうち、DBMSに備わる機能として、適切なものは4個ある。

a.アクセス権管理
b.障害回復
c.同時実行制御
d.ファイアウォール
e.ウイルスチェック
f.データ検索・更新
g.テーブルの正規化

答え:〇

正しい記述です。以下のものはDBMSの機能ではありません。

d.ファイアウォール
e.ウイルスチェック
g.テーブルの正規化

よって、DBMSに備わる機能として、適切なものは4個(a.アクセス権管理、b.障害回復、c.同時実行制御、f.データ検索・更新)です。