データベースについて
データーベース(database, DB)
- 情報を管理するためのシステム(データベース管理システム DataBase Management System : DBMS)
- 特定のテーマに沿ったデータを集めて管理し、容易に検索・抽出などの再利用をできるようにしたもの
- 単位としての「データベース」
- SQL(Structured Query Language)という、データの操作や定義を行うためのデータベース言語で命令する
DBMSは、データをルールに基づいて整理整頓しながら格納し、データベース利用者の要求に対して必要なデータを検索したり、登録したり、削除したりします。DBMSがあって始めて、データベースが快適に利用できるようになります。
システムにおけるデータベース
- 通常、データベースは、専用のサーバにインストールされ、データベース(DB)サーバーとして構築します
- クライアントがコンピュータシステムの利用者です
- APサーバー(アプリケーションサーバー)は、クライアントからの要求に応答する窓口および処理担当です
- データベースサーバーは、データの倉庫番の役割で、APサーバーに指示が出されると必要なデータを検索してAPサーバーに受け渡したり、引き渡されたデータを登録したりします
データベースを使う理由
- ファイル・アプリケーションによる管理であ、データに矛盾が生じることがある
- ファイル・アプリケーションによる管理であ、データに重複が生じることがある
- データベースの導入によってデータの矛盾や重複を防ぐことができる
- データベースでは、データを共有して活用することができる
データベースのタイプ(データモデル:data model)
リレーショナル型データベース
- リレーショナル型は、データを表形式で管理します
- 列は、各管理項目を表し、行は、データのレコードを表します
- 階層型やネットワーク型と違って、データ構造の変化がプログラムに影響しない構造であることと、データの検索や更新などの操作も柔軟かつ容易であるなどの利点があり、現在の主流のデータベースです
階層型データベース
- 階層型は、ツリー構造でデータを管理しています
- あるデータが他の複数のデータに対して、親子関係を持ちます
ネットワーク型データベース
- ネットワーク型は、データが網の目のようになっています
- 各データが網の目のように繋がっていて、複数の親データへのアクセスが可能になっています
カード型データベース
オブジェクト型データベース
分散型データベース
現在の主流は、「リレーショナル型データベース」です。
基本リレーショナル代数演算
- Fundamental Relational-Algebra Operations
- リレーショナルデータベースは、数学の演算をもとにデータの操作をおこなうことができます
- 厳密に定義された演算を繰り返すことによって、データを「表」として抽出することができます
直積(cartesian product)
- 2つの表の行の組み合わせをすべて組み合わせる演算です
和・差・積・直積は「集合演算」と呼びます。
それ以外にリレーショナルデータベース特有の演算があります。
射影・選択・結合・商は「関係演算」と呼びます。
結合(join)
- 表を「つなぎ合わせる」演算です
- 表「売上」には、商品名は記載されていませんが、商品コードによりどの商品であるかは判別できます
- つまり表「売上」では、表「商品」の主キーである「商品コード」を参照(reference)することで、どの商品であるかを判別できる状態にあります
- このとき表「売上」の商品コードを「外部キー(foreign key)」と呼んでいます
- 外部キーが他の表の主キーを参照しているとき、結合によって表をつなぎ合わせます
E-R モデル(Entity-Relationship model)
- 現状から実体(Entity)となるものをとらえます
- 実体がどのように関係してるかを分析することで、現状を把握しようという考え方です
- 実体同士が対応する数のことを「カーディナリティ(cardinality)」と呼びます
E-R モデルの分析方法
- 1対1の関係
- 1対多の関係
- 多対多の関係
表を正規化(normalization)する
- 現状の実体をリレーショナルデータベースの表に落とし込む作業です
非正規形
- 繰り返しの項目が排除されていない表です
- リレーショナルデータベースはこのような表ではデータをうまく管理できないことが知られています
第一正規形(first normal form)
- 表を2次元の単純な表としたものです
- 1つのセルに1つの項目が入るような表にしたもの
- 繰り返し項目を排除するように表を分割しています
第二正規形(second normal form)
- データを識別できるキーによって他の列の値が決まるように分割したものです
- 「主キー」によって他の列の値が決まるようにします
- リレーショナルデータベースでは、「ある列の値によって他の列の値が決まる」ということを「関数従属している(functionally dependant)」と言います
- 第二正規形では、主キーに他の列が関数従属するように表を分割するようにします
第三正規形(third normal form)
- 各項目の値が、主キー以外の項目によって決まらないように分割したものです
- リレーショナルデータベースでは、関数従属のうち「ある列の値によって間接的に他の列の値が決まる」ことを「推移従属している(transitively dependant)」と言います
- 第三正規形では、推移従属を除くように表を分割するようにします