システムを支えるデータベースとは。筑波大学「データーベース概論Ⅰ」(前編)
- のろ
- 2024年11月8日
- 読了時間: 6分
更新日:3月13日
目次
はじめに
世の中にアプリやシステムが普及し、どんどん便利な社会になっています。システムと聞くとアプリアイコンや画面表示など、UI的な分かりやすい外見に目が行きがちです。しかし、システムにはログやユーザーデータが格納され、適切に管理していくことでその真価を発揮し、ユーザーにとって最適なパフォーマンスを可能にします。目に見えない部分ですが、バックエンドとなる裏側のデータ管理は非常に重要な役割を担っているわけです。では、そのデータ管理を担っている「データベース(DB)」とは一体どのようなものでしょうか。
今回は、2018年にYouTubeで公開されている筑波大学の講義「データベース概論Ⅰ」を視聴しましたので、簡単に概要をまとめてみました。全15講義分の要約でかなりにボリュームになったため、前後半の2つの記事に分けました。どちらもお楽しみください。
本記事では、ITパスポートレベルのITに関する基本的な概念や用語の説明を割愛しています。分からない単語があれば参考サイトのIT用語辞典がすごく便利なので活用してください。また、記事内でのデータベースとは主に「リレーショナルデータベース(RDB)」を指します。
データベースはExcelと同じ
データベースの構造は、雑に言うとExcelと同じです。Excelでデータを管理する場合、まずはシートを用意します。次に、そのシートのA列には氏名。B列にメールアドレス。C列に住所等といった具合に、どの列にどんなデータを入れるか検討します。列の項目が決まったら、1行目に太郎の情報を入力。2行目に次郎の情報を入力というように、1行毎にデータを挿入していくことで表が完成します。管理したい情報が増えれば、そのシートに列を追加したり、別シートで新たに情報を整理するわけです。表に保存されたデータを効率よく活用したい場合は、FILTERやVLOOKUPなどの関数を使用します。

データベースも考え方は同じで、名称が異なるといった感じです。Excelでいうシート=データベースではテーブルと解釈できます。また、関数=SQLと言えるでしょう。
ビューとは何か
上記の通り、データベースの基本的な概念はExcelに変換できます。しかし、中にはExcelにはない概念がデータベースにあったりします。その1つが「ビュー(View)」です。ビューとは、仮想テーブルを作成できる機能です。特定テーブルを部分的にフィルターしたり、複数テーブルを結合したりできます。Excelでも色んな関数を駆使して、別シートにビューと同様なことは実現可能ですが、プリセットとして保存できないのでメンテナンス性は最悪です。これがデータベースのビュー機能では、容易に行えるわけですから、かなり優秀な機能です。
データベースの復旧
どんなシステムにも障害は発生します。データベースも例外ではありません。
データベースの障害時の復旧処理において、ロールバックとロールフォワードがあります。ロールバックは、実行をキャンセルして元の状態に戻すこと。ロールフォワードは、履歴から再実行して最新の状態に進めることです。

また、データバックアップとログはまったくの別物です。ログはあくまで動作履歴で、データがある前提で履歴化しています。そのため、単体では役に立ちません。つまり、データベースを復旧する際には、まずはデータを復元します。次にそのデータに応じたログを1つずつ順番に反映させることで、障害時の状態に戻せるわけです。

主キーとは何か
膨大なデータの中から1つの情報を取得したい場合、「主キー」を使うのが一般的です。主キーとは、レコードが一意に決まる属性または属性の組み合わせのうち最も相応しいものです。世の中にあふれているシステムで「ID」と称される属性は、主キーにあたる可能性が高いです。例えば、社員IDを特定できれば1人の社員にたどり着けるでしょう。
主キーを決めるにあたって、ややこしい存在に「超キー」と「候補キー」があります。ネスト構造で示すと、超キー>候補キー>主キーという関係です。超キーは、レコードが一意に決まる属性または属性の組み合わせです。超キーの中で最も小さな属性の組み合わせが候補キーになります。更にその中から最も相応しい1つが選ばれ、主キーとなります。

正規化とは何か
データベースを効率的に管理し、データの不整合や冗長性、異常な挙動を防ぐために「正規化」は非常に重要です。漫画の新刊が発売されていたので買って帰ったら、既に家族も新刊を買っていて5巻だけ2冊になってしまう、なんて経験があるかもしれません。シリーズは5巻までしか出ていないのに、本棚には6冊あるという整合性がとれていない状態です。また、1冊分余計に本棚の容量を圧迫してしまっています。これを整えてあげたりする作業が、いわゆる正規化です。
正規化はするにあたって、「関数従属性」を理解する必要があります。関数従属性は、1つの属性の値が決定すると、もう1つの属性の値が一意に決まる性質のことです。データベースでは、主キーと非キー属性の値で関数従属性が成立する必要があります。もし、この関係が成立しない場合は、表を分割して綺麗に整理しなくてはいけません。

第1正規形は、関数従属性とは関係ありません。ここでは、各属性が複数の値を持たないようにします。1つのセルに対して1つの値のみにしろということで、1つのセルに3つの値が入っている場合は、3行に分解する必要があります。

第2正規形は、主キーが2つ以上の属性の組み合わせの場合のみ考慮します。主キーそのものと関数従属性が成立するのはOKですが、主キーを構成する属性の1つだけと関数従属性が成立するのはNGです。

「A=BかつB=Cならば、A=Cが成り立つ」という性質を推移律(三段論法)と言います。第3正規形では、これを排除します。全ての非キー属性は、主キーのみに依存するようにしなくてはいけません。

正規化において、第3正規形(またはボイスコッド正規形)まで出来ていれば、データとしてはおおよそ問題ありません。第4正規形以降もありますが、今回は割愛します。
さいごに
今回の説明では、データベースとはどのようなものか。また、中にどんなデータを入れておくのが望ましいのかを解説しました。これで、普段何となく耳にしていた「データベース」とは何なのか、その正体が薄っすら見えてきたんじゃないでしょうか。
近年では、プログラミングのスキルを必要としない市民開発(ノーコード開発など)も流行っています。これらでデータソースとして取り扱うものは、一般的なDBではなく、より簡素なExcelやcsvファイルだったりします。この視点から考えても、Excelでデータ管理がちゃんと行えれば、データベースを理解するのはさほど難しくはないと思います。
次回は、データベース内に保管したデータを操作する方法。つまり、基本演算子やSQLについて説明していきます。