simon’s diary

思うがままに書き綴る。。。

DBの論理設計に関する備忘録

こちらの記事の続きです。

simon.hatenadiary.com

論理設計

データベースの構造(テーブル、ビュー)と索引を決定する。成果物は非正規化などを行った概念ER図を修正した論理ER図。

手順1:データ量を検討する

エンティティのデータ量から、性能に問題がありそうなエンティティを選別する。概念設計の業務分析時に作成したデータ量に関する資料を利用する。

初期データ量、平均データ量、最大データ量、増加率、保存期間の5つの指標からなる資料

手順2:業務に対するユーザー要件を考慮する

データベース設計と同時に行われているプロセス設計の資料からユーザー要件を把握する。ユーザー要件を把握し、手順1で選別したエンティティにシビアなレスポンスが要求されている要件がないか調べる。また、索引を定義するだけで求められる性能を満たせるか検討する必要がある。

業務処理内容、操作パターン、要求性能、処理形態、処理タイミング、実行頻度、処理データ量、実行資格などからなる資料

手順3:プロセス要件を考慮する

エンティティの状態の変化を保持するカラムを追加する。この工程によって、プログラムで制御もできるが、プログラムで制御するとレスポンスが悪くなることが多いので、この段階でデータベースに値をもつことを検討する。

手順4:最適化を図る(索引、導出項目、非正規化の検討)

  1. 索引の定義
  2. 導出項目の追加
  3. 非正規化

手順5:ビューを定義する(任意)

ビュー(仮想表)とはテーブルに対する問い合わせを保存したもので物理的にデータを格納、管理していない。ビューにDML操作するときはトリガーを作成しないといけないRDBMSもある。また、DML操作時の問い合わせで使えない機能がいくつかある。

ビューは問い合わせを簡素化したり、データのアクセスに権限をつけてセキュリティーを高めるために用いられる。問い合わせを簡素化して、性能が落ちる場合もあるので注意が必要。

手順6:テーブル/ビューに対するアクセス権限を検討する

システム権限とアクセス権限がある。システム権限はデータベースに接続してよいやデータベースにテーブルを作ってよいなどを表す。オブジェクト権限はテーブルやビューなどに対する権限を指定する。

手順7:ER図からRDBMSへ変換する

SQL文を作成する。

 索引の定義方法

索引を定義することによって、パフォーマンスが上がる。索引には定義した列の名前とその値が格納されている位置情報(データファイル、ブロック番号、行番号)が記録されている。

あー索引の付け方とか、導出項目、重複項目の出し方、非正規化のやり方まとめたけど、全部消えたから記事リリース笑