ユーザ設計についてメモ

DBのユーザ設計のポイントは以下の2点である。

  • デフォルトのデータ格納先
  • 権限

以下、Oracleの場合で具体的に見ていく。
(※なお、Oracleの場合はユーザ≒スキーマなので、データ設計も絡む

デフォルトのデータ格納先

デフォルトユーザー表領域には、以下の2種類の設定方法がある。

  • データベース内共通:本番環境はこちらになる。DB作成時にDEFAULT TABLESPACE句。
  • ユーザごと:テスト環境などではこちらにすることが多い

表領域割り当て制限は、基本的にUNLIMITED(無制限)指定でOK。

権限

権限には、以下の2種類がある。

  • システム権限:システム全体に対する権限
  • オブジェクト権限:特定のオブジェクトに対する権限

基本的には、以下の手順でユーザ作成・権限付与する。

  1. ロールの作成(テーブル所有ユーザ、アプリケーションユーザ)
  2. ユーザの作成(テーブル所有ユーザ、更新ユーザ、参照ユーザ)
  3. テーブル作成(※テーブル所有ユーザにより)
  4. オブジェクト権限の付与(※テーブル所有ユーザによって、更新ユーザ、参照ユーザへ)
  5. シノニムの作成(※スキーマ名の隠蔽を目的として)
注意点
  • 事前定義済みロールである、DBA、CONNECT、RESOURCEの3つは、Oracleの旧リリースとの互換性のために用意されている。テスト時などの使用はOKだが、本番では別途ロール設計が必要である
  • 上記の手順では、頻繁にテーブルの追加・削除が行われる環境の場合に以下の作業が発生し、作業が煩雑になる点は押さえておく。
    • テーブルの削除と同時にオブジェクト権限も無効になるため、追加の毎にオブジェクト権限付与が必要になる
    • シノニムの作成は各ユーザに対して行う必要がある

補足:プロファイル

ユーザーのリソース制限を定義し、ユーザに適用することができる。
パスワード執行期限や同時接続数など。

補足:スキーマ

1ユーザに1スキーマ割り当てられる。

スキーマと表領域

スキーマも表領域も共にデータベースオブジェクトの集合といえるが、目的が異なる。
誤解を恐れずおおざっぱにイメージを書くと、以下の感じになるか。

  • スキーマ:データ構造とアクセス制御のための概念
  • 表領域:データファイルのグルーピングのための概念

なお、データベースのデータ構造は以下と考えることができる。

データベースA
 |- スキーマA
    |- データベースオブジェクトA

補足:DB環境定義書の記載項目例

ユーザ一覧

ユーザ名、デフォルト表領域、一時表領域、表領域割り当て制限、プロファイル、ロール、システム権限、備考

ロール一覧

ロール名、システム権限、備考

オブジェクト権限一覧

テーブル所有者、テーブル名、付与対象ユーザ、権限(SELECT、INSERT、UPDATE、DELETE)

参考文献

プロとしてのOracle物理設計入門 増補改訂版 (Oracle現場主義)

プロとしてのOracle物理設計入門 増補改訂版 (Oracle現場主義)