データベースの基礎
データベース
省略されてDBと言われることもあります。
一箇所にまとめられて蓄積・管理されているデータの集合体で、作成・管理には一定の形式が設けられています。また、複数で利用・共有すること、検索・加工することも条件にあります。
一般的にはコンピュータ上のものをデータベースと言いますが、紙媒体の電話帳やタウンページもれっきとしたデータベースです。
ファイルシステム上での整合性を解決しています。
ファイルシステムとの違い
データベースが登場するまで多く使われていました。
データベースは数値や文字まで解体された個々の要素を蓄積するのに対して、 ファイルシステムは〇〇のデータという加工済みのファイルとして保存されます。
プログラミング等でデータを使用する際は、ファイルシステムだとファイルのある場所、メモリのどこにあるかの情報が必要となります。
データベースの場合は、格納されているところからデータベース側が取り出してくれるので、場所の情報が不要になります。
DBMS
データベース管理システム(Database Management System)
データベースを管理するためのシステムです。 管理するだけなので、DBMSで何か動かそうとすることはできません。
操作をするにはSQL言語が必要となります。
DBMSの利点
- 複数のデータを一元管理できる
一箇所にまとめて管理をしておくことで、データがどこにあるのか探す必要がなくなります。
データの位置を意識する必要がなく、命令で欲しいデータを取り出すことが可能です。
- 複数人で使える
複数のユーザが同時にデータを利用したい場合、データベース側が制御してくれます。(ファイルシステムでは解決できなかった整合性の解決)
- バックアップ機能
手動でバックアップを取る必要がなく、自動で定期的にバックアップをとることが可能です。
データベースの種類
階層型データベース
会社の組織図や家系図のように、幹から枝が生えている(ツリー構造)イメージです。
親データと子データで1対多数の関係になります。
大型のコンピュータで使用されてきており、大量のデータを高速で処理することができます。(検索する際にルートが1つに限られるため)
データの変更がしにくい、データが重複することがあることがデメリットです。
ネットワーク型データベース
階層型では実現が難しい、多数対多数の関係を構築できます。ツリー構造よりは網目状のイメージです。
後述するRDBに代替されるようになりました。
ビッグデータ
従来のデータベース群では管理が難しい、巨大なデータ群です。
日々生産されるリアルタイムな情報を指すことが多いです。
NoSQL
RDBで必要なテーブル等を用意する必要がなく、あらかじめ用意されている関数のみで操作ができます。
リレーショナルデータベース(RDB)
Oracle,MySQL,SQLserver等、様々なベンダーの製品があります。
RDBの特徴として、データを表の形で構成をします。表をテーブルと言います。
複数のデータを表と表の関係を用いて管理しています。
表の縦をフィールド、横をレコードと言います。
あらかじめ用意する基礎のデータをマスタテーブル、日々蓄積されるデータをトランザクションテーブルと言います。
レコードを取り出す際には、そのレコードを取り出すのに必要なフィールドを指定します。この時に指定されたフィールドをキーと言います。
キーは他に、社員番号や個人番号のような重複することのない一意(ユニークとも言います)を特定することのできる特別なキーがあり、主キー(Primary key)と言います。
主キーがNULL、空の扱いになることはありません。
複数のフィールドを主キーのように使う時には複合キーと言います。
テーブルが複数ある際には、外部キーを使い他のテーブルと結びつけることもできます。
これをリレーションシップと言います。
データベースでは複数のテーブルを使用することが一般的となります。