かっちゃんのプログラミング奮闘記

このブログは、僕がプログラミング学習をしていく上で、知識のインプットを図るためのアウトプット場所として活用している場所です。

【書籍】達人に学ぶDB設計徹底指南書を読んで学んだこと【第1章】

今回は「達人に学ぶDB設計徹底指南書」の第1章に関することのアウトプットを行います。

📖第1章

RDB(リレーショナルデータベース)

現在世の中で一番広く利用されているのデータベース。
保存されているデータをテーブルの様な2次元表で見ることができ、直感的にわかりやすいのが特徴。

DBMS(データベースマネージャーシステム)

データベースを操作したり管理したりするシステムさす。
MySQLPostgreSQLなどが無料オープンソースDBMSにあたる。
Oracle DatabaseやSQL Serverは「有料」のDBMSです。

DB設計時のアプローチ

  • DOA(データ中心アプローチ)
    システム開発時にDBに保持するデータは何かを事前に考えてからプログラムを書いていく「最初にデータありき」で考えて設計するアプローチのことを言う。
    今の時代は、このDOAでの設計手法が一般的。

  • POD(プログラム中心アプローチ) システム開発時に、まずプログラムを書いてどういう処理が必要が考えながらコードを書き、プログラムでの処理ができてから、扱うデータをそれぞれの処理ごとに考えて設計開発するアプローチ。
    要は、ロジックを考えてからその後に必要なデータを考えることかな?

💡ポイント

PODでの設計開発を行うと初めは良くても、だんだん仕様の変更追加などが加わってくると管理が処理ごとに管理していくのが大変になって非効率な開発になってしまう。

それとは対して、DOPでデータありきで考えて設計することで、一括でデータを管理することができるため、今は効率的なDOPでの設計開発のアプローチ支流になっている。

スキーマとは?

データベースを設計するための構図、フォーマットのことを指す。
このスキーマDBの設計情報を入力し、DBを作成する際にスキーマを元にDBの構築が行われる。

3層スキーマ

DBMS内部にデータを格納し作成する際に、この3層スキーマを使用しデータを格納する。
3層スキーマは、文字通り3層のスキーマによって構成されている概念のことを指しまして、以下の3つ概念のスキーマによって構成されています。

「外部スキーマ」「概念スキーマ」「内部スキーマ

外部スキーマ(ビュー)

ユーザー側から見た時に見えるデータを表している。
画面上に表示されるデータを作り出す際に必要になる。

概念スキーマ(開発者)

開発者から見たデータベースのことを表す。
この概念スキーマは、外部スキーマと内部スキーマの中間に位置するスキーマで、緩衝材の様な役割を果たしてくれる。

内部スキーマDBMS

DBMS側から見えるデータベースを表している。
MySQLなどデータベースの内部に入って、中のデータ見るときに、この内部スキーマがあることで保持されて格納されているデータをDBMS側から直接見ることができる。

💡ポイント

【概念スキーマ重要性】
外部スキーマと内部スキーマのみで構成する「2層スキーマ」でも実装することはできるみたいだが、これだと外部スキーマ側を変更した時に内部スキーマ側と直接紐づいているため、内部スキーマ側も同じ様に変更する必要性が出てきてしまう。

そこで「概念スキーマ」内部スキーマと外部スキーマの間に用いることで、内部スキーマと外部スキーマを独立させることが出来、DB内のデータの変更を容易にできる様になる。(概念スキーマが緩衝材の役割になってくれる)

この様に、スキーマを独立させることを「データ独立性」と呼ぶ。

・内部スキーマを独立させることを「物理的データ独立性」と言う。

・外部スキーマを独立させることを「論理的データ独立性」と言う。

なので今では3層スキーマが一般的になっている。