SQLと三値論理

SQLの一つの特徴は昨日紹介したように宣言型言語であることですが、もう一つは、「真」「偽」のほかに「不明」を許す3値論理を使用していることです。これは、SQLの原理を提案したE.F.Coddがこだわったそうですが、不評です。
「不明」は、情報不足で真偽を決められないか、データそのものが一部欠落しているときに使う設定です。”null”(ヌる、日本語でもヌルといいます)という他の言語でもよく見る単語で表します。
「真」と「null」の論理和(or)をとると「真」ですが、「偽」と「null」の論理和は「null」になります。このように、論理演算を繰り返すと「null」が増殖します。また、足し算など数値演算の左辺に「null」が入っていると結果もnullになります。
また、「排中律」が使えなくなる問題もあります。「Aである」「Aでない」のほかに「不明」という結果が許されるので、背理法が使えません。
最近ではデータベースのテーブル(エクセルの表と思ってよい)の最初の設定時に「nullを許さない」という設定ができるようになっています。
「null」は、javaにもありますが、こちらは参照先がないときにnull pointer exceptionというエラーを吐きます。ネットスラングの「ぬるぽ」はここから来ているそうです(いまはあまり見ませんが、一時期流行りました)。
https://kotobank.jp/word/%E3%81%AC%E3%82%8B%E3%81%BD-188435
最近はnullが出ないようにするプログラム言語がいろいろ開発されています(javaの”上位互換”のkotlinなど。androidスマホのアプリを作るのに使われます)。
https://kotlinlang.org/docs/null-safety.html
SQLの3値論理については、下記が面白かったです。
https://mickindex.sakura.ne.jp/database/db_3vl.html
wikipediaの解説も哲学(?)として面白いです。
https://ja.wikipedia.org/wiki/3%E5%80%A4%E8%AB%96%E7%90%86

英語は関連の言葉を拾ってみましょう。https://en.wikipedia.org/wiki/Three-valued_logic も見ています。

不評です be unpopular, be unfavorably received, bring disrepute
排中律(はいちゅうりつ) law of excluded middle
論理和 logical sum, OR
論理積 logical product, logical multiply, AND
論理演算 logical operation
算術演算 arithmetic operation
背理法 reductio ad absurdum 英語ではラテン語をそのまま使います。リ「ダ」クティオウ アド アブ「サ」ーダム  ハリーポッターの呪文にありそうです。 英語に直すと、reduction to absurdity ばかげたことに還元する
参照 reference
真理値表 truth table
ブール代数 Boolean algebra
ウカシェビッチ論理 Lukasiewicz logic  3値論理の定式化です
3値論理 ternary logic, three-valued logic, trivalent logic
単項演算子(たんこうえんざんし) unary operators (not、階乗など)
階乗(かいじょう) factorial
ゲーデルの不完全性定理 Gödel’s incompleteness theorems 「せ」オレムズ  いくつかあるので複数ですね。 この証明は結果の深遠さに比べると難しくないので、一度解説(wikipedia日本語版が詳しい)を読んでみるといいと思います。

Leave a Comment

Comments

No comments yet. Why don’t you start the discussion?

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA