本記事について
『達人に学ぶDB設計徹底指南書』の個人的ポイントをまとめたもの。
自分の理解を深めるとともに、誰かにとっての気づきになれば幸いです。
(記憶を頼りに書いているので、情報が間違っていたらすみません)
本記事を書こうと思ったきっかけ
現在オリジナルアプリを作成しており、その中でデータベースの設計をしています。
しかし自分がデータベースの設計について本質的な理解がないことに気づいたので、勉強することにしました。
本記事の要約
- データ(データベース)はありとあらゆるサービスで使われている
- 最も広く使われているDBのモデルはRDB
- RDBではオラクル、MySQL、SQLといったDBMSが有名
- システム開発は処理でなく、先にDBから設計する
データベースに関連する用語の整理
「データ」とは、「ある形式(フォーマット)に沿って揃えられた事実」を意味します。
「データベース(以下DBと表記)」は、それらデータの集合です。
そしてこのDBを管理するシステムのことを、「DBMS(Database Management System)」と言います。
DBの代表的なモデル
DBの代表的なモデルとしては以下のようなものが挙げられます。
1. RDB(Relational Database)
2. OOD(Object-Oriented Database)
3. XMLD(XML Database)
4. KVS(Key-Value Store)
この中で最も広く使われているモデルが、1のRDB(リレーショナルデータベース)になります。
RDBにおいて、データは2次元のフォーマットで格納されます。
また、本書ではこのRDBに焦点が当てられます。
RDBの主なDBMS
- Oracle
- SQL Server
- MySQL
RDBではオラクルやSQL Server、MySQLといったサービスがよく利用されています。
なぜDB設計が大事なのか?
それではシステム開発において、なぜDB設計は重要なのでしょうか?
それは現在のシステム開発プロセスは「データ志向のアプローチ(DOA)」を採用しているためです。
これは「プロセス(プログラム)を先に作るのではなく、データを先に作る」という思想を指します。
こう聞くと、『プログラムを組んでからデータ設計するんじゃないの?』と思われる方もいるかもしれません。
しかし例えば受注・発注・仕訳といった機能を持つプログラムを作ってからデータ設計するとなると、
それぞれの機能ごとにデータを設計することになります。
その結果データが重複したり、整合性が取れなくなることがあるのです。
そのため現在では、先にデータ(を扱うルール)を決めてから、それに合わせてプロセスを作るという工程が主流となっています。
DB設計の3要素
DB設計にあたっては、次の3つのスキーマ(枠組み)が重要となります。
①外部スキーマ
②概念スキーマ
③内部スキーマ