はじめに
今回は、達人に学ぶDB設計徹底指南書を読んだので、その感想をまとめてみました。
良かったところ
- DB設計に関してすごい難しい印象があったけど、わかりやすく説明されているので、苦手意識がなくなった。
- 具体的なコードは、あまり出てこないが、その分図と言葉で上手く説明してあり、例えもわかりやすかった
学んだこと
データベース
-
データを整合的に保持して、いつでも簡単に利用できる状態にし、データの集まりをデータベースという
-
データベースを管理するためのシステムをDBMSと呼ぶ
-
データとは、ある形式(フォーマット)に添えられた事実のことである
リレーショナルデータベース
現在最も広く使用されているデータベース。
特徴は、データを人間が理解しやすい二次元素の形式で管理するため、直感的で簡単である。
システム開発の設計工程
-
要件定義
システムの機能やサービスの水準を決める -
設計
決められた要件を満たすために必要なシステムを作るための設計(デザイン)を行う -
開発(実装)
設計書に従ってシステムを実際に作る -
テスト
出来上がったシステムが、実用に耐える品質であるか試験する
-
DOA(データ中心アプローチ)
プログラムを作る前に、データの設計から始める方法。複数のプログラムを共有できるため、要件の仕様変更にも柔軟に対応できる。
近年では、こちらが主流。 -
POA(プロセス中心アプローチ)
DOAと反対で、プログラムから作り始める方法。複数のプロジェクト毎にデータを管理する必要がある。
論理設計と物理設計
データーベース設計は、論理設計(概念スキーマ)と物理設計(内部スキーマ)に分けられる。
論理設計は、現実世界に存在する数多くのデータから、リレーショナルデータベースにおいて、何を、どのようなフォーマットで保存するかを決めることです。
- 具体的な4つのタスク
- エンティティの抽出
- エンティティの定義
- 正規化
- ER図の作成
物理設計は、論理設計の結果を受けて、データを格納するための物理的な領域や格納方法を決める工程です。
- テーブル定義
- インデックス定義
- ハードウェアのサイジング
- ストレージの冗長構成決定
- ファイルの物理配置決定
正規化
正規化は、エンティティ(テーブル)について、システムの利用がスムーズに行えるように整理する作業です。論理設計において、最も理解を深めておくべき概念です
正規形
正規形とは、データベースで保持するデータの冗長性を排除し、一貫性と効率性を保持するためのデータ形式です。
第1正規形
非正規形から、1つのセルに1つの値が格納されている状態の事です
第2正規形
第1正規形から、部分関数従属を解消し、完全関数従属になっている状態のことです。
第3正規形
第2正規形から、推移的関数従属を解消し、非キー列はキー列に対してのみ従属するようにする
バックアップ
フルバックアップ
フルバックアップまたは完全バックアップは、フルという言葉とうり、ある時点でそのシステムで保持されているすべてのデータをバックアップする方式です。
差分バックアップ
差分バックアップとは、変更分だけをバックアップする方式です。例えば、毎週月曜日にフルバックアップするとして、月曜日からの変更分のみバックアップを取得します。このようにすることで、バックアップのデータ容量が減り、節約できます。
増分バックアップ
増分バックアップとは、その日の変更分だけバックアップする方式です。差分バックアップよりさらにデータ量が少なく済みます。コスト的に優れた方法です。
インデックス
インデックスはSQLのパフォーマンス改善のための非常によく使われる手段です。
アプリケーション透過的
インデックスを使うかどうかは、DBMSが自動的に判断します。なので、インデックスを使う場合、データベース側にインデックスを作成すればいいだけで、アプリケーションプログラムの変更が必要ありません。このように存在を意識しなくていいという性質を『透過性』と呼びます。
データ透過性
インデックスを作成することで、デーブルに格納されているデータの中身が影響を受ける事がありません。デーブル構造も変化することはありません。
大きな性能効果
インデックスの性能が、データ量に対してゆるくしか劣化しません。
多くの場合において、デメリットをメリットが大きく上回ります。
難しかったこと
- SQLで木構造を扱うの部分の入れ子構造の部分は、難しくて理解しにくかった。本当に実務で使うとなると大変そうだと思った。
- 初心者がいきなり読むのは難しいと思います。ある程度の基礎知識は必要。
参考文献