SQLアタマアカデミー
第6回 SQLで木構造を扱う~入れ子区間モデル (2)稠密性について
稠密性(ちょうみつせい)について
前回から見えるように,整数から有理数へ範囲を広げることの利点は非常に大きいのですが,その理由は,有理数が整数にはない稠密性(ちょうみつせい:density)という性質を持っていることにあります。あまり日常で使う言葉ではありませんが,直感的に言えば物がぎっしり詰まっているということです。もう少し数学的に厳密に書くと,
x<yを満たす任意の数x,yについて,x<m<yとなる数mが存在する
となります。平たく言えば,どんな2つの数の間(区間)にも,まだまだ無限に数がある,ということです。
ここでキーとなるのは「任意の」という言葉です。特定のx, yではなく,大小関係を満たすあらゆる数のペアについて成立することがキモです。たとえば,1と2の間には,0.5という数が存在します。今度は1と0.5の間で見ても,0.25というさらに中間の数が存在します。後は同じ手順で,1と0.25の間には0.125,1と0.125の間には0.0625…と無限に続けられます(図7)。
すなわち稠密性とは,夢のようなリソース無限の原則なのです。私たちは,すぐに枯渇する整数の井戸とは違う,汲めども尽きぬ魔法の泉を手に入れてしまったのです(注3)。
なおこれは余談ですが,上記の話からゼノンのパラドックスを想起した人もいるでしょう。「アキレスは絶対に亀に追いつけない」とか「飛ぶ矢は静止している」という,あれです。あの逆説の鍵もまた,「どれほど微小な区間にも無限の点が含まれている」という空間の稠密性を前提していることにありました。神速のアキレスといえども,無限の点を走破することはできない。よって,アキレスは亀に追いつけない,というわけです。
しかし,アキレスにとっては致命傷になったこの特性も,DBエンジニアにとっては天の恵みです。ありがたく利用させていただきましょう。
- 注3)
- もちろん,無限なのはあくまで理論上の話で,実装上はシステムの有効桁数に制限されます。残念ながら,現実世界のリソースはつねに有限です。したがってノード追加を繰り返すと,いずれ整数のときと同じ資源の枯渇は起きます(そこまで巨大な木を現実にシステムで扱うことがあれば,ですが)。
COLUMN 整数から有理数への一般化の歴史
ここでちょっと歴史的な話をすると,この整数から有理数への一般化は,リレーショナルデータベースがよって立つ集合論のたどった道と似ています。
集合論の創始者カントールは,有名な対角線論法によって,さまざまな無限集合の大きさを比較する方法を示しました。そのとき彼は,最初に整数の集合からはじめ,その後に有理数や実数の集合へ拡張するという方法をとったのです。
入れ子区間モデルの源流の一つは,このカントールの仕事にあります(もう一つの源流は,後でお話しましょう)。
SQLアタマアカデミー
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (5)集合指向と手続き型
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (4)OLAP関数と集約関数を組み合わせる
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (3)OLAP専用関数
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (2)OLAP関数の基本構文
- 最終回 OLAP関数で強力な統計処理を実現!―手続き型から理解するSQL (1)OLAP関数とは何か
- 第10回 結合大全 (5)非等値結合
- 第10回 結合大全 (4)自己結合
- 第10回 結合大全 (3)外部結合
- 第10回 結合大全 (2)内部結合
- 第10回 結合大全 (1)クロス結合


