平成31年春期 午前問題27
関係データベース管理システム(RDBMS)の表へのアクセスにおいて,特定の利用者だけにアクセス権を与える方法として,適切なものはどれか。
答えは、簡単ですね。
でも、知らないことがあった!!
1、CONNECT文は
データベースへの接続を確立するSQL文です。
2、参照制約は、
表間の整合性を確保するために設定される制約です。
3、GRANT文は
1人または複数のユーザに表に関する特定の権限を付与するSQL文です。
4、CREATE ASSERTION文は
複数のテーブルに対して制約をかける「宣言」を定義するSQL文です。
・SQL92で標準化された。1つ以上、複数のテーブルに対して制約をかける「表明」を定義する。
実装しているDBMSが少ないため知名度は低いが、DB側で複雑な制限をかけれるため処理速度の改善に繋がるらしい。
設定した条件が偽の場合にエラーを発生させることができ、SELECT文を使った複雑な制約を定義することができる。
例:
CREATE ASSERTION 入力値チェック CHECK (NOT EXIST(SELECT * FROM 価格票,限界値 WHERE 価格表.商品コード = 限界値.商品コード AND 価格票.価格 <= 限界値.上限価格))
※表明名が「入力値チェック」、CHECK以降の文が条件である。上記例だと価格票テーブルと限界値テーブルを商品コードで結合して価格が上限価格以下であることを判定している。上限価格以上の価格が設定された場合はエラーを投げる。
・CREATE DOMAIN
SQL92で標準化された。ユーザ定義のデータ型を作成する。
実装しているDBMSが少ないため知名度は低いが、DB側で入力値チェックを行えるため処理速度の改善に繋がるらしい。
ASSERTIONと合わせてリファクタリングに使えそう。
CREATE DOMAINをコールしたユーザがそのドメインの管理を行うが、使用に関しては全ユーザが行える。(場合が多い模様。DBMS依存。)
例:
CREATE DOMAIN AGE AS CHECK (VALUE >= 18) AND (VALUE <= 99)
※18〜99までしか値を取らないユーザデータ型「AGE」を作成する。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
補足
DBMSにおいて,複数のトランザクション処理プログラムが同一データベースを同時に更新する場合,論理的な矛盾を生じさせないために用いる技法はどれか。
1、排他制御は、トランザクションの整合性を保つために、1つのタスクがデータ更新のトランザクションを実行している間は、その処理が終わるまで同じデータに対する他のトランザクション要求を待機させる仕組みです。
複数のトランザクションが同じデータを更新しようとしたときに、データを「ロック」することで同時更新による更新消失を防ぎます。
2、再編成
再編成は、データを適切に再配置することで、データベースのアクセス効率を回復させる処理です。
3、正規化
正規化は、関係データベースを構築するに当たり、データの冗長性の排除、整合性の確保、及び保守性の向上などを目的として行われる処理です。
4、整合性制約
整合性制約は、データベースの整合性を保つために表や列に設定される制約です。
参考:
https://www.ap-siken.com/kakomon/24_haru/q28.html
マイナーなCREATE文
https://spinoza-2.hatenadiary.org/entry/20090329/1238308362