この記事では、データベースの設計とスキーマモデルについて、初心者にも分かりやすく、図解付きで丁寧に解説しています!
データベースの設計
- 概念設計では現実世界をデータ構造にモデル化する
- 論理設計では概念設計でモデル化したデータ構造を基に、表の構成や関係性を定義する
- 物理設計ではハードウェアの選定など物理構造を定義する
スキーマ
- データベースの構造や仕様を定義したものをスキーマと呼ぶ。
- ANSI/SPARC 3層スキーマでは外部スキーマ-概念スキーマ-内部スキーマで
データベースを定義する - 外部スキーマではアプリやユーザがどのようにデータを見たいか定義する
- 概念スキーマでは表の構成や関係性を定義して、データの管理方法を決める
- 内部スキーマでは応答時間などデータベースの物理的な性質を決める、データの格納方法を定義する
データベースの設計の流れ
データベースはこのような流れで設計します。

概念設計
概念設計では、現実世界をどうデータで表現するのか設計します。

E-R図
概念設計でよく使われるのがE-R図です。E-R図では現実世界のモノ同士の関係性を図式化します。Eは「Entity」の頭文字で「実体(要するにモノ)」を意味して、「R」は「Relationship」の頭文字で「関係性」を意味します。
E-R図は、以下の3つの要素を含みます。
- 現実のモノを表す実体(下のE-R図の赤で記載した箇所)
- 実体同士の関係性(下のE-R図の青で記載した箇所)
- 実体が持つ性質を表す属性(下のE-R図の緑で記載した箇所)

関係性の矢印
関係性の矢印は「こちらから見て、相手の実体が複数あるかどうか」で決まります(矢印は省略されることもあります)。複数存在する場合は相手の実体の方向に矢尻が付きます。
会社-社員の関係性を例に考えてみましょう。会社には社員が複数人所属していますが、社員が所属する会社は1つだけです。

社員-社員番号の関係性の場合、社員1人につき社員番号が1つ割り当てられ、同じ社員番号を持つ社員は2人といません。

関係性の数字
関係性の矢印の上の数字は「こちらから見て、相手の実体が何個あるか」で決まります。
数字(例:1) | 相手の実体がX個ある。1の場合は1個。 |
---|---|
0..* | 相手の実体が0個以上ある。 |
1..* | 相手の実体が1個以上ある。 |
0..3 | 相手の実体が0個以上3個以下ある。 |
「*」には複数という意味があり、「..」には〇以上×以下という意味があります。
会社-社員の関係性だと、次のようになります。

論理設計
論理設計ではデータをどのように管理するかを設計します。表の構成・属性・関係性あたりを決めるんですね。

物理設計
物理設計ではハードウェアを含む、データベースの構成を設計します。

データ管理者とデータベース管理者
データ管理者は論理設計をする人で、データベース管理者は物理設計をする人です。
スキーマ
スキーマとはデータベースの構造や仕様を定義するものです。データベースを設計するために決めないといけない色々なことをスキーマと呼んでる、くらいの理解で大丈夫です。
概念設計→論理設計→物理設計で定義したものをそれぞれ概念スキーマ-論理スキーマ-物理スキーマと呼ぶことがあります。
ANSI/SPARC 3層スキーマ
ANSI/SPARC 3層スキーマはデータベースの構造を外部スキーマ-概念スキーマ-内部スキーマの3層で定義するモデルです。

概念スキーマと外部スキーマの違いが分かり辛いですが、概念スキーマでデータの管理方法を定義して、外部スキーマでデータの活用方法を定義するイメージです。
インデックスとは
インデックスとは検索する時に使う属性です。インデックスを設定することにより、データを検索するスピードが上がります。

応用情報技術者試験での出題例
令和5年度春期問29
応用情報技術者
午前試験 令和5年度春期問29
UMLを用いて表した図のデータモデルのa,bに入れる多重度はどれか。
〔条件〕
(1) 部門には1人以上の社員が所属する。
(2) 社員はいずれか一つの部門に所属する。
(3) 社員が部門に所属した履歴を所属履歴として記録する。


正解は”エ”
【aを考える】
部門には1人以上の社員が所属しているので、当然1つ以上の所属履歴が存在するはずです。よって、「1..*」が入ります。

【bを考える】
社員は異動することがあるので、複数の所属履歴を持ちます。よって、「1..*」が入ります。

よって答えはエです。
令和4年度春期問27
応用情報技術者
午前試験 令和4年度春期問27
ANSI/SPARC 3層スキーマモデルにおける内部スキーマの設計に含まれるものはどれか。
ア SQL問合せ応答時間の向上を目的としたインデックスの定義
イ エンティティ間の”1対多”,”多対多”などの関連を明示するE-Rモデルの作成
ウ エンティティ内やエンティティ間の整合性を保つための一意性制約や参照制約の設定
エ データの冗長性を排除し,更新の一貫性と効率性を保持するための正規化
正解は”ア”
ANSI/SPARC 3層スキーマモデルには外部スキーマ、概念スキーマ、内部スキーマがありました。
外部スキーマ:アプリ側が必要とするデータの見方を定義する。
概念スキーマ:表にどのような列を持ち、キーはどうするか。表と表の関係性をどうするかなど、データの管理方法を定義する。
内部スキーマ:データベースの物理的な性質を定義する。
ア SQLの応答時間は内部スキーマの説明になります。
イ データをどのように持つか定義しているので概念スキーマの説明です。
ウ データをどのように持つか定義しているので概念スキーマの説明です。
エ データをどのように持つか定義しているので概念スキーマの説明です。
よって答えはアです。