[記事公開日]2015/01/14
[最終更新日]2016/11/30

基本情報技術者試験 8-2(関係データベース)

 

 

 

通常、データベースを作成するときは、『関係データベース』を作成することになります。

 

関係データベースは、複数のテーブル(データの塊)の間でデータの矛盾が生じないように、様々な工夫がされています。

 

◆主キー(プライマリキー)
テーブルには「主キー」を持たせます。

(必ず主キーを持たせないといけないというわけではありませんが、主キーを持たせるとデータに矛盾がないようになります。)

 

主キーは重複があってはいけません。

例えば、下の表には「No.」の列を主キーに設定しています。

主キー

 

このようにしておけば、「No.3」のデータを取り出したいと指示すれば、すぐに「貸し出し、B商品、1個」のデータが取り出せます。主キーを設定していない場合、No.4の下にさらにNo.3を追加することはできますが、そのときに「No.3」と指示しても、データベースがどちらのことを言っているのか判断がつかなくなってしまい、エラーになってしまいます。

 

さらに、このようなテーブルをいくつも連携させて効率的に作業をしようとすると、主キーがないととても不便になってしまいます。

 

逆に主キーさえ重複のないように保っておけば、その下のデータはどこかと重複していてもよいです。

(一意制約)

 

◆外部キー

参照制約

 

もし、表(テーブル)同士を連携させて使う場合、『外部キー』と『主キー』を繋げなければなりません。(参照制約)上の図でいうと、教科テーブルの『国語』を外部キーとする場合、教師テーブルの『国語』はひとつでなければなりません。教師テーブルのA列(一段左の列)は主キーにしておくということです。教師テーブルに”国語、高田さん”がいてしまったら教科テーブルはどちらの”国語”を参照してよいのか分かりませんよね。

 

 

インデックス
索引のこと。
インデックスを設定しておくことで、効率的なデータ検索が可能り、劇的に早く検索できる場合があります。インデックス(検索の仕方)にも数種類ありますが一番多く採用されているのは『B-Tree』というやり方です。2分探索木のように1/3ずつ検索していきます。データが100個あれば、「33」と「66」というインデックスを設定しておきます。何かデータを検索するときは、33以下なのか、34以上65以下なのか、66以上なのかで的を絞って検索することができます。1~100までを順番に検索するよりは断然早いですよね。

 

デメリット

・データを更新(削除、追加、値の更新)するたびにインデックスも”わざわざ”更新されることになる。検索は早くなりますが、データ自体の修正には少しばかり時間がかかってしまいます。

・インデックスを設定した分の容量が増える(ちょっぴり)

本も目次があると探しやすいですが、その分、本のボリュームは増えますよね。それと同じです。

 

◆データ操作

(1)選択

(横軸)を抽出すること。

選択

 

(2)射影

(縦軸)を抽出すること。

列のことを”フィールド”とか”属性”といったりもします。

射影

 

◆結合

表(テーブル)と表(テーブル)を結合する。

結合

 

基本情報技術者試験 8-2(関係データベース)

主キー:重複させない
外部キー:その列を外部キーにするなら、その外部キーは他の表で主キーでないといけない。
インデックス:索引
データ操作:選択、射影、結合

選択、射影、結合はアホかってくらい出てきます。

データベースの問題はどちらかといえば、データ操作(SQL)が出題されます。

ただし、この当たりの定義(用語の理解)は必ず必要になってきます。

 

以上です。

 

yamatunes