ガイダンスに続き、データベースの基礎的な総括を行う。
データベースでは、エンドユーザは、WebやGUIアプリなどを経由してデータにアクセスするが、 そのWeb,GUIアプリは、応用プログラマが作成し、実際のデータベースには、SQLを経由して アクセスが行われる。実際のデータベースは、データベース管理者が定義・生成・2次記憶割り付け・再編成などの細かなチューニングを行う。
データベースシステムの実例
データベースシステムの実例ということで、Oracle などの製品名に加え、 Webとの一貫したシステム構築では、LAMP(Linux+Apache+MySQL+PHP)構成といった 用語なども紹介する。
応用プログラマにしてみれば、SQLを経由することで、データをプログラムから分離ができ、 実際の内部の構造を知ることなく独立性が得られる。また、データの一貫性を保つことは、 データベースを利用しないと大変であるが、データベースでは(a)正当性確認,(b)同時実行制御,(c)障害回復などを行ってくれるので、一貫性のあるデータ管理が容易となる。
プライバシーの保護などの話の一環として、最近のシステムでデータベースを利用する場合、 大きな問題となるSQLインジェクションといった手法の存在なども紹介する。
データベースに対する視点
データベースに対する視点として、エンドユーザからの要求を応用プログラマが処理する場合、 データベースの一部分だけであったり、複数のデータベースを大きな単独の表で扱えると便利であったりする。こういう応用プログラマの視点を外部スキーマと呼ぶ。 しかし実際には、複数の表からなるデータベースでは更新なども容易な(正規化された) 表であるほうが良い。このような視点は、概念スキーマと呼ばれる。 さらにデータベースの内部では、このデータを高速に処理するためのインデックスが付加されたり、実際のファイル上に記録されるデータ形式がとられる。これらは内部スキーマと呼ばれる。この利用者の視点に応じたスキーマ構成を、3層スキーマ・アーキテクチャと呼ぶ。
データモデル
データベースでは、階層的なデータ構造は木構造で表現できる。 (ファイルに記録する際では、XMLなどの表現をとったりする。) しかし、階層の深い物の取り扱いは不便となる。現実のデータでは、これらが複雑に絡み合う ことが多く、ネットワークモデルなどと呼ばれる。 これらのモデルは汎用性が高いものの、検索や取り扱いが複雑となるため、 関係モデル(Relational model)が広く使われている。
情報処理技術者試験受験者から質問
情報処理技術者試験を受ける学生さんが、質問にくる。 「第3正規形って何?」例年の質問ネタである。 でもなかなかうまい説明ができない。 こんなんが、データベース教えていていいのかな…
ということで、解りやすく説明しているページを探してみた。
- 第2正規形は、部分関数従属性を取り除く。 「キーから非キー」への関数従属性を整理する。 A→Bを取り除く。
- 第3正規形は、第2正規形から推移関数従属性を取り除くこと。 「非キーから非キー」への関数従属性を整理する。 A→B→Cを取り除く。(A→Bは第2正規形で取り除かれているはず)