今回は、Silverの「開発/SQL - ビュー」からの出題です。
ビューを作成するには、そのビューを構成するテーブルあるいはテーブルの列に対するCREATE VIEW権限が必要である。
既存のテーブルと同じ名前のビューを作ることはできない。
PostgreSQLの以前のバージョンでは、ビューの更新にはトリガー(trigger)あるいはルール(rule)を定義する必要があったが、バージョン9.3以降では、(ビューの定義によっては)トリガーやルールが定義されていないくても更新が可能である。
ビューからの検索を高速にするために、ビューに対してインデックスを作成することができる。
※この例題は実際のOSS-DB技術者認定試験とは異なります。
例題公開日:2014年10月30日
ビューからSELECTするときは、ビューに対するSELECT権限だけがあれば良く、ビューを構成するテーブルに対するSELECT権限は必要ありません。
ビューの所有者はビューを構成するテーブルに対するSELECT権限を持っている必要がありますが、CREATE VIEWという権限はありません。
ビューを既存のテーブルと同じ名前にすることはできません。逆に、テーブルを新しく作るときも、既存のビューと同じ名前にすることはできません。同じ名前にできたとして、
select * from name_of_table_and_view
としたときに、テーブルとビューのどちらからSELECTすれば良いのかわからないので困りますよね。
PostgreSQLの以前のバージョンではビューは更新できず、ルールあるいはトリガーを作る必要がありましたが、バージョン9.3で更新可能ビューが導入され、ビューの定義によってはトリガーやルールを作らなくても更新可能になりました。もちろん、ルールやトリガーも引き続き、利用可能です。
ビューにインデックスを作ることはできません。ビューからのSELECTは内部的には常にそれを構成するテーブルからのSELECTに書き換えられるため、高速化のためにはテーブルに適切なインデックスを作る必要があります。
従って、正解はCとDです。
今回の解説について、理解できないポイントがあればどんどん質問をお寄せ下さい。
採用になった方にはLPI-Japanオリジナルの記念品を贈呈します。
※試験問題に関わるお問い合わせにつきましては、LPI-Japan事務局ではお応えできませんのでご了解ください。
© EDUCO All Rights Reserved.