現実世界のモノゴトを効率よく管理するリレーショナルデータベースの設計方法

現実世界のモノゴトを効率よく管理するリレーショナルデータベースの設計方法

WEBサービスを構築するときには、必ず必要となるデータベース。そして、さまざま種類のデータベースがある中でも、特に利用機会の多いのが「リレーショナルデータベース」。

リレーショナルデータベースは、複数のEXCELのシートを自在につなげるようなイメージで、効率的かつ可能な限り同じデータを重複して保持することを防止し、データを管理するために利用されます。

そんなリレーショナルデータベースを設計するためには「論理設計→物理設計→実装設計」と段階を踏んで設計していくこと。そしてそのためには、データ化する前の、現実世界の実際のものやことを、ER図なども使いながら表現していく過程が描かれています。

ありがとうございました!

本のまとめ

▼読んだ本は?

■達人に学ぶDB設計 徹底指南書
■ミック(著)

▼DBMS(データベース管理システム)の種類は?

■Oracle Database
└オラクル社の製品。Windows/Linuxなどマルチプラットフォーム対応(有料)

■SQL Server
└マイクロソフト社の製品。Windowsプラットフォームに特化(有料)

■DB2
└IBM社の製品。UNIX・Windows・IBMのメインフレームOSなど、マルチプラットフォーム対応(有料)

■PostgreSQL
└米バークレー大学で開発された、オープンソースのDBMS(無料)

■MySQL
└サン・マイクロシステムズ所有からオラクル所有に変わりつつ、オープンソースのDBMS(無料)

▼データベースの「スキーマ」って何?

■スキーマ
└「枠組み」や「構図」を意味し、データベースのデータ構造やフォーマットを意味する

【1】外部スキーマ
└一般の利用ユーザーから見た、データベースの枠組み
└「画面」や「画面を通じて入力するデータ」のこと

【2】概念スキーマ
└データベースの開発者から見た、データベースの枠組み
└「データ同士の関係」を記述するスキーマ
└概念スキーマを決めるのが「論理設計」

【3】内部スキーマ
└DBMS(データベース管理システム)から見た、データベースの枠組み
└「テーブル」や「インデックス」のこと
└内部スキーマを決めるのが「物理設計」

▼データベースの「エンティティ」って何?

■日本語では「実体」の意味
■テーブルやデータに落とし込む前の、現実世界の「ものやこと」
■例えば「顧客」「社員」「店舗」「車」など実際のもの
■例えば「税」「会社」「注文履歴」など実際の行動

▼データベースの「テーブル」って何?

■「列(カラム)」と「行(レコード)」を持つ「EXCELの表のようなもの」をテーブルと呼ぶ
■テーブルは、各レコードに関して、統一性と共通点を持っている必要がある
■例えば「社員テーブル」では、1つのレコードが、1人の社員を表すなど

▼データベースの「キー」って何?

■主キー(プライマリーキー)
└テーブルにおいて、必ず1つ存在しなければならないもの
└その値を指定すれば、必ず1行のレコード全体を特定できるもの
└例えば、社員テーブルに存在する「社員ID」など

■外部キー
└2つのテーブルの間の、列同士で指定するもの
└例えば「社員テーブル」の中で、「部署テーブル」の情報を外部参照する場合、「部署列」が外部キーになる

■「キー」作成時のルール
└コードやIDなど、表記体系がルール化されてきっちり決まったものであること
└固定長文字列のデータ型に、格納して利用すること

▼データベース設計の順番は?

【1】論理設計
└「正規化」「ER図を使ったエンティティの洗い出し」を行う設計

【2】物理設計
└テーブルの形式、サーバーやソフトウェアなど、物理的なハードウェアレベルの設計

【3】実装設計
└特定のデータベース製品を前提に、具体的な構築の手順や方法の設計

▼論理設計の流れは?

【1】データになる前の、現実世界の「エンティティ」を洗い出す
【2】エンティティ間の関連を示す「ER図」を描く
【3】テーブル内部のデータを「正規化」する

▼「ER図」って何?

■「Entity-Relationship Diagram」の略称のこと
■「Entity(実体)」とその「Relationship(関連)」を表したもの
■「Relationship(関連)」は、必ず「1対多」の関係にすること
■例えば「会社テーブル:社員テーブル」は「1対多」(一つの会社に複数の社員がいる)状態になる

▼「正規化」って何?

■正規化
└データを「正規形」に変えること

■正規形
└データベース内部に保持するデータに関して、冗長性(重複)を排除したデータ形式のこと

▼正規化を行う流れは?

【1】「第1正規形」にする
└1つのセルの中に、1つの値しか含まない形にすること
└例えば「社員テーブルの中に社員の子ども列があり、2人の子どもが一つのセルに存在している」状態などを排除する

【2】「第2正規形」にする
└テーブル内に存在する1つの「主キー」に、その他すべての列のデータが従属すること
└例えば「社員IDを主キーにする社員テーブル」があれば、その他カラムは「年齢・性別・部署」など社員IDに従属する
└この場合「会社ID・会社名」などは別個のテーブルとして分割する

【3】「第3正規形」にする
└テーブル内に存在する1つの「主キー」に、その他すべてのカラムのデータが直接的に従属すること
└例えば「社員IDを主キーにする社員テーブル」があれば、「会社ID→部署ID→社員ID」など間接的なものがあれば排除する
└この場合、中間となる「部署ID」は別個のテーブルとして分割する

▼物理設計の流れは?

【1】テーブル定義
└ER図から定義されたエンティティをもとに、実際の「テーブル」を設計する

【2】インデックス定義
└インデックスは「本の索引」のようなもので、データベースの中に索引を作成する機能
└データベースのパフォーマンス最適化をするために、このインデックスをどの列につけるかを決める

【3】ハードウェアのサイジング
└最終的に取り扱うデータ総量の観点から、ハードウェアのサイズを決める
└「処理する時間」「処理できるデータ量(スループット)」のパフォーマンス観点から、ハードウェアのサイズを決める

【4】ストレージの冗長構成決定
└データベースのデータを保持するための媒体になる、HDD(ハードディスク)の冗長構成を決める

【5】ファイルの物理配置決定
└データベースの中身にあるファイルを、どのHDDに保存するか決める

▼データベースの中にはどんなファイルがある?

■データファイル
└テーブルのデータを格納するファイル

■インデックスファイル
└テーブルの列に作成される、インデックスが格納されるファイル

■システムファイル
└DBMSの内部管理用に使われるファイル

■一時ファイル
└SQLのサブクエリ・GROUP BY句・DISTINCTのソートデータなど一時データのファイル

■ログファイル
└テーブルのデータに変更を受けた時、実際のデータファイル更新の前に保持するログファイル

▼データのバックアップ方法は?

■フルバックアップ
└ある時点で、そのシステムで保持しているすべてのファイルをバックアップする方法

■差分バックアップ
└ある時点から、一定期間の間に更新した「ログファイル」のみを、積み重ねてバックアップする方法

■増分バックアップ
└ある時点から、一定期間の間に更新した「ログファイル」のみを、増加分だけバックアップする方法

関連する記事