Closed5

📕達人に学ぶDB設計徹底指南書

daiki_21daiki_21

統計情報

統計情報はテーブルやインデックスなど「データ」についてのデータ、「メタデータ」である。

SQL文を受け取り、テーブルにアクセスするまでの流れ

  1. ユーザーから何らかの形でSQL文がDBMSへ発行
    受け取りはパーサ(parser 解析という意味)と呼ばれるモジュールで、役割はSQL文が適法な構文であるかのチェック。間違っているSQL文の場合は、エラーとしてユーザーに突き返す。DBMSの門番。
  2. パーサのチェック後、オプティマイザ(optimizer 最適化という意味)というモジュールへ送られる
    DBMSの頭脳とも言うべき重要な役割を担っている。SQLのアクセスパス、実行計画を決めるのがオプティマイザであるから。実行計画を立てる際に、必要になるのが統計情報であるため、③に続く。
  3. カタログマネージャというモジュールに、統計情報の照会をかける
    カタログマネージャは統計情報を管理するモジュールで例えるなら図書館の司書。
  4. カタログマネージャから統計情報を受け取る
    オプティマイザはたくさんの経路の中から最短と思われる経路を選択し、SQLを手続に変換する。
  5. 得られた手続きの手順が実行計画であり、それを実データであるテーブルへとアクセスを行う
daiki_21daiki_21

論理設計のアンチパターン

daiki_21daiki_21

戦略の失敗を戦術で取り返すことができない」という有名な言葉がありますが、システム開発においては、設計が戦略でプログラミングが戦術に相当する。

daiki_21daiki_21
  • 非スカラ値(第1正規形未満)
  • ダブルミーニング
    • 同一の列が二つの意味を持つ状態
  • 単一参照テーブル
    • 利点
      • マスターテーブル数が減るため、ER図やスキーマがシンプルになる
      • コード検索のSQLを共通化できるため、保守管理が容易
    • 欠点
      • 必要とされる列長はコード体系によって異なるため、大きめの可変長文字列型で宣言する必要がある
      • コード検索のSQL内でコードタイプやコード値を間違えてもエラーにならないため、バグに気づきにくい
      • ER図がシンプルといっても、ERモデルとして正確さを欠いており、ER図の可読性を下げる
      • コード列とデータ型が異なる可能性が高いため、外部キーによる参照整合性制約を付与することができない
  • テーブル分割
    • 水平分割
    • 垂直分割
  • 不適切なキー
  • ダブルマスタ
  • ゾンビマートと多段マート
daiki_21daiki_21

集約は、アンチパターンのテーブル分割ではなく、代替案に位置づけられる方法である。

列の絞り込み

小規模なテーブルを、データマート(Data Mart)、あるいは省略して単にマート(市場)と呼ぶ。
マートはその名のとおり、様々なデータがユーザー向けに売り出されているイメージ。
オリジナルのテーブルを意味的に破壊することなくパフォーマンスも向上させられるので、実際の開発においてもよく利用されている。
マートを利用する際の注意点はデータの同期。多くの場合、マートの更新は1日1回~数回程度の頻度で一括更新(バッチ更新)されている。

サマリテーブル

サマリテーブルは集約関数によってレコードを集約した状態で保持すること。
こちらもマート同様に注意点はデータの同期

このスクラップは7日前にクローズされました