[pgsql-jp: 29922] Re: ORACLEでいう DUAL 表は?

Satoshi Nagayasu snaga @ snaga.org
2003年 5月 16日 (金) 15:20:19 JST


永安です。

Oracle知らないのに横からすみません。この話はときどき聞くので便乗です。

# 「仕様に沿っていれば正しい」というのは、正しさの「一面」であって、
# 意味的な正しさとは一致しない、しかし意味的な正しさが常に要求される
# わけでもない、というのが私のスタンスです。

池田 秀一 <hikeda @ miraclelinux.com> wrote:
> >   そういう表を取り入れるのがとても汚く、そう考えようとする事自体が間違いと思え
> > ます。それよりも FROM を不用なように独自拡張する方がよい方法です。
> 
>  『どっちもどっち』でしょうねぇ。どちらも「よい方法」とは
> 言いきれないでしょう。言いきれるのが疑問です。
> 
>  データベース製品ごとの方言で、どちらが良いとは一概に言え
> ませんよ。『慣れ』の問題がほとんどだと考えますね。

「慣れの問題」と言ってしまえば、それは間違いなくその通りだと思うのですが、
まぁそれは置いておくとして、聞く限りにおいて、

 - なぜ DUAL という名前なのか?
 - そもそも、なぜ必要なのか

がよく分かりません。

つまり、どういう必然性があってそうなっているのかが、理解しづらいんだと思
います。PostgreSQLでは存在していないわけですし、私自身も DUAL なるものが
存在している必然性がよく理解できてません。

# 「脈絡のないオブジェクト」という指摘は、それはそれで正しいと感じています(私は)。

 - 意味が先にあって、意味に文法を合わせるのか(FROM DUALが不要)
 - 文法が先にあって、文法に意味を合わせるのか(常にFROM句が必要)

の違いじゃないでしょうか。

「SQLの仕様に忠実だから正しい」というのは、そのレイヤーを見ればその通り
かもしれませんが、「そもそもSQLがなぜそういう仕様になっているのか」とい
うSQLの仕様自体が意味的に正しいかどうかとは別でしょう。

だからこそ、

> FROM句を常に必要とするOracleの方がANSI/ISO SQLに忠実

という指摘に対して、杉田さんの

> 言語的には、SQL 自体が出鱈目

という話になるんじゃないでしょうか。

「SQL仕様に沿っているから正しい」という主張と「SQL仕様自体が間違っている」
という議論が噛み合うわけがないと思うのですが(論理的に)。どのレイヤーに
フォーカスして「正しい」と言うのかによって、認識は変わってくると思います。

エンジニア的には、「別に使えりゃいいじゃん」ということなのかもしれません
し、確かにそういう結論でも構わないとは思いますが。

ちなみに「仕様にバグなんてものはありません」ということはありません。
論理的なバグが入り込む余地はいくらでもあります。

-- 
NAGAYASU Satoshi <snaga @ snaga.org>



pgsql-jp メーリングリストの案内