応用情報技術者の午後問題に、よくDBのGRANT命令(権限付与)に関する問題がよく登場する。
しかし、小規模な組織だとシステム担当者にフル権限を持つユーザを与えてしまうことが多い(と思う)ので、(私が)あまりこの手の問題に詳しくないのでメモしておく。
DBのスキーマについて…多様な意味がある。
学術的にはDBのスキーマといった場合、3層スキーマ(外部スキーマ、概念スキーマ、内部スキーマ)のことを指すようだ。しかし実務的には、MySQL/MariaDBの場合はデータベース名のことを指す(PostgreSQLの場合はDB名とスキーマ名は別概念で(DB名の中にスキーマ名が複数含まれるが)通常は一緒のものと考えてしまって概ね差し支えることはないと思う。
3層スキーマ(外部、概念、内部)の区別をつけよ
3層スキーマには外部スキーマと概念スキーマと内部スキーマがある。とりあえず、それらの深い意味はおいておいて以下のような対応関係でとらえておく必要がある。
外部スキーマ…ユーザー視点
概念スキーマ…論理設計(開発者視点)
内部スキーマ…物理設計
※物理スキーマという方式があるとかないとかで名前を混同したりする(汗)ゆえに正確に覚えておく!必要がある。内部(スキーマ)は物理設計、概念(スキーマ)は論理設計と暗証しておくといい。もしくは、外部はお客さんの視点で、概念は論理、内部は物理…というような感じ。
GRANT(権限付与)の書き方
応用情報技術者では権限付与の問題がよく出るので、GRANT文の記述のしかたを覚えておくこと。
GRANT <命令> ON <スキーマ名.テーブル名> TO <ユーザ名>
例えば「人事部スキーマの管理職テーブルの参照権限を営業課長ユーザに与えて欲しい」と言われた場合は…
GRANT SELECT ON 人事部.管理職 TO 営業課長
…などと記述することになる。
なお、GRANTの逆はREVOKEである。
またテーブルがVIEW(導出表)である時も参照権限などを付与する必要がある。
コメント