リレーショナルデータベース
リレーショナル型データベース
- リレーショナルデータベースは、いくつかの表が集まってできています
- 表のことをテーブル(table)と呼び、列をカラム(column)、行をレコード(record)と呼びます
- PHPにデータの型があるように、データベースにもカラム型というものがあります
Point!
- データベースにデータを集め、データを使いやすくする
- DBMSでデータを管理する
基本リレーショナル代数演算
- 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)」と言います
- 第三正規形では、推移従属を除くように表を分割するようにします
データベースを設計
概念スキーマ(conceptual schema)
- 現実の世界をモデル化する段階のことを言います
- データベースの論理的な構造を決定する段階のことです
- 概念スキーマの設計は、E-Rモデルによって現実の世界を把握したり、表を正規化することで行われます