達人に学ぶDB設計徹底指南書の第1章を要約してみました
この記事を書いた人
はじめに
- 本書は、リレーショナルデータベースにおける設計について説明
- データベース設計は大まかに3種類に分かれる
- 論理設計(正規化やER図といった道具を使ったデータのモデル設計)
- 物理設計(サーバやストレージといった物理的なハードウェアレベルの設計)
- 実装設計(具体的な構築の手順や方法)
- 論理設計と物理設計にはトレードオフの関係がある
1-1 システムとデータベース
- データベースとはデータの集まりを指すために使われる言葉で、そのデータベースを管理するためのシステムを「DBMS(Database Management System)」と呼ぶ
- データベースは多くの所で使われている(Youtube、Amazonなどなど)。データベースを使わないシステムは、この世に存在しない
1-2 データベースのあれこれ
- データベースの代表的なモデル(構造/仕様)は何種類かある
- リレーショナルデータベース(Relational Database:RDB)
- 現在最も広く利用されるデータベース
- 特徴は、データを人間が理解しやすい二次元表の形式で管理できるため、データの取り扱いが他のデータベースに比べて直感的。本書ではRDBについて解説している
名前 住まい 業種 五条 東京 先生 エレン エルディア島 兵士
- オブジェクト指向データベース(Object Oriented Database:OODB)
- このオブジェクトをデータベースに保存するために作られたデータベース
- XMLデータベース(XML Database:XMLDB)
- XMLはHTMLのようにタグでデータ管理を行なう言語のこと。このXML形式のデータを扱うことのできるデータベースとして開発されたデータベース
- RDBが苦手とする階層構造のデータの扱いが得意
- キー・バリュー型ストア(Key-Value Store:KVS)
- データをKey(識別キー)とValue(値)の組み合わせだけの単純なデータ型で表現するデータベース
- 階層型データベース
- データを階層構造(木構造)で表現するデータベース
- RDBが流行る前は最も使われていた
- リレーショナルデータベース(Relational Database:RDB)
- データベースのモデルが変われば本書で学ぶ正規化などの設計方法は異なることに注意する
DBMSの違いは設計に影響するか?
- RDBにもDBMSがいくつか存在する
- Oracle Database (オラクル社の製品。最大のシェアを誇る)
- SQL Server(マイクロソフト社の製品)
- DB2(マルチプラットフォーム対応)
- PostgreSQL(オープンソース)
- MySQL(オラクル社の製品)
- DBMSの違いと設計技法の関係
- データベースのモデルと違って、DBMSの違いで設計技法を変える必要はない
1-3 システム開発の工程と設計
- システム開発の設計工程は以下の工程が順番にある
- 要件定義(要件を決める工程)
- 設計(定義された要件を決めるためシステムを設計する。本書の解説はここの部分)
- 開発(コーディング、ハードウェアの物理的構築も含む)
- テスト(要件仕様通りに動くか品質を担保する)
- 設計工程と開発モデルの種類
- ウォーターフォールモデル
- プロトタイピングモデル(アジャイル開発も含む)
設計工程とデータベース
- データベース設計が必要な2つの理由
- システムが永続的なデータを持つにはデータ設計つまりデータベース設計が必要不可欠
- データ設計がシステムの品質を左右するため(例えば、データフォーマットが扱いづらい設計にしてしまうとそれだけシステム全体の保守に影響を及ぼしてしまう)
- DOAとPOA
- 近年のソフトウェア開発では、データ中心アプローチ(DOA)が主流。プログラムを作るよりも初めにデータの設計をする方法論
- 一方、プログラム中心アプローチ(POA)がある。複数のチームでプログラムから先に作るとデータに不整合が生まれ非効率なため廃れ、現代ではアンチパターンとされている
- 3層スキーマ
- スキーマとは、データベース設計において、データベースの構造やフォーマットという意味で使われる
- 外部スキーマとは、システムの利用者であるユーザーから見て、データベースがどのような機能とインタフェースを持っているかを定義するスキーマ
- 概念スキーマとは、データベースに保持するデータの要素および、データ同士の関係を記述するスキーマ
- 内部スキーマとは、概念スキーマで定義された論理データモデルを、具体的にどのようにしてDBMS内部に格納するかを定義するスキーマ
- 概念スキーマはなぜ必要なのか?
一見、内部スキーマと外部スキーマだけで充分かのうように思える。しかし、内部スキーマと外部スキーマだけでは、独立性が低くなり、システムが変更に弱くなる。そのため、インターフェース(概念スキーマ)を設けることで、変更に柔軟となる