新規登録がまだの方

下の[新規登録]ボタンを押してコミュニティに登録してください。

登録がお済みの方はこちら

コミュ二ティポイントのご案内

詳しく見る

シムダンス「四次元能」

シムダンス「四次元能」>掲示板

公開 メンバー数:59人

チャットに入る

ここは自己生成の門ーーー宇宙の原理「動的作用反作用」を使って精神革命の臨床実験中!

サークル内の発言を検索する

サークルで活動するには参加が必要です。
「サークルに参加する」ボタンをクリックしてください。
※参加を制限しているサークルもあります。

閉じる

  • from: 生成門さん

    2012年04月14日 17時01分17秒

    icon

    SQL言語における述語(関数)

    SQL言語における述語(関数)
    <四次元能版:新世紀エヴァンゲリオン:モナドの作法>

    SQLの述語論理は3値論理(真・偽・不明)でいきます。

    SQLの述語論理とは命題の真偽を入力して、1(真)か0(偽)を出力する関数:□であると言い換えることにします。関数:□とは自動販売機のようなもので、お金を入れたらビールが出てくるようなブラックボックスです。ブラックボックスとは外から中が見えないものですが、中から見ると外は見えないでしょう。
    従って、これはまさにモナドです。

    関数もモナドもライプニッツによって導入された概念ですから、関数=モナド=述語=ブラックボックスというのは無理のない考えだと思いますが、オートポエイーシスとか、インドラとの関係などとも吟味しなければなりません。

    自動販売機の場合、入力されるのはお金であり、述語論理でいうと命題に相当します。命題が正しいければ、つまり、150円なら缶ビールが出てきますが、不足しているとエラー(偽)ですから、ビールは出て来ません。

    命題(お金を入れる)→□→真又は偽
    150円→□→真(ビールが出てくる)
    150円以下→□→偽(ビールが出てこない)


    関数=自動販売機:□では、適切な表現とは言えないので、数学の概念(関数)で説明します。

    関数とは、二つの変数 x と y があり、入力 x に対して、出力 y の値を決定するとき、変数 y をx の関数と言います。

    これは、x→□→yと表現できますから、
    命題→□→真又は偽と同じになります。

    関数:□はfunction ですので、頭文字f をとって、x の関数 y を f(x) と書いて、x = a を代入したときに決まる関数の値を f(a) と表します。

    関数というと難しいですが、エクセルと使ったことがある人なら、日付や平均を計算したり、総和を取ったりするときに関数を使ったことがあるでしょう。

    述語論理の関数も同じで、f(x)の変数に
    相当するものを引数と呼び、引数に値に
    代入することはその関数を呼び出し(あ
    るいは述語)を具体化して、真か偽に
    なる命題とよばれる式を生み出すこと
    になるのです。

    これで述語が関数であることの意味が理解できたと思うのですが、どのような関数があるのでしょうか?

    エクセルでは計算が主なのでday関数、sum関数という「計算する述語」が殆どですが、SQL言語は「問い合わせる」ことが目的なので、「問い合わせる述語」が多く登場します。

    代表的な述語をリストアップしてみましょう。

    比較述語(=, <>, > <)
    IN述語
    EXISTS述語
    限定述語(ALL述語, ANY述語)
    LIKE述語
    BETWEEN述語
    IS NULL述語

    これらは皆、述語と呼ばれるわけですがどうも、「計算する述語」とは違ったイメージですね。

    どんな内容の述語なのでしょうか?

    確かに、「問い合わせる」、「計算する」と言った述語は、「主語/述語」の動詞ですから、分かりやすかったのですが、このリストをみるとEXISTSとかALLとかですので、日常言語とは違うようです。

    結論から言いますと、SQL における述語とは述語論理における述語のことであり、それは、すなわち関数のことです。
    関数とはfunctionつまり、機能であり、動詞ですから、day関数、sum関数と本質的には変わりがないのです。ただ、この名前からイメージが湧かないだけなのです。

    そこで、もっと抽象化して言うと、関数は写像であり、マップする機能です。つまり、二つの集合(あつまり)があるとき、1対1で結びつけることです。

    それでもイメージが湧かないのは何かがありそうです。実は、殆ど使わないと思うのですが、エクセルにはand,or,notという論理関数がありますが、これと同じカテゴリに属するものが「問い合わせる述語」の論理関数なのです。

    これらの述語は、関数は関数でも、入力に対し、命題の真理値(真、偽、不明)を出力する特殊な関数、つまり、論理関数だということです。

    先にリストアップした述語をよく見てください。どの述語も、戻り値は真、偽、不明の3種類以外にありえないということに気付くはずです。IS NULL だけは真と偽 のみを戻します。

    ところが、count関数の戻り値は、0以上の整数なのです。つまり、count関数は普通の関数なのですが、述語論理の関数は、戻り値に真理値を出力するのです。ここが論理関数と普通の関数との違いです。

    SQL言語における述語とは関数であり、真理値をとることを再度確認しておきます。

    つまり、それは、ある適当な引数が与えられれば、真か偽を返す関数だということです。

    例えば>は比較する述語ですが、>(x,y)という式で表現します。普通の書き方をすればx>y です。もしxの値がyの値より大きければ真を、そうでなければ偽を返すという機能をもっているのが>という記号で表現された比較という述語の関数なのです。
    続く

    • サークルで活動するには参加が必要です。
      「サークルに参加する」ボタンをクリックしてください。
      ※参加を制限しているサークルもあります。

      閉じる

    • 0
    • サークルで活動するには参加が必要です。
      「サークルに参加する」ボタンをクリックしてください。
      ※参加を制限しているサークルもあります。

      閉じる

    • 0

    icon拍手者リスト

コメント: 全0件