3.3 論理設計の手順(1/4)

できるエンジニアになるためのちょい上DB術/第2章 概念設計

3.3 論理設計の手順(1/4)

性能要件の検討

  • 1.SQL文の種類
  • 2.ユーザ要求性能(レスポンスタイム)と優先度
  • 3.アクセス頻度(ピーク時の同時処理数)
  • 4.アクセス対象のエンティティ
  • 5.処理対象データ量
  • 6.SQLで指定する条件式(項目と演算子、値のとり得る範囲):その条件のもとでいかに性能を発揮するかを検討する。
    索引の作成、非正規化、テーブル構造の変更など

実際の1.SQL文を記述し、5.実際の処理対象データ量に近い環境で、3.ピーク時のトランザクション量のもとで実行し、2.ユーザの要求性能と比較します。

テスト環境では5.や3.が実際の環境と異なるため、正確な性能値を求められない可能性が高いでしょう。
特に、5.は大量データを対象にSELECT文を発行して分析処理を行うような処理の場合に影響が大きく、3.は1件の処理対象件数は少ないが、同時にアクセスするユーザ数が多いようなオンラインの業務処理の場合に影響が大きいので、注意する必要があります。

また、アクセス頻度の低いSQLをチューニングしても、ユーザの期待する効果と一致しない場合があるため、ユーザにとってのチューニングの優先度も確認しておく必要があります。
性能要件を満たすためには、SQL文がどのように実行され、その際の性能を決める要因を洗い出して対策を講じる必要があります。

対策はいくつかありますが、論理設計では、索引の設計と、非正規化を検討します。
性能要件を検討するためには、これだけではなく、物理設計の段階で以下のような検討を行います。

これらについては、「第4章 物理設計」で説明します。

アクセス権限の検討

業務の機能単位にSQL文が定義できたら、それを実行するユーザまたはユーザグループと、そのSQL文を実行するのに必要な権限情報を検討します。 そのために、表3-5のような表を作成します。

これは、機能ごとに、エンティティに対してユーザグループが各属性にどのようなアクセスをするかを検討した結果です。

これを元に、ユーザグループに適切なアクセス権限を付与します。 挿入、更新、削除に関する適切な権限を、限られたユーザグループに、限られた属性単位で付与する設定を設けておかないと、データベース内のデータの信頼性を維持することはできません。

また、情報の取得という意味で、参照の際にも適切な権限を設定する必要があります。 属性の単位でSELECT(参照)権限を設定するために、ビューというオブジェクトを作成します。 適切なエンティティから必要な属性を参照するために、ビューというオブジェクトを作成し、ユーザグループに、ビューヘの参照権限を付与します。

  • 1.各機能を実行するユーザを定義する
  • 2.機能ごとにユーザがどのようなアクセスを各エンティティ内の属性に行うかを分析する
  • ユーザに、属性単位で適切なアクセス権限を設定する
  • 必要なビューを定義し、ユーザに適切な権限を与える

ビューの作成

CREATE VIEW zaiko hikiate_v
AS SELECT s.倉庫コード,s.倉庫名,
         sh.商品コード,sh.商品名,sh.商品名カナ,
         z.有効在庫数
FROM 在庫データ z,商品マスタ sh,倉庫マスタ s
WHERE sh.商品コード=z.商品コード
AND z.倉庫コード=s.倉庫コード
AND z.在庫区分=0
AND z.良品区分=0;

ビューに対する処理担当者への権限の付与

GRANT SELECT ON zaiko hikiate_v to elgyo,cyotatu;
GRANT UPDATE(有効在庫数) ON zaiko_hikiate_v to eigyo, cyotatu;

< 前へ | 3.3 論理設計の手順(1/4) | 次へ >

解説トレーナー

Oracle / 上流工程 担当 中村 才千代

データベース設計、システム構築の上流~下流工程全般のインストラクターです。SE時代の経験を生かし「業務を知るエンジニアこそDB設計に関わるべき」「DB設計に携わるエンジニアは業務を知る人に知恵を貸してもらう」ことを伝えたいと思っています。

■認定・受賞

2000年 Oracle University「Best Instructor of the Year」受賞
2002年 Oracle University「Best Instructor of the Year」受賞

Page Top