1
0

達人に学ぶDB設計徹底指南書を読んで

Posted at

はじめに

今回は、達人に学ぶDB設計徹底指南書を読んだので、その感想をまとめてみました。

良かったところ

  • DB設計に関してすごい難しい印象があったけど、わかりやすく説明されているので、苦手意識がなくなった。
  • 具体的なコードは、あまり出てこないが、その分図と言葉で上手く説明してあり、例えもわかりやすかった

学んだこと

データベース

  • データを整合的に保持して、いつでも簡単に利用できる状態にし、データの集まりをデータベースという

  • データベースを管理するためのシステムをDBMSと呼ぶ

  • データとは、ある形式(フォーマット)に添えられた事実のことである

リレーショナルデータベース

現在最も広く使用されているデータベース。
特徴は、データを人間が理解しやすい二次元素の形式で管理するため、直感的で簡単である。

システム開発の設計工程

  1. 要件定義
      システムの機能やサービスの水準を決める

  2. 設計
    決められた要件を満たすために必要なシステムを作るための設計(デザイン)を行う

  3. 開発(実装)
    設計書に従ってシステムを実際に作る

  4. テスト
    出来上がったシステムが、実用に耐える品質であるか試験する

  • DOA(データ中心アプローチ)
    プログラムを作る前に、データの設計から始める方法。複数のプログラムを共有できるため、要件の仕様変更にも柔軟に対応できる。
    近年では、こちらが主流。

  • POA(プロセス中心アプローチ)
    DOAと反対で、プログラムから作り始める方法。複数のプロジェクト毎にデータを管理する必要がある。

 論理設計と物理設計

データーベース設計は、論理設計(概念スキーマ)と物理設計(内部スキーマ)に分けられる。

論理設計は、現実世界に存在する数多くのデータから、リレーショナルデータベースにおいて、何を、どのようなフォーマットで保存するかを決めることです。

  • 具体的な4つのタスク
  1. エンティティの抽出
  2. エンティティの定義
  3. 正規化
  4. ER図の作成

物理設計は、論理設計の結果を受けて、データを格納するための物理的な領域や格納方法を決める工程です。

  1. テーブル定義
  2. インデックス定義
  3. ハードウェアのサイジング
  4. ストレージの冗長構成決定
  5. ファイルの物理配置決定

正規化

正規化は、エンティティ(テーブル)について、システムの利用がスムーズに行えるように整理する作業です。論理設計において、最も理解を深めておくべき概念です

正規形

正規形とは、データベースで保持するデータの冗長性を排除し、一貫性と効率性を保持するためのデータ形式です。

第1正規形
非正規形から、1つのセルに1つの値が格納されている状態の事です

第2正規形
第1正規形から、部分関数従属を解消し、完全関数従属になっている状態のことです。

第3正規形
第2正規形から、推移的関数従属を解消し、非キー列はキー列に対してのみ従属するようにする

バックアップ

フルバックアップ
フルバックアップまたは完全バックアップは、フルという言葉とうり、ある時点でそのシステムで保持されているすべてのデータをバックアップする方式です。

差分バックアップ
差分バックアップとは、変更分だけをバックアップする方式です。例えば、毎週月曜日にフルバックアップするとして、月曜日からの変更分のみバックアップを取得します。このようにすることで、バックアップのデータ容量が減り、節約できます。

増分バックアップ
増分バックアップとは、その日の変更分だけバックアップする方式です。差分バックアップよりさらにデータ量が少なく済みます。コスト的に優れた方法です。

インデックス

インデックスはSQLのパフォーマンス改善のための非常によく使われる手段です。

アプリケーション透過的
インデックスを使うかどうかは、DBMSが自動的に判断します。なので、インデックスを使う場合、データベース側にインデックスを作成すればいいだけで、アプリケーションプログラムの変更が必要ありません。このように存在を意識しなくていいという性質を『透過性』と呼びます。

データ透過性
インデックスを作成することで、デーブルに格納されているデータの中身が影響を受ける事がありません。デーブル構造も変化することはありません。

大きな性能効果
インデックスの性能が、データ量に対してゆるくしか劣化しません。
多くの場合において、デメリットをメリットが大きく上回ります。

難しかったこと

  • SQLで木構造を扱うの部分の入れ子構造の部分は、難しくて理解しにくかった。本当に実務で使うとなると大変そうだと思った。
  • 初心者がいきなり読むのは難しいと思います。ある程度の基礎知識は必要。

参考文献

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0