ぱと隊長日誌

ブログ運用もエンジニアとしての生き方も模索中

OSS-DB silver問題集 [OSDBS-01]対応 補足

OSS-DB Silver [OSDBS-01] 受験対策としてインプレスジャパンの問題集を利用されている方は多いかと思います。

問題毎に丁寧な解説が付いていますが、解説だけで理解することが難しい箇所もあります。
本エントリではこのギャップを埋めるべく、解説若しくは関連記事の紹介を行います。

なお、私は著者・編者・発行所のいずれとも無関係であることをご了承ください。

第1章 問13

テーブルスペースについて別エントリにまとめましたのでご参照ください。
PostgreSQLのデータベースクラスタ及びテーブルスペースの関係 - ぱと隊長日誌

第4章 問15

チェック制約におけるNULLの扱いについては別エントリにまとめましたので、ご参照ください。
PostgreSQLの検査制約におけるNULLの扱い - ぱと隊長日誌

第4章 問26

継承についてはPostgreSQLドキュメントを参照ください。
5.9. 継承
上記ドキュメントには親テーブルだけを対象としたいときはONLYキーワードを利用すること、一意制約が子テーブルに継承されないために起こる制約についての記載などもあります。

第4章 問36

EXISTSを使用したサブクエリについて別エントリにまとめましたのでご参照ください。
SQLのWHERE句で用いられる相関サブクエリを理解する - ぱと隊長日誌

第10章 問1

正規化について以下の記事が分かりやすいです。ボイス・コッド正規形以降についても解説されています。
素早く正規形を見抜く実践テクニック (1/4):データベースエンジニアへの道(3) - @IT

第10章 問4

解説にマテリアライズドビューはPostgreSQL 9.0でまだ実装されていないとなっていますが、9.3で実装されました。
OSS-DB最前線~2013秋~レポート PostgreSQL 9.3の新機能を解説 - クラウド Watch

第10章 問23

NATURAL JOINは2つのテーブルで同じ名前のカラム名を使って結合を行います。

最後に、NATURALはUSINGの略記形式で、2つの入力テーブルの両方に含まれているすべての列名で構成されるUSINGリストを形成します。 USINGと同様、これらの列は出力テーブルに一度だけ現れます。 共通する列が存在しない場合、NATURALはCROSS JOINと同様に動作します。

7.2. テーブル式

第10章 問25

PostgreSQLDDLトランザクションの一部となります。Oracleとは異なるので要注意です。

PostgreSQL では、CREATE TABLE や DROP TABLE などの DDLトランザクションの一部となるため、トランザクションの途中で DROP TABLE を実行した場合でも、最後に ROLLBACK すれば、DROP したテーブルが元に戻ります。
例えば Oracle では、DDL を実行すると、その時点で「自動 COMMIT」が発生し、それ以前の更新が自動的にデータベースに反映されます。DDLトランザクションの一部にはならないので、ROLLBACK できません。

http://www.oss-db.jp/measures/dojo_01.shtml

第10章 問30

解説で紹介されたtrim関数について補足します。

関数:
trim([leading | trailing | both] [characters] from string)
説明:
characters(デフォルトでは空白)で指定された文字のみを含む最も長い文字列を、stringの先頭、末尾、あるいはその両方から削除します。

9.4. 文字列関数と演算子

"characters"と複数形である通り、削除文字は複数指定できます。また、削除文字の順序は問いません。あくまで文字単位で評価されます。以下に実行例を挙げます。

select trim(both 'abc' from 'abccbaPOSTabccbaGRESabccba');
btrim
POSTabccbaGRES

第10章 問34

CREATE FUNCTIONのパラメータ"STRICT"についての説明を引用します。

RETURNS NULL ON NULL INPUTもしくはSTRICTを指定すると、関数の引数に1つでもNULLがある場合、常にNULLを返します。 このパラメータが指定されると、NULL引数がある場合、関数は実行されません。 代わりに、NULLという結果が自動的に与えられます。

CREATE FUNCTION

更新情報

2017/03/19

  • 第4章 問15の解説を追加しました。