エンジニア備忘録

エンジニアの備忘録です

データベース入門

久しぶりに投稿します〜!

最近はデータベース設計の学習をしているのでその辺りについて投稿したいと思います!

データベースとは

簡単に言うと、「一定の形式で整理された情報の集まり」のことで、そのデータベースを管理するためのシステムを「DBMS(Database Management System)」と呼びます。データベースやDBMSを考える上で重要な「データ」と「情報」があります。「データ」と「情報」という言葉は対になって使われることが多いのですが、データとは「ある形式(フォーマット)に揃えられた事実」のことです。一方で、情報とは、データからある文脈なり観点なりに従って集約したり加工したりするものを指します。つまり、データベースから特定の文脈や観点によって、利用者にとって必要な情報を抽出するためのシステムのことをDBMSと呼びます。エンジニアの方がデータベースと呼ぶときは、DBMSのことを指すことが多いです。

 

データベースの主な種類

  • リレーショナルデータベース(Relational Database: RDB

関係データベースと呼ばれ、現在最も広く利用されています。データを人間が理解しやすい二次元表(エクセルの表のようなもの)の形式で管理するため、データの取り扱いが他のデータベースに比べると直感的で簡単であることが特徴です。今回の投稿で紹介していくのは、主にリレーショナルデータベースについてです。

 

RubyJavaなどのオブジェクト指向言語において使われている「オブジェクト」を、データベースに保存するために作られたのが、オブジェクト指向データベースです。

 

Web上でやり取りされるデータの形式にXMLというものが普及しています。XMLJSONなどと同じデータの形式の一つです。この形式のデータを扱うことのできるデータベースとして開発されたのが、XMLデータベースです。リレーショナルデータベースが苦手とする階層構造のデータの扱いを得意としてます。

 

  • キー・バリュー型ストア(Key-Value Store: KVS)

データをKey(識別キー)とValue(値)の組み合わせだけの単純なデータ型で表現するデータベースです。単純なデータ問い合わせを高速化することを目的としており、大量データを高速に処理する必要のあるWebサービスで多く利用されています。Redisなどが有名です。

 

三層スキーマとは

三層スキーマとは、データベースの構造・形式(スキーマ)を3つの階層に分けてそれぞれ定義する方法のことです。三層スキーマは、

  1. 外部スキーマ(外部モデル)= ビューの世界
  2. 概念スキーマ(論理データモデル)= テーブルの世界
  3. 内部スキーマ(物理データモデル)= ファイルの世界

と定義されています。

外部スキーマ

外部スキーマとは、システムの利用者であるユーザーから見て、データベースがどのような機能とインターフェースを持っているかを定義するスキーマです。画面のユーザーインターフェースや入力データなど、ユーザーから見える「システムの姿」の一部である、ということもできます。

 

概念スキーマ

データベースに保持するデータの要素および、データ同士の関係を記述するスキーマです。概念データベースは、「開発者から見たデータベース」です。あとで、説明しますが、概念スキーマの設計を「論理設計」と呼びます。

 

内部スキーマ

概念スキーマで定義された論理データモデルを、具体的にどのよういDBMS内部に保存するかを定義するスキーマです。テーブルやインデックス(牽引)の物理的定義を含みます。

 

論理設計と物理設計

論理設計

先ほども少し説明しましたが、概念スキーマを定義する設計のことを、論理設計と呼びます。論理設計の「論理」とは、「物理層の制約にとらわれない」という意味で使われています。物理層の制約とは、SQLの構文といった、具体的で実装レベルの条件のことです。システム開発におけるデータベース設計は、論理設計を先に行いその後に物理設計を行います。これは論理設計が物理的制約に依存していないためです。

論理設計のステップ
  1. エンティティの抽出
  2. エンティティの定義
  3. 正規化
  4. EB図の作成

エンティティとは、現実世界に存在するデータの集合体を指す言葉で、最終的にテーブルという物理単位で格納していくことになります。1ではシステムにおいて必要なデータを洗い出す作業です。「要件定義」と重なっています。

その後、エンティティの定義をしていきます。エンティティは、データを「属性」という形で保持します。エクセルの表における「列」と同義だと考えていただけるとイメージがしやすいと思います。ここで重要なのは、「キー(key)」という列を定義することです。キーとは、ある特定の列の値を決定するための列のことです。

正規化とは、データの更新や削除などが整合的に行えるように、エンティティのフォーマットを整理することが重要な目的です。データベース設計を学ぶ上で非常に大事な考え方となります。

ER図とは、Entity-Relationship Diagramの略です。正規化を学ぶとエンティティの数が増えます。これは正規化がエンティティ(=テーブル)を細かく分割する作業だからです。ER図とは、このそれぞれのエンティティの関係性をわかりやすく表現するために作成する図のことです。

 

 

長くなったので、今回はここまでにしたいと思います!

間違っているや、意見などがあれば是非コメントしてください(^^)