2023年 6月 1日 「2.12 1つの個体指定子の中身が...」 を読む >> 目次に もどる


 本節の記述は稚拙だった、と思う──というのは、本来、前節で説明した個体指定子の定義をうけて、個体指定子の役割を中核にすべきだったのですが、本節では いきなり 個体指定子の構成 (複合構成) を前半で述べているので。本節の後半を本節の前半に記述すべきだったと反省しています。

 個体指定子は、コッド 正規形の primary-key に相当するのですが、コッド 正規形の primary-key (の役割) は絶妙であるとともに争点となる微妙な 「項」 です──「論理」 (集合論と第 1階述語論理) を前提にした 「理論」 では primary-key は蛇足です、しかし データ 設計を目的とすれば絶妙な 「項」 です。というのは、primary-key は、データ 設計において、構文論と意味論を調整する安全弁として機能するからです。私の単なる想像 (憶測) ですが、コッド 氏は数学者として primary-key を導入することについて悩んだのではないかと私は思っています。

 直積集合 (tuple、複数の項の組) を基底にした セット・アット・ア・タイム 法では、構文論上、primary-key は無用です。しかし、構文論的に 一つずつの セット を演算する tuple では、意味論上 一つの個体を表す指示子として primary-key は有用です。特に、ひとつの tuple に対して、複合検索 (AND/OR を使った複合条件検索、Compound Boolean Selection と云う) を実行した場合に、AND 条件に合致した項が同一 tuple 上の項かどうか (同じ個体に属する アトリビュート かどうか) を判断するには なくてはならない項です。その意味において、「絶妙」 というふうに私は言ったのです。

 ただ、tuple の全体を表す項である primary-key が他の項と同列に扱われるというのは 意味論上 問題を起こす (タイプ 理論では、やや 論理違犯に近い)。この点を私は 「微妙」 (蛇足) な項と言ったしだいです。Primary-key のこの役割が システム・エンジニア や プログラマ のあいだで 旧来の レコード・アット・ア・タイム 法の index-key (master-key あるいは unique-key) のように勘違いされた点でしょうし、RDB プロダクト の開発会社が RDB の パフォーマンス 改善のために index-key として primary-key を使うには都合がよかった。勿論、セット・アット・ア・タイム 法では、レコード・アット・ア・タイム 法の index-key は 当然ながら無関係です (この点については、本書第10章で説明しています)。

 個体指定子の説明としては、コッド 正規形の primary-key との対比を述べてから、個体指定子の中身が複合構成になっている悪弊を述べるべきでしょうね。実際、当初の原稿 (草案) では、そういう記述にしていたのですが──すなわち、第10章に近い中身を本節で記述していたのですが──、前節から続く本節において、急に専門的な記述になるのは読者は戸惑う (本書を読み難くしてしまう) という意見が出版社のほうから出て、私はその意見に同意して primary-key の役割を第10章に送り込んだしだいです。そして、私は、この意見は正しいと思っていますが、本節において、個体指定子の役割を後半に記述して その中身 (複合構成) を前半に記述した (記述の順序が逆になった) のは私の不手際でした (苦笑)。 □

 




  << もどる HOME すすむ >>
  目次にもどる