しょうteeのメモグラミング

30代エンジニアの卵が、勉強したことをブログに書きます。

3層スキーマを調べたので書きました。

こんにちは、しょうteeです。

今回もDB設計について勉強したことをアウトプットしていきます!!

今回は「3層スキーマ」について調べてみました。

スキーマとは

そもそも「スキーマ(schema)」とはどういう意味か??

スキーマ とは、「枠組み」、「構図」

そして、データベース設計においては、

データベースのデータ構造やフォーマット

という意味とのこと。

この「スキーマ」は、一般的に3つのレベルに分けられる。

  1. 外部スキーマ
  2. 概念スキーマ
  3. 内部スキーマ

これら3つのスキーマに基づいたシステムを、「3層スキーマ」という。

https://itmanabi.com/wp-content/uploads/2018/12/db-schema.png

具体的に1つずつスキーマ見ていく。

1. 外部スキーマ

ユーザーから見たデータのことを指す。

「画面やビュー」のこと。

https://stat.ameba.jp/user_images/20100902/13/db-beginner/a4/8c/j/o0406033910726622698.jpg?caw=800

このように、IDや教科名などを「見せるために加工したデータ」を、ユーザーが最終的に使うためのデータ構造を「外部スキーマ」という。

2. 概念スキーマ

外部スキーマをDB上で扱いやすくするために「重複の排除や項目の分割」などを行なったものを指す。

外部スキーマが「ユーザーから見たデータベース」とすれば、概念スキーマは「開発者から見たデータベース」ともいう。

また、データベースにテーブルを作成するための「設計図」ともいう。

3. 内部スキーマ

「内部スキーマ」は、概念スキーマで定義されたデータを具体的にどう格納するかを定義するもの。ハードウェア的な変更はここで吸収する。

DBMSから見たデータベース」である。

内部スキーマの設計を、「物理設計」という。

※「論理設計・物理設計」については別の記事で書いていきます。

RDBもコンピュータ上で動く以上は、あらゆるデータは最終的に「ファイル」の形で管理されるので、「ファイルで表現される世界」と考えると良いとのこと。

概念スキーマは何のためにあるのか?

概念スキーマは??

結論:内外部スキーマ緩衝材の役割を果たす

もし「概念スキーマ」がないと、変更に対する柔軟性がなくなるとのこと。

ユーザーが、「データの見え方を変えたい!!」と思った場合、外部だけでなく、内部のスキーマまで変更しないといけない。逆も然り。

2つだけのスキーマだとしたら、独立性が低く、依存性が高くなるため、変更に弱いシステムが出来上がってしまう。

概念スキーマは、外部スキーマと内部スキーマの間に立ち、両者の変更が互いに影響し合わないようにするための中立の立場である。

これらのスキーマの独立性のことをデータ独立性といい、

  • 外部スキーマからの独立性:論理的データ独立性

  • 内部スキーマからの独立性:物理的データ独立性

という。

まとめ

  • 3層スキーマとは、以下の3つの概念がある。

 1. 外部スキーマ(外部モデル)= ビューの世界

 2. 概念スキーマ(論理データモデル)= テーブルの世界

 3. 内部スキーマ(物理データモデル)= ファイルの世界

  • DBの観点から見ると、

外部スキーマは「ユーザから見たデータベース」

概念スキーマは「開発者から見たデータベース」

内部スキーマは「DBMSから見たデータベース」

外部スキーマと内部スキーマの間にある緩衝材の役割を果たす。

外部スキーマと内部スキーマ同士では独立性が低いため、変更に弱いシステムができるために概念スキーマが必要。

最後に

今回もざっくりではあったのですが、勉強したことをアウトプットしてみました。

記事に書く前は「スキーマ」という言葉自体よく分かってなかったのですが、調べたこと(インプット)書くこと(アウトプット)によって頭の中も整理され、少しずつ「理解」へとつながっていきました。

最後まで読んでいただき、ありがとうございました😊