【入門編】 アクセス権限制御(PROCOPT) – 階層型DBMS

こんにちは!データベースの世界へようこそ。
今日は、少しレトロでありながら、現代のデータベースの基礎がすべて詰まった「階層型DBMS(データベース管理システム)」の世界を覗いてみましょう。

特に今回は、「誰が、どのデータに対して、どこまで触っていいのか」をガチガチにコントロールする、PROCOPT(プロコプト:処理オプション)という仕組みについて解説します。

「難しそう……」なんて身構えなくて大丈夫。身近な例えを使いながら、優しく、そして本質がしっかり分かるように紐解いていきますね。ここをクリアすれば、階層型DBMSの基本はバッチリマスターできますよ!

—

1. そもそも「階層型DBMS」ってどんな世界?

現代のデータベース(リレーショナルデータベースなど)が「表(エクセルのような表)」の集まりだとすれば、階層型DBMSは「家族の家系図」や「会社の組織図」のような、ピラミッド型のツリー構造をしています。

例えば、ある「学校」のデータを考えてみましょう。

  • 一番上の親:学校
  • その子供:クラス
  • その孫:生徒

階層型データベースでは、親から子、子から孫へと「一本道」のポインタ(矢印)でデータがつながっています。上の階層に行かないと、下の階層のデータにたどり着けないのが大きな特徴です。

—

2. 「PROCOPT(プロコプト)」ってなに?(日常の例え)

さて、この学校のデータを複数のプログラムやユーザーが触る時、こんな心配が出てきませんか?

> 「新入生のデータ(生徒セグメント)は、事務員さんなら書き加えて(挿入)いいけど、新米のアルバイトさんには『見るだけ(取得)』にしておいてほしいなぁ。というか、消されたら困るから削除権限なんて絶対にあげちゃダメだ!」

ここで登場するのが、PROCOPT(Processing Options)です。
一言で言うと、「セグメント(データの箱)ごとの、通行手形(アクセス権限)」のこと。

プログラムがデータベースにアクセスするための定義書(PCB:プログラム通信ブロック)の中で、「この人は、このデータに対して、どこまでやっていいよ」という許可証を細かく設定するんです。

—

3. PROCOPTの主要な4つの文字(呪文)

PROCOPTでは、主にアルファベット1文字のコードを使って権限を表現します。基本の4つを覚えてしまいましょう。

1. G(Get:取得)

  • データを「読む」権利です。中身を見るだけで、書き換えや消去はできません。

2. I(Insert:挿入)

  • 新しいデータを「新しく追加する」権利です。

3. R(Replace:置換)

  • すでにあるデータを「書き換える(更新する)」権利です。

4. D(Delete:削除)

  • データを「消去する」権利です。

これらを組み合わせることで、「見ることはできるけど、消すことはできない」「追加と更新だけOK」といった、きめ細やかなセキュリティが実現できます。

—

4. スキーマ定義(PCB)での実際の書き方を見てみよう

百聞は一見にしかず。実際にプログラムがデータベースと対話するための設定(PCB定義)のイメージを見てみましょう。ここでは例として、COBOL風の記述をイメージしてください。

  • ==========================================
  • プログラム用PCB定義の例
  • ==========================================

PCB TYPE=DB, DBDNAME=SCHOOLDB, PROCSEQ=0

  • ① 学校セグメントは「読む(G)」ことだけ許可

SENSEG NAME=SCHOOL, PARENT=0, PROCOPT=G

  • ② クラスセグメントは「読む(G)」と「更新(R)」を許可

SENSEG NAME=CLASS, PARENT=SCHOOL, PROCOPT=GR

  • ③ 生徒セグメントは「読む(G)」と「追加(I)」を許可

SENSEG NAME=STUDENT, PARENT=CLASS, PROCOPT=GI

💡 ここがエンジニアの腕の見どころ!

この設定を見ると、セグメント(データの階層)ごとに権限が違うことがわかりますよね。

  • 学校データは、誰も書き換えられないように `PROCOPT=G` でガチガチに保護されています。
  • クラスデータは、名称変更などができるように `PROCOPT=GR`(読む+更新) です。
  • 生徒データは、新学期の登録用に `PROCOPT=GI`(読む+追加) になっていますが、`D(削除)`がついていないため、うっかり生徒データを消してしまう事故を防ぐことができます。

このように、アプリケーションの目的に応じて「必要最小限の権限」だけを渡すのが、システムを安全に保つためのプロの技なのです。

—

5. まとめ

いかがでしたでしょうか?
階層型DBMSのPROCOPTは、一見すると難しそうな専門用語ですが、要するに「データの箱ごとに、閲覧や書き換えのパスポートを配る仕組み」です。

  • G = 見るだけ!
  • I = 増やすだけ!
  • R = 直すだけ!
  • D = 消すだけ!(取り扱い注意!)

この4つの基本さえ押さえておけば、どんなに複雑な階層データベースの設計書を見ても、怖気づくことはもうありません。

データベースの安全性を守るこの強力なアクセスコントロールを味方につけて、確かなスキルを持つエンジニアを目指していきましょう!あなたの学びを、心から応援しています。

コメント

タイトルとURLをコピーしました