自称週末ファーマーの国家試験受験記

自己啓発の延長なのか、自己実現の手段なのか、はたまた意地の張り合いか。生きているうちに“何か”を成し遂げたいから走り続けているような感じがする

第99話 経営情報システム⑥  データベース

今回はデータベースについて。
一言でデータベースといってもデータベースを構築するにはいろんなルールがあることを知った。ただただ情報が羅列している表とかをデータベースというわけではなく、データベースにするには適正な構造・形式が必要だということだ。そういう適正な構造・形式が整ってはじめて、各アプリケーションからデータベースにアクセスし、必要なデータを取り出すことが出来るようになるわけだ。

データベースについてはかなり長くなると思います。何回かに分けてリリースしようと思います。

1.データベースを構成するデータ単位
 データベースというとなんとなく“表”みたいなイメージします。そもそも表はタテヨコに線を引いて枠組みを作りますよね。まずはそういったところの話題から始めます。表そのものは「テーブル」と呼んでいます。
 表の縦方向を、「列」といい「フィールド」と呼び、表の横方向を、「行」といい、「レコード」という。

 ●表 → テーブル
 ●表のタテ → 列・フィールド
 ●表のヨコ → 行・レコード

このように2次元(列と行)の表で表現するデータベースを関係データベース(リレーショナルデータベース:RDB)という。関係データベースの他には、階層型データベースと、ネットワーク型データベースとがある。

 ●関係データベース → 列と行の表(テーブル)で示されるもの
 ●階層データベース → レコードの関係を親子構造で示し、親レコードと子レコードの関係が1:n
 ●ネットワーク型データベース → レコードの関係を木構造で表し、親レコードと子レコードが、n:n

また、OODBMSと呼ばれるデータベースがある。
Object-Oriented DateBase Management System の略で、画像や音声などのさまざまなデータを一括して扱うために、データとそれを操作する手続が一体化したオブジェクトを単位としてデータを管理するデータベース管理システム
XMLデータベースとは、XMLを取り扱う機能を保持したデータベース。なお、XMLとは、ネットワーク上でデータ交換に使用される言語。
XMLデータベースには、ネイティブ方式とハイブリッド方式がある。
ネイティブ方式
 XMLデータを取り扱うためのデータベースをゼロから構築したもの。
XML形式のデータを記録・検索することを主眼にデータベースを構築するのでリレーショナルデータベースの機能を持たない。
ハイブリッド方式
 既存のリレーショナルデータベースなどにXMLデータを格納できるように設計したデータベース。そのため、ハイブリッド方式はリレーショナルデータベースの機能をもつ。

 ●ネイティブ方式 → リレーショナルDB機能を持たない
 ●ハイブリッド方式 → リレーショナルDBの機能を持つ

 

2.関係データベースの操作
 データベースに格納された表(テーブル)は列と行をもつ。そのデータベースに対して、言い換えれば、テーブルである表に対して、あるデータを問い合わせることを関係データベースの操作という。つまりユーザがデータベースに向けて行う指図のこと。
当然、ユーザがデータベースに向けて指図するにしても、実際にデータベースに働きかけるのはコンピュータそのものであり、ある指図に対してその処理をすることを「演算」と呼んでいる。
なお、関係データベースの操作には、関係演算と集合演算とがあるが、診断士試験においては関係演算のほうが重要だとのことだ。
関係演算で押さえるのは次の3つだ。
①射影
 対象となる表から指定された「列」のみを出力する
②選択
 対象となる表から指定された条件を満たす「行」のみを出力する
③結合
 複数の表に含まれる共通の「列」の内容によって表を結びつける

 ●列 → 射影
 ●行 → 選択
 ●列と列をくっつける → 結合

3.DBMS(データベースマネジメントシステム)
 DBMSはソフトウエアであり、データベースを管理するためのミドルウエアである。
データの形式や利用手順を標準化し、特定のプログラムやアプリケーションからデータベース(以下、DB)を独立させることが出来る。
またデータの管理をDBMSに任せることで、アプリケーションの生産性や性能、資源の利用効率向上が可能となる。
このDBMSは、おのおののDBの枠組みを定義し、形式的に合致した表にしなさいとか、だったらAとB項目は記入必須ですよとかいうDBの定義付けが必要となる。さらにはDBに対する指図には標準化された言語を用いなさいとかDBの更新時のルールとかいろんな取り決めが必要になる。そうすることでDBMSがデータ管理を行えるようになり、ユーザは個別のアプリケーションの都合とは関係なくデータを格納することが出来る。

 ●DBMS → 規則に沿った形式でデータを格納

 DBMSでは、ルール化したデータを格納するため、そのルールに合わない、中途半端なデータは格納することが出来なくなる。処理されるべきデータは処理開始してから完全に終わらなければDBMSは受け付けてくれないわけだ。
 その一連の処理を、トランザクションという単位で取り扱う。トランザクションとは、データを操作する際の処理の単位のことを言う。また、処理が中途半端になり、データに矛盾が生じないように管理することをトランザクション管理という。トランザクションにはACID特性というものがある。
 トランザクションのACID特性とは、
トランザクションは、完全に実行されるか、まったく実行されないかのいずれかで終わる
トランザクションの実行結果は、矛盾のない状態であること
トランザクションは他のトランザクションの実行による影響を受けない
トランザクションの実行結果が失われない
という性質のことである。

続いて、同時実行制御機能についてみてみよう。
つまりは、同時に同じトランザクションにアクセスしてはいけません、ということだろうか。
複雑な業務を処理する場合、システムを利用するユーザが多数存在する場合においては、複数トランザクションがDBの同一データにアクセスすることがありうる。その際、トランザクション同士が干渉せず、単独で実行できるように制御することを、同時実行制御機能という。
この機能には、ロック方式(排他制御)と時刻印アルゴリズムがある。

 ●同時実行制御機能 → ロック方式(排他制御)と時刻印アルゴリズム

ロック方式(排他制御
 トランザクション実行時に処理対象のデータにロックをかけて、他のトランザクションがアクセス出来ないようにする方式。
このロック方式は、共有ロックと占有ロックがある。共有ロックは参照権のみ与えて、データの更新や削除などの変更をロックする。占有ロックは一切のアクセスを禁止する。

 ●共有ロックと占有ロック → 参照権アリが共有ロック。占有ロックは全ロック

また、ロック対象のデータが多い場合には、各トランザクションが相互に必要なデータをロックしあうことが起きる。こうすると、互いにロックが解除されるまで身動き取れない状態に陥り、これを「デッドロック」と呼んでいる。

時刻印アルゴリズムは難しいので目もくれませんでした。

続く。