リレーショナルデータベース

リレーショナル型データベース

  • リレーショナルデータベースは、いくつかの表が集まってできています
  • 表のことをテーブル(table)と呼び、列をカラム(column)、行をレコード(record)と呼びます
  • PHPにデータの型があるように、データベースにもカラム型というものがあります
Point!
  • データベースにデータを集め、データを使いやすくする
  • DBMSでデータを管理する

MySQL

  • PHPと相性が良いDBMS
  • MySQLは、リレーショナルデータベース(RDB:Relational Database)と言う種類のデータベースで、現在最も広く利用されているオープンソースデータベースです
  • 高速
  • 使いやすい
  • 無料
Check Test
  • MySQLは、PHPと相性のよい「 リレーショナルデータベース 」で、表のような形式でデータを管理している
  • データベースの名称を書きなさい(table, record, column)

基本リレーショナル代数演算

  • Fundamental Relational-Algebra Operations
  • リレーショナルデータベースは、数学の演算をもとにデータの操作をおこなうことができます
  • 厳密に定義された演算を繰り返すことによって、データを「表」として抽出することができます
和(union)
  • 表「商品1」と表「商品2」に存在するすべての商品を抽出することができます


差(difference)
  • 表「商品1」と表「商品2」のどちらかにのみ存在する商品を抽出することができます


積(intersection)
  • 表「商品1」と表「商品2」のどちらにも共通して存在する商品を抽出することができます


直積(cartesian product)
  • 2つの表の行の組み合わせをすべて組み合わせる演算です



和・差・積・直積は「集合演算」と呼びます。
それ以外にリレーショナルデータベース特有の演算があります。
射影・選択・結合・商は「関係演算」と呼びます。

射影(projection)
  • 表中の列を抽出する演算です
  • 表「商品」の中から商品名だけを取り出す演算です


選択(selection)
  • 表中の行を取り出す演算です
  • 表「商品」の中から複数行を抽出する演算です


結合(join)
  • 表を「つなぎ合わせる」演算です
  • 表「売上」には、商品名は記載されていませんが、商品コードによりどの商品であるかは判別できます
  • つまり表「売上」では、表「商品」の主キーである「商品コード」を参照(reference)することで、どの商品であるかを判別できる状態にあります
  • このとき表「売上」の商品コードを「外部キー(foreign key)」と呼んでいます
  • 外部キーが他の表の主キーを参照しているとき、結合によって表をつなぎ合わせます


商(division)
  • 割られる方の表から、割る方の表のすべての行を含むものを取り出し、そこから割る方の行を除く演算です


E-R モデル(Entity-Relationship model)

  • 現状から実体(Entity)となるものをとらえます
  • 実体がどのように関係してるかを分析することで、現状を把握しようという考え方です
  • 実体同士が対応する数のことを「カーディナリティ(cardinality)」と呼びます
E-R モデルの分析方法
  1. 1対1の関係
  2. 1対多の関係
  3. 多対多の関係

表を正規化(normalization)する

  • 現状の実体をリレーショナルデータベースの表に落とし込む作業です
非正規形
  • 繰り返しの項目が排除されていない表です
  • リレーショナルデータベースはこのような表ではデータをうまく管理できないことが知られています
第一正規形(first normal form)
  • 表を2次元の単純な表としたものです
  • 1つのセルに1つの項目が入るような表にしたもの
  • 繰り返し項目を排除するように表を分割しています
第二正規形(second normal form)
  • データを識別できるキーによって他の列の値が決まるように分割したものです
  • 「主キー」によって他の列の値が決まるようにします
  • リレーショナルデータベースでは、「ある列の値によって他の列の値が決まる」ということを「関数従属している(functionally dependant)」と言います
  • 第二正規形では、主キーに他の列が関数従属するように表を分割するようにします
第三正規形(third normal form)
  • 各項目の値が、主キー以外の項目によって決まらないように分割したものです
  • リレーショナルデータベースでは、関数従属のうち「ある列の値によって間接的に他の列の値が決まる」ことを「推移従属している(transitively dependant)」と言います
  • 第三正規形では、推移従属を除くように表を分割するようにします

データベースを設計

概念スキーマ(conceptual schema)
  • 現実の世界をモデル化する段階のことを言います
  • データベースの論理的な構造を決定する段階のことです
  • 概念スキーマの設計は、E-Rモデルによって現実の世界を把握したり、表を正規化することで行われます
内部スキーマ(internal schema)
  • コンピュータ内部からみたデータベースのことを言います
  • データベースの物理的な構造を決定する段階のことを言います
  • 内部スキーマの設計は、データベースの高速な検索方法を設計することなどで行われます
外部スキーマ(external schema)
  • ユーザーやアプリケーションからみたデータベースのことを言います
  • 外部スキーマの設計は、アプリケーションプログラムが必要とするデータを設計することで行われます

Point!

  • PHPでデータベースに接続するには、PDOを使う
  • データベースのデータを扱うには、SQL文を使う
  • SELECT文:データの取得
  • INSERT文:データの削除
  • DELETE文:データの追加
到達度チェック
  • データベースを管理しているシステムを何と言いますか? 
    • DBMS(データベース管理システム)
  • MySQLで、データベースを指定する文はなんですか? 
    • USE文(データベース名で指定したデータベースに接続します。ここで接続というのは、接続以降に行われる操作の時にデータベースが省略された場合にデフォルトで使用されるデータベースを設定するということです。)
  • PDOは「 抽象化レイヤー 」に位置し、データベースごとの差を吸収する