【DB概論】データベース設計の目的・まとめできるエンジニアになる! ちょい上DB術・基礎編(6)

デキるエンジニアになるためには、DB技術の基礎は必須です。本連載では、豊富な実例と演習問題で、プロとして恥ずかしくない設計手順を解説します。DB設計のポイントとなる汎用的なケースを紹介しているので、通常の業務とは異なる場合でも応用できる「共通の考え方」を身に付けられます。

» 2011年08月12日 00時00分 公開
[中村才千代エディフィストラーニング]
※本連載は、中村才千代著『現場で使えるデータベース設計』の第1章 「データベース概論」を、一部修正して転載するものです。

                 第5回へ

 データベース設計に求められる要素は、以下の3点に集約されます。

  • 信頼性の高いデータベースの構築
  • 拡張性の高いデータベースの構築
  • ユーザー要求の性能を満たすデータベースの構築

 設計の目的をブレイクダウンします。

  • 信頼性の高いデータベースの構築
    1. 整合性が維持できる
    2. 障害から迅速に、確実に回復できる
  • 拡張性の高いデータベースの構築
    1. アプリケーションの追加・拡張が容易にできる
    2. データが一元管理されている
  • ユーザー要求の性能を満たすデータベースの構築
    1. 同時実行性が確保できる
    2. 効率のよいデータアクセスが可能

 それぞれがどのように実現されるのかをまとめます。 ()内は実現主体を示します。

信頼性の高いデータベースの構築

  1. 整合性が維持できる
    • 1データ1カ所の原則に従ってデータベースを設計し、データの一元管理を実現する
    • 更新時、排他行レベルロックを行い、同時実行制御を実現する(DBMS)
    • トランザクション単位でのSQL文の実行制御を実現する(アプリケーション設計)
  2. 障害から迅速に、確実に回復できる(DBMS)

拡張性の高いデータベースの構築

  1. アプリケーションの追加・拡張ができる
    • トップダウンで企業戦略を反映した設計を実現する(DB設計)
    • 複数の部門で共通に使えるデータベースを設計し、現状の業務だけでなく、将来利用する可能性のあるデータの蓄積を実現する(DB設計)
    • 拡張性を考慮し、属性ではなくエンティティとして設計する(DB設計)
  2. データが一元管理されている
    • 正規化の手順を踏んでデータベースの作成を実現する(DB設計)

ユーザー要求の性能を満たすデータベースの構築

  1. 同時実行性が確保できる
    • ロックが保持される期間はトランザクションなので、トランザクションが必要最小限の長さになる設計を実現する(アプリケーション設計)
    • 更新と読み取りが同時に実行された場合は、ロックをかけずに読み取り、一貫性の機能を利用する(DBMS)
  2. 効率のよいデータアクセスが可能
    • 索引の作成を実現する(DB設計)
    • 結合処理を意識したアプリケーションの設計を実現する(アプリケーション設計)

 これらの要件を満たすことができるように意識しつつ、データベースを設計します。

 データベース設計の手順は3つのフェイズに分けられ、それぞれのフェイズごとに目的が異なります。他の工程との連携も視野に入れながら、それぞれのフェイズの手順を概観していきます。

データベース設計の手順

 最初のフェイズである概念設計では、業務で扱う情報を整理し、概念ER図として表します。 経営トップの方針および新システムの企業内の位置付けなどを調査し、必要な情報を予測して拡張性を持たせた設計を行います。

 同時に、業務の観点から必要な情報を漏れなく管理できるように設計します。抽出した情報は、正規化し、あるべき姿で情報を整理し、概念ER図に表します。

 2番目のフェイズである論理設計では、データ構造の変更を最小限に抑えながら性能向上を図ります。 インプットとして、アプリケーション開発工程の基本設計書、ユーザー定義の性能要件、概念ER図、データベースの種類(階層型かネットワーク型かリレーショナル型か)を使用します。

 論理設計では、以下のような設計を行います。

  • 正規化をなるべく崩さないようにしつつ、SQLを分析し、索引を作成します。または正規化を崩すことによって最適化を行います。
  • 必要な属性をすべて洗い出すために、アプリケーションで必要なフラグ類を洗い出します。
  • エンティティを確定し、属性をすべて洗い出した後、それを論理ER図に表します。
  • セキュリティの観点から、業務とユーザーの対応付けを行い、必要な権限管理の設計を行います。ビューの定義も行います。
  • 論理ER図をデータベースのオブジェクトに変換するために必要な情報を定義します。アウトプットとして、論理ER図、表、索引、ビューの定義を完成させます。

 3番目のフェイズである物理設計では、ユーザー要件として性能要件や可用性を考慮したデータベースを設計します。そのために必要なハードウェア資源、ミドルウェアの選定、パラメータの設定を行います。

 インプットとして、表、索引、ビューの定義、ユーザー定義の性能要件、予測データ量、トランザクション量、方式設計で定義されたシステム要件を用意し、DBMSを選定します。

 データベース製品で利用する機能を選択し、パラメータ値の設定、オブジェクトの作成、メモリ要件の定義、ディスク配置の定義等、方式設計の物理的な詳細を設定します。

 アウトプットとして、方式のシステム構成の詳細設定(メモリ構成、ディスクレイアウト)、データベース機能の選択と各種オブジェクト、データベース運用時の各種パラメータを決定します。

                 第5回へ

筆者紹介

エディフィストラーニング

中村才千代

エディフィストラーニング インストラクター。データベース設計、システム構築の上流工程〜下流工程全般のコースを担当。「実践で使える」講義を行うことを心掛けている。

現在は、複数のSIerの人材育成を担当している。SE時代の経験を生かし、「業務を知っているエンジニアこそデータベース設計に関わるべきだ」ということ、「データベース設計に携わるエンジニアは、逆に業務を知っている人に知恵を貸してもらう必要がある」ということを伝えていきたい。



Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。